plane1.cgi blir spam??

  • Författare
  • Meddelande

Boris

html-kodare

  • Inlägg: 12
  • Blev medlem: 27 aug 2014, 13:07

plane1.cgi blir spam??

Inlägg07 sep 2014, 13:06

När jag har laddat upp plane1.cgi till
http://www.student.bth.se/~bosm14/dbweb ... plane1.cgi
visas sidan så här:

<!--: spam
Content-Type: text/html

<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
</font> </font> </font> </script> </object> </blockquote> </pre>
</table> </table> </table> </table> </table> </font> </font> </font>

När jag kör den på min dator som ./plane1.cgi visas den korrekt.
Tacksam för tips.
Boris

Boris

html-kodare

  • Inlägg: 12
  • Blev medlem: 27 aug 2014, 13:07

Re: plane1.cgi blir spam??

Inlägg07 sep 2014, 18:43

Nu har jag ändrat första raden i plane1.cgi
från
#!/usr/bin/env python3
till
#!/usr/bin/env python

och se då fungerar allt som det ska!
Boris.
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10914
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: plane1.cgi blir spam??

Inlägg08 sep 2014, 10:47

Ditt problem med python3 är ett encoding problem. Som dock fungerar i python (2), så därför funkar din "fix".

Det är lite svårare att få ordning på UTF-8 i Python3 men exempelprogrammen är uppdaterade för att visa hur man gör.

Kika på strukturen i me-mos.cgi till exempel.
https://github.com/mosbth/python/blob/m ... mos-me.cgi

Där ser du strukturen som fungerar för att skriva ut med UTF-8 i python3.

Det blir en mer korrekt lösning.
...
..:
.... /mos
Användarvisningsbild

Noah

html-kodare

  • Inlägg: 17
  • Blev medlem: 21 aug 2014, 00:33
  • Ort: Sydostasien

Re: plane1.cgi blir spam??

Inlägg13 sep 2014, 14:01

mos skrev:Ditt problem med python3 är ett encoding problem. Som dock fungerar i python (2), så därför funkar din "fix".

Det är lite svårare att få ordning på UTF-8 i Python3 men exempelprogrammen är uppdaterade för att visa hur man gör.

Kika på strukturen i me-mos.cgi till exempel.
https://github.com/mosbth/python/blob/m ... mos-me.cgi

Där ser du strukturen som fungerar för att skriva ut med UTF-8 i python3.

Det blir en mer korrekt lösning.


Jag har exakt samma problem som TS. Det fungerar inte för mig när jag ändrar om till hur du har på ditt exempel, ändrar jag "python3" till "python" så visas det korrekt, men jag skulle gärna att det fungerade som det ska i python3 som cgi.
“The only time you look in your neighbor's bowl is to make sure that they have enough. You don't look in your neighbor's bowl to see if you have as much as them.” ― C.K. Louis
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10914
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: plane1.cgi blir spam??

Inlägg13 sep 2014, 19:24

Noah skrev:Jag har exakt samma problem som TS. Det fungerar inte för mig när jag ändrar om till hur du har på ditt exempel, ändrar jag "python3" till "python" så visas det korrekt, men jag skulle gärna att det fungerade som det ska i python3 som cgi.


Länka till ditt cgi-skript så att vi kan se vad problemet är?
...
..:
.... /mos
Användarvisningsbild

Noah

html-kodare

  • Inlägg: 17
  • Blev medlem: 21 aug 2014, 00:33
  • Ort: Sydostasien

Re: plane1.cgi blir spam??

Inlägg13 sep 2014, 23:55

mos skrev:
Noah skrev:Jag har exakt samma problem som TS. Det fungerar inte för mig när jag ändrar om till hur du har på ditt exempel, ändrar jag "python3" till "python" så visas det korrekt, men jag skulle gärna att det fungerade som det ska i python3 som cgi.


Länka till ditt cgi-skript så att vi kan se vad problemet är?



http://pastebin.com/8SzcRNnp
“The only time you look in your neighbor's bowl is to make sure that they have enough. You don't look in your neighbor's bowl to see if you have as much as them.” ― C.K. Louis
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10914
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: plane1.cgi blir spam??

Inlägg14 sep 2014, 00:04

Vilken är webb-länken till cgi-skriptet när det ligger på studentservern?

Så att man kan klicka på länken och se vad som händer?
...
..:
.... /mos
Användarvisningsbild

Noah

html-kodare

  • Inlägg: 17
  • Blev medlem: 21 aug 2014, 00:33
  • Ort: Sydostasien

Re: plane1.cgi blir spam??

Inlägg14 sep 2014, 00:08

mos skrev:Vilken är webb-länken till cgi-skriptet när det ligger på studentservern?

Så att man kan klicka på länken och se vad som händer?


http://www.student.bth.se/~noda14/dbweb ... plane1.cgi
“The only time you look in your neighbor's bowl is to make sure that they have enough. You don't look in your neighbor's bowl to see if you have as much as them.” ― C.K. Louis
Användarvisningsbild

Noah

html-kodare

  • Inlägg: 17
  • Blev medlem: 21 aug 2014, 00:33
  • Ort: Sydostasien

Re: plane1.cgi blir spam??

Inlägg15 sep 2014, 03:00

Jag har nu skrivit om (förenklat) koden för plane1.cgi
http://pastebin.com/CFxK9KtB

Men... Problemet kvarstår och jag skulle gärna veta hur detta kan lösas
Nedan följer länk till plane1.cgi på min studentsida, där man kan se vad som händer.
http://www.student.bth.se/~noda14/dbweb ... plane1.cgi
“The only time you look in your neighbor's bowl is to make sure that they have enough. You don't look in your neighbor's bowl to see if you have as much as them.” ― C.K. Louis
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10914
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: plane1.cgi blir spam??

Inlägg15 sep 2014, 11:47

Du använder funktionen print() för att skriva ut innehållet. Det är därför det blir fel när du använder tecken som är UTF-8 tecken (gradtecknet).

Kika på mitt exempel så ser du att jag lägger allt innehåll i en variabel som jag sedan skriver ut i slutet på sidan.

https://github.com/mosbth/python/blob/m ... s-text.cgi

Man behöver skriva ut på det sättet (eller liknande) för att få UTF-8 att fungera i python 3.
...
..:
.... /mos
Användarvisningsbild

Noah

html-kodare

  • Inlägg: 17
  • Blev medlem: 21 aug 2014, 00:33
  • Ort: Sydostasien

Re: plane1.cgi blir spam??

Inlägg15 sep 2014, 17:25

mos skrev:Du använder funktionen print() för att skriva ut innehållet. Det är därför det blir fel när du använder tecken som är UTF-8 tecken (gradtecknet).

Kika på mitt exempel så ser du att jag lägger allt innehåll i en variabel som jag sedan skriver ut i slutet på sidan.

https://github.com/mosbth/python/blob/m ... s-text.cgi

Man behöver skriva ut på det sättet (eller liknande) för att få UTF-8 att fungera i python 3.


Tänka sig att det kunde vara något så enkelt. Tack för svar.
“The only time you look in your neighbor's bowl is to make sure that they have enough. You don't look in your neighbor's bowl to see if you have as much as them.” ― C.K. Louis

quaglamorf

php-programmerare

  • Inlägg: 49
  • Blev medlem: 07 sep 2014, 19:21

Re: plane1.cgi blir spam??

Inlägg21 sep 2014, 12:03

Har mekat med det här för länge nu och jag vet inte vad det är för fel.
Jag har inte några specialtecken med vad jag vet men jag får ändå spam problemet.
Här är länken till min sida.. http://www.student.bth.se/~stkj14/dbweb ... plane1.cgi

Här är filen.
https://dl.dropboxusercontent.com/u/53028645/plane1.cgi

Hilfe!

/stefan
Användarvisningsbild

Sylvanas

dbwebb

  • Inlägg: 1133
  • Blev medlem: 16 nov 2011, 17:03
  • Ort: Karlskrona

Re: plane1.cgi blir spam??

Inlägg21 sep 2014, 14:57

Du använder print() genom programmet för att visa informationen på sidan. Detta leder till de extra utskrifter som du ser när sidan visas.
Det du behöver göra är att först se till att din repo är uppdaterat:
Kod: Markera allt
bin/dbwebb update

Och sedan jämföra ditt cgi-script med mos exempel. Då kommer du se att han sparar undan texten som han vill skriva ut i en variabeln, content, och skriver först ut den på sidan i slutet på filen ut innehållet (utdrag från example/cgi/hello-web.cgi).
Kod: Markera allt
# Here comes the content of the webpage
content = """
Hello The World of Web
"""

# Write page content
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
sys.stdout.write(content)
Brain - "Are you pondering what I'm pondering?"
Pinky - "I think so, Brain, but there's still a bug stuck in here from last time."

quaglamorf

php-programmerare

  • Inlägg: 49
  • Blev medlem: 07 sep 2014, 19:21

Re: plane1.cgi blir spam??

Inlägg21 sep 2014, 20:48

Nej, jag tror ändå inte att jag förstår.
Om jag använder mig av content så kommer programmet att skriva ut i klartext hur det ser ut, den kör det inte. Vilka delar är det som ska vara i content? Jag skulle vilja se ett cgi script som blandar text och python så man får se hur man ska tänka där.
Jag har prövat att göra de olika uträkningarna med fasta värden i olika variabler (contentfeet, contentmph samt contenttemp) så blir sidan helt blank (ingen spam! YAY!).
Skriver jag alla tre uträkningar i "en" content och skriver ut den via write(content) så kommer all text ut, inklusive uträkningar.
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10914
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: plane1.cgi blir spam??

Inlägg22 sep 2014, 08:44

Pröva att göra så här i din kod (kombinera strängar och variabler och lagra i en sträng):

Kod: Markera allt
>>> feet = 300                               
>>> content = "Höjden i feet är " + str(feet)
>>> content                                 
'Höjden i feet är 300'                       
>>>                                         


Det som ger dig felet är print-satserna kombinerade med svenska tecken. Ta bort svenska tecken så fungerar print-satserna. Spara allt i en variabel och skriv ut den enligt:

Kod: Markera allt
# Write page content
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
sys.stdout.write(content)


så fungerar svenska tecken.
...
..:
.... /mos

quaglamorf

php-programmerare

  • Inlägg: 49
  • Blev medlem: 07 sep 2014, 19:21

Re: plane1.cgi blir spam??

Inlägg22 sep 2014, 12:24

mos skrev:Pröva att göra så här i din kod (kombinera strängar och variabler och lagra i en sträng):

Kod: Markera allt
>>> feet = 300                               
>>> content = "Höjden i feet är " + str(feet)
>>> content                                 
'Höjden i feet är 300'                       
>>>                                         


Det som ger dig felet är print-satserna kombinerade med svenska tecken. Ta bort svenska tecken så fungerar print-satserna. Spara allt i en variabel och skriv ut den enligt:

Kod: Markera allt
# Write page content
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
sys.stdout.write(content)


så fungerar svenska tecken.


Kanon! Tack.
Jag har fått det att fungera till en viss grad. Får det inte riktigt att se ut så som det är tänkt misstänker jag.
https://dl.dropboxusercontent.com/u/53028645/plane1.cgi
http://www.student.bth.se/~stkj14/dbweb ... plane1.cgi
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10914
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: plane1.cgi blir spam??

Inlägg22 sep 2014, 12:32

Stiligt :)

Lägg till en sträng med "\n" så får du med de radbrytningar du vill ha.
...
..:
.... /mos

quaglamorf

php-programmerare

  • Inlägg: 49
  • Blev medlem: 07 sep 2014, 19:21

Re: plane1.cgi blir spam??

Inlägg22 sep 2014, 12:47

mos skrev:Stiligt :)

Lägg till en sträng med "\n" så får du med de radbrytningar du vill ha.


YAY! It´s Aliiive! Alive I tell you :)
Tack!

:mrgreen:
Användarvisningsbild

gostal

css-guru

  • Inlägg: 77
  • Blev medlem: 05 sep 2014, 10:37

Re: plane1.cgi blir spam??

Inlägg22 sep 2014, 17:04

Hade oxå problem med "spam". Nu kommer jag inte ihåg riktigt men i slutet av web-sidan när den inte fungerade stod något som fick mig att kommentera bort:
Kod: Markera allt
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

och då fungerade sidan. Förstår inte riktigt.

En annan sak jag upptäckte var att när jag loggade in på ssh.student.bth.se så testade jag att köra mina skript där (python3 skript.py) och då strular det med tecknen. Inte konstigt kanske då
Kod: Markera allt
echo $LANG

ger en_US.ISO-8859-15. Och skriptet är kodat i utf-8. Varför inte köra utf-8 på servern oxå?
gostal
:-^^-:
Användarvisningsbild

Sylvanas

dbwebb

  • Inlägg: 1133
  • Blev medlem: 16 nov 2011, 17:03
  • Ort: Karlskrona

Re: plane1.cgi blir spam??

Inlägg22 sep 2014, 17:41

gostal skrev:Hade oxå problem med "spam". Nu kommer jag inte ihåg riktigt men i slutet av web-sidan när den inte fungerade stod något som fick mig att kommentera bort:
Kod: Markera allt
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

och då fungerade sidan. Förstår inte riktigt.


Du har förmodligen gjort samma fel som ovanstående: skrivit ut text direkt på sidan med print() istället för att lägga det i en variabel som du skriver ut på slutet av sidan. Den rad du kommenterade bort ska egentligen inte kommenderas bort, utan din kod ska se ut enligt exemplet:
Kod: Markera allt
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Execute as cgi-skript and send a correct HTTP header.

"""

# To write pagecontent to sys.stdout as bytes instead of string
import sys
import codecs

# Enable debugging of cgi-.scripts
import cgitb
cgitb.enable()

# Send the HTTP header for plain text or for html
print("Content-Type: text/plain;charset=utf-8")
#print("Content-Type: text/html;charset=utf-8")
print("")

# Here comes the content of the webpage
content = """
Hello The World of Web
"""

# Write page content
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
sys.stdout.write(content)


Alltså, så ska du placera texten du vill skriva ut i content först och inte använda print() och ha var raden du kommenterade bort.
Brain - "Are you pondering what I'm pondering?"
Pinky - "I think so, Brain, but there's still a bug stuck in here from last time."
Användarvisningsbild

gostal

css-guru

  • Inlägg: 77
  • Blev medlem: 05 sep 2014, 10:37

Re: plane1.cgi blir spam??

Inlägg22 sep 2014, 18:02

Nej, print fungerade inte alls. Därför la jag utskriften i en variabel:

Kod: Markera allt
...
out="""\nHöjden över havet är: """+str(round(altitude, 1))+""" feet\n"""
out=out+"""Hastigheten är: """+str(round(speed, 1))+""" mph\n"""
out=out+"""Temperaturen utanför flygplanet är: """+str(round(temp, 1))+""" grader F\n"""
out=out+"""\nSå det så!\n"""

# To write pagecontent to sys.stdout as bytes instead of string
import sys
import codecs


#Enable debugging of cgi-.scripts
import cgitb
cgitb.enable()


# Send the HTTP header
print("Content-Type: text/plain;charset=utf-8")
#print("Content-Type: text/html;charset=utf-8")
print("")


# Here comes the content of the webpage
content = out


# Write page content
#sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
sys.stdout.write(content)


eller menar du att det funkar om jag tar bort alla printsatser som finns?

Jag kan precis inget om cgi-skript så därför har jag pillat så lite som möjligt i de bitarna.
gostal
:-^^-:
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10914
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: plane1.cgi blir spam??

Inlägg23 sep 2014, 01:10

gostal skrev:Hade oxå problem med "spam". Nu kommer jag inte ihåg riktigt men i slutet av web-sidan när den inte fungerade stod något som fick mig att kommentera bort:
Kod: Markera allt
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

och då fungerade sidan. Förstår inte riktigt.

En annan sak jag upptäckte var att när jag loggade in på ssh.student.bth.se så testade jag att köra mina skript där (python3 skript.py) och då strular det med tecknen. Inte konstigt kanske då
Kod: Markera allt
echo $LANG

ger en_US.ISO-8859-15. Och skriptet är kodat i utf-8. Varför inte köra utf-8 på servern oxå?


Jag har satt LANG i min .cshrc-fil till UTF-8.

Kod: Markera allt
seekers~: echo  $LANG
sv_SE.UTF-8
seekers~: grep LANG .cshrc
setenv LANG sv_SE.UTF-8


Så kanske är jag inte medveten om eventuella kodningssaker på ett nytt konto. Men jag testade att ta bort min inställning i .cshrc-filen och teckenkodningen, på tex me/mos-me.cgi fungerar ändock.

För att fixa ditt cgi-skript så bör du ta bort kommentaren du la till.
Kod: Markera allt
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())


Blir det fortfarande problem så länka till cgi-skriptet så kikar vi på det.
...
..:
.... /mos
Användarvisningsbild

gostal

css-guru

  • Inlägg: 77
  • Blev medlem: 05 sep 2014, 10:37

Re: plane1.cgi blir spam??

Inlägg23 sep 2014, 11:22

Tack för info om hur man fixar miljövariabler i .cshrc. Nu strular det inte med tecknen. Kör bash själv. Kan vara nyttigt med lite duvning i tc-shell oxå eller är det ren c-shell?

Ang. cgi-skriptet. Grejen är att det funkar om jag kommenterar bort näst sista raden:

Kod: Markera allt
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())


men fungerar inte om den finns kvar. Nu provade jag att aktivera raden igen och då fungerar det alltså inte. Mot slutet av websidan finns ett felmeddelande:
Kod: Markera allt
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
AttributeError: 'file' object has no attribute 'detach'

och det var det som fick mig att kommentera bort raden och då fungerar skriptet som finns på:

http://www.student.bth.se/~erlj14/dbwebb-kurser/python/me/kmom01/plane/plane1.cgi

Lämnar skriptet i nuvarande icke-fungerande tillstånd tills vidare. Det kanske är lättare att se var skon klämmer då. Trist. Jag tyckte jag var färdig med kmom01 i söndags och har skrivit en trudelutt om det här i redovisningen.
gostal
:-^^-:
Användarvisningsbild

gostal

css-guru

  • Inlägg: 77
  • Blev medlem: 05 sep 2014, 10:37

Re: plane1.cgi blir spam??

Inlägg23 sep 2014, 12:24

Jag insåg att det som skrevs ut på sidan var html-kod så jag kopierade in det i en fil och öppnade filen med webläsaren. Då blev det mycket lättare att tolka. Insåg då att skriptet kördes med python 2.7 och så skulle det ju inte vara. Skrev därför om första raden:
Kod: Markera allt
#!/usr/bin/env python3

och det var det som behövdes för att skriptet skulle fungera. Vill minnas att jag såg något om detta tidigare i denna tråd. Borde ha tänkt på det. Får väl justera min redovisning också.
gostal
:-^^-:

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 12 gäster