Browseranzeige per CGI aktualisieren

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Browseranzeige per CGI aktualisieren

Beitragvon alpha » Montag 7. Februar 2005, 23:29

Hallo Leute,

ich hab mal eine vieleicht wieder merkwürdige Frage.
Ist es in einem CGI-Script möglich die HTML-Seite zu aktualisieren ohne, daß
der Benutzer immer auf den Reload-Button des Browsers klicken muß?
Ist das mal wieder eine von meinen ungewöhnlichen Anforderungen??

Vieleicht kann mir jemand einen kleinen Codeschnipsel schicken falls dies doch möglich ist.

Danke schon mal.

alpha
BlackJack

Beitragvon BlackJack » Montag 7. Februar 2005, 23:57

Vorweg: Ich habe eigentlich keine konkrete Ahnung davon.

Aber soweit ich weiss kann man vom Server eine Seite auch als "Multipart" senden und so immer aktualisierte Seiten nachschieben. Suchworte für Google wären wohl "CGI server push multipart".
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 8. Februar 2005, 00:38

Jup, dazu brauch man aber kein CGI Script sondern HTML :)
<meta http-equiv="refresh" content="SEKUNDEN; URL=URL">
Als Beispiel mal eine Seite sie sich nach 25 Sekunden selbst wieder aufruft: FM4 Listings.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 8. Februar 2005, 07:12

alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Beitragvon alpha » Mittwoch 9. Februar 2005, 00:00

Danke erst mal für die Antworten. Leider hab ich noch ein Problem. Wenn ich die Zeile

<meta http-equiv="refresh" content="25; URL=stream">

in mein Script

Code: Alles auswählen

#!/usr/bin/python
from time import *
print "Content-Type: text/html" # Header
print
print "<html><head><title> CGI-Script </title></head>"
print "<meta http-equiv="refresh" content="25; URL=stream">"
print "<body><h1>Datum und Zeit</h1>"
print "Es ist ", ctime( time() ) + "."
print "</body></html>"


einbinde bekomm ich ne Syntax Fehlermeldung vom Server.

File "/home/alpha/scripts/python/cgi-bin/mycgi.py", line 6
print "<meta http-equiv="refresh" content="25; URL=stream">"
^
SyntaxError: invalid syntax
amd64 - - [08/Feb/2005 23:56:39] CGI script exit status 0x100

Hat vieleicht jemand ne Erklärung dafür???

Danke schonmal für die Mühe.

alpha
Gast

Beitragvon Gast » Mittwoch 9. Februar 2005, 08:28

Die Anführungszeichen sind falsch. So geht's:

Code: Alles auswählen

print '<meta http-equiv="refresh" content="25; URL=stream">'


Oder so:

Code: Alles auswählen

URL = "test.de"
print '<meta http-equiv="refresh" content="25; URL=%s">' % URL
Gast

Beitragvon Gast » Mittwoch 9. Februar 2005, 08:30

Anonymous hat geschrieben:Die Anführungszeichen sind falsch. So geht's:

Code: Alles auswählen

print '<meta http-equiv="refresh" content="25; URL=stream">'


Oder so:

Code: Alles auswählen

URL = "test.de"
print '<meta http-equiv="refresh" content="25; URL=%s">' % URL


Benutze mal import cgitb ; cgitb.enable() in deinem Skript, dann siehtst du auch eine richtige Fehlermeldung. s. http://www.python.org/doc/current/lib/module-cgitb.html
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 9. Februar 2005, 08:32

Soory, war nicht eingeloggt, deswegen zwei Beiträge, die eigentlich einer sein sollen :x
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 9. Februar 2005, 09:48

Danvon mal abgesehen, dass es nicht stream sondern der Name deines Scriptes sein sollte.. denn mit meta refresh kann man auch auf andere Seiten umleiten.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Beitragvon alpha » Donnerstag 10. Februar 2005, 00:28

Super,

vielein Dank euch allen. Jetzt klappt es. Ich war immer der Meinung, daß
" und ' in Python das gleiche bewirken. Man lernt eben nie aus.

Vielen Dank nochmal.

alpha :D
BlackJack

Beitragvon BlackJack » Donnerstag 10. Februar 2005, 16:52

Nun, sie bewirken auch das gleiche. Man startet/beendet damit Zeichenketten. Schau Dir nochmal den Quelltext hier an, der den Syntaxfehler provoziert. Da wirst Du sehen, das ein " mitten in einer Zeichenkette, die mit " angefangen wurde eben diese Zeichenkette dort beendet! Also kannst Du nur das jeweils andere Zeichen innerhalb einer Zeichenkette verwenden oder musst sie eben mit \ schützen.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 10. Februar 2005, 17:14

Alternativ gibt es auch noch die Trippel Strings, die da etwas robuster sind:

Code: Alles auswählen

a = '''bc'''
b = """bc"""
print a == b
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 11. Februar 2005, 07:13

Leonidas hat geschrieben:Alternativ gibt es auch noch die Trippel Strings


Wobei diese den großen Vorteil haben, das man damit über eine Zeile hinaus kommt. Leider wird dabei das Einrücken nicht beachtet :( Somit ist entweder der Code oder die Ausgabe etwas häßlich:

Code: Alles auswählen

def test():
    print """Zeile1
    Zeile2
    Zeile3"""

test()

Ausgabe:

Code: Alles auswählen

Zeile1
    Zeile2
    Zeile3


ODER

Code: Alles auswählen

def test():
    print """Zeile1
Zeile2
Zeile3"""

test()

Ausgabe:

Code: Alles auswählen

Zeile1
Zeile2
Zeile3
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 11. Februar 2005, 12:01

Ja, das habe ich leider auch bemerkt :(
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder