Script soll "refreshen"
xNeTworKx
- cgi
Hallo,
Also mein Problem ist das ich ein Script habe, daß zwar tadellos funktioniert, aber leider nicht neu ladet. Ich will, daß nach jedem Eintrag die Seite neu ladet und zB "Eintrag gepostet" da steht.
Bis jetzt schreibt das Script den "Eintrag gepostet" Text nach dem senden unter das Textareafeld. Falls mir jemand einen kleinen Tip geben könnte, wäre ich sehr dankbar. Ich poste zur Sicherheit auch das Script hier.
Danke schon mal im Vorraus.
#!/usr/bin/perl -w
use CGI;
$query = new CGI;
$counter = 0;
$zeit = localtime;
&page_start;
print "<h2 align="center">Eingabe</h2>\n";
print "<form>\n";
print "<textarea name="text" rows="10" cols="40"></textarea><br>\n";
print "<input type="submit" value="SEND">\n";
if ($query->param('text')) {
$text = $query->param('text');
open(ZAEHLER,">>counter.txt") or die "Zaehler kann nicht geoeffnet werden : $!\n";
flock ZAEHLER, 2;
print ZAEHLER "a";
close ZAEHLER;
open(ZAEHLER,"<counter.txt") or die "Zaehler kann nicht geoeffnet werden : $!\n";
while (<ZAEHLER>)
{
while (/a/g)
{
$counter++;
}
}
$dateiname = 'text'.$counter.'.txt';
open (FILE,">$dateiname") or die "Kann neue Datei nicht oeffnen : $!\n";
print FILE $zeit."\n";
print FILE $text;
close FILE;
print "<br><font size=+2 align="center">Eintrag gepostet</font><br>\n";
}
&page_end;
sub page_start {
print $query->header;
print "<html>\n<head>\n<title>Eingabe</title>\n</head>\n<body>\n";
}
sub page_end {
print "</body>\n</html>\n";
}
Also mein Problem ist das ich ein Script habe, daß zwar tadellos funktioniert, aber leider nicht neu ladet. Ich will, daß nach jedem Eintrag die Seite neu ladet und zB "Eintrag gepostet" da steht.
Bis jetzt schreibt das Script den "Eintrag gepostet" Text nach dem senden unter das Textareafeld. Falls mir jemand einen kleinen Tip geben könnte, wäre ich sehr dankbar. Ich poste zur Sicherheit auch das Script hier.
Danke schon mal im Vorraus.
Nun, wie wärs, wenn du das Script wie folgt modifizierst:
Wenn ein neuer Eintrag gepostet werden soll, also
if ($query->param('text')) ausgeführt wird, wird kein Eingabefeld ausgegeben, sondern ein redirect zum selben Programm mit einer kleinen Message:
content-type: text/html\n
Location: /cgi-bin/dieses_script.pl?Message=Eintrag+gepostet
Das Script, gibt im Falle, dass if ($query->param('test')) nicht zutrifft diese Message aus.
Zur Struktur des Programmes:
- Counter aktualisieren,
- print "Content-type:text/html\nLocation: ..." if ($query->...)
- else : Ausgabe der Postings.
Achtung: $query->header; kannst du im Falle des redirects nicht anwenden! - Du solltest es mit print ausgeben, s. oben
Hoffe das das Hilft (wenns nicht verständlich war, sags! - Ich drücke gerne noch klarer aus, wenn am Verständnis liegt.)
Viele grüsse
Philipp
Hallo,
Ich hab jetzt folgende Überlegung gehabt, wenn ich den ganzen Teil mit Textarea in ein if($query->param()) setzte und den anderen Teil if ($query->param('text') so lasse, müsste das Script eigentlich immer den richtigen Teil ausgeben, also "entweder", "oder", aber das tut es nicht, sonder es gibt gar nichts aus, nur einen weißen Bilschirm, und wenn ich keinen header setzte, dann eben Internal Server Error.
Warum is das so ?
Ich hab jetzt folgende Überlegung gehabt, wenn ich den ganzen Teil mit Textarea in ein if($query->param()) setzte und den anderen Teil if ($query->param('text') so lasse, müsste das Script eigentlich immer den richtigen Teil ausgeben, also "entweder", "oder", aber das tut es nicht, sonder es gibt gar nichts aus, nur einen weißen Bilschirm, und wenn ich keinen header setzte, dann eben Internal Server Error.
Ich versehe nicht so ganz, was du vor hast.
$query->param() : Du musst doch irgendetwas übergeben, nicht?
Zudem: Du musst die Seite doch trotzdem aktualiseren, sonst wird das gerade zu bearbeitende Posting nicht ausgegeben?
Wäre froh, wenn du noch etwas mehr zu deinen Überlegungen sagen könntest, denn ich verstehe den "Trick" nicht.
Bis dann
Philipp
Hallo,
Mit dem Script soll man kleine Textdateien erzeugen (eigentlich Newseinträge zu einer Homepage), die dann von der Homepage gelesen werden. Wenn das Script startet will ich natürlich nur das Textareafeld sehen und nach einem Eintrag wollte ich das statt dem Textareafeld natürlich "Eintrag gepostet" oder so etwas dasteht.
Deswegen versteh ich nicht warum er den Teil mit dem Textareafeld nicht ausgibt wenn ich if($query->param()) angebe, da doch keine Variablen gesendet werden ?
Mit dem Script soll man kleine Textdateien erzeugen (eigentlich Newseinträge zu einer Homepage), die dann von der Homepage gelesen werden. Wenn das Script startet will ich natürlich nur das Textareafeld sehen und nach einem Eintrag wollte ich das statt dem Textareafeld natürlich "Eintrag gepostet" oder so etwas dasteht.
Deswegen versteh ich nicht warum er den Teil mit dem Textareafeld nicht ausgibt wenn ich if($query->param()) angebe, da doch keine Variablen gesendet werden ?
Ah, jetzt hab ich's verstanden ( hatte einige Verständnisprobleme).
In der Tat, es sollte funktionieren. Vielleicht kannst du es mal so probieren:
if ($query->param('text') eq '')
{
... # textarea ausgeben
}
hoffe das hilft
Philipp