POST und Meta-Refresh gleichzeitig ?
Guten Tag,
ich habe ein Script geschrieben (eine Grußbox) in der Können User über eine eingabe Oberfläche Daten eintragen.
Auf der anderen Seite hat eine Entsprechende person die möglichkeit diese Daten einzusehen.
Zur Zeit löse ich es so, das ich über einen Meta-Refresh die Daten aktualisiere um neue Einträge anzeigen zu lassen.
Nun möchte ich das Script erweitern. Unter anderem werden aus einem Forumal was vor diesem Script "geschaltet" ist mehrere POST Datein gesendet. Diese möchte ich auf die Ausgabe umleiten. Dies Funktioniert auch.
Jedoch sind die $POST nach einem Refresh weg, obwohl sie für die Funktion des Scripts wichtig sind. (unter anderem Username, Password in md5 form und weitere angaben)
Ich habe im ernsten Moment an Cookies gedacht, jedoch weiß ich aus eigener Erfahrung das diese ab und an doch abgeschaltet sind, drum würde ich gerne bei der post methode bleiben. Get halte ich für unsicher und die parameter könnten die 2KB grenze sprängen.
Und meine Frage nun: Muss ich cookies/ Get verwenden, oder gibt es noch weitere Alternativen ?
Vielen Dank,
agentxi
ich habe ein Script geschrieben (eine Grußbox) in der Können User über eine eingabe Oberfläche Daten eintragen.
Auf der anderen Seite hat eine Entsprechende person die möglichkeit diese Daten einzusehen.
Zur Zeit löse ich es so, das ich über einen Meta-Refresh die Daten aktualisiere um neue Einträge anzeigen zu lassen.
Nun möchte ich das Script erweitern. Unter anderem werden aus einem Forumal was vor diesem Script "geschaltet" ist mehrere POST Datein gesendet. Diese möchte ich auf die Ausgabe umleiten. Dies Funktioniert auch.
Jedoch sind die $POST nach einem Refresh weg, obwohl sie für die Funktion des Scripts wichtig sind. (unter anderem Username, Password in md5 form und weitere angaben)
Ich habe im ernsten Moment an Cookies gedacht, jedoch weiß ich aus eigener Erfahrung das diese ab und an doch abgeschaltet sind, drum würde ich gerne bei der post methode bleiben. Get halte ich für unsicher und die parameter könnten die 2KB grenze sprängen.
Und meine Frage nun: Muss ich cookies/ Get verwenden, oder gibt es noch weitere Alternativen ?
Vielen Dank,
agentxi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 34107
Url: https://administrator.de/contentid/34107
Ausgedruckt am: 15.11.2024 um 09:11 Uhr
5 Kommentare
Neuester Kommentar
Wie wäre es wenn du bei deinen Meta Refresh auch eine URL mit in deinen Meta-Tag nimmst ...
also Bsp <meta http-equiv="refresh"; URL=http://localhost/;>
Dann kannst du deine Variablen im Adressrumpf mitschleifen ... ?foo=bar z.B.
Man kann es auch kompilziert machen ^^
Oder du speicherst die Sitzung in der Datenbank, wenn du das md5 pwd nicht anzeigen willst, und liest sie immer wieder aufs neue aus
Oder du baust JavaScript mit ein ... bastelst eine hidden form und nimmst die funktion form.submit()
also Bsp <meta http-equiv="refresh"; URL=http://localhost/;>
Dann kannst du deine Variablen im Adressrumpf mitschleifen ... ?foo=bar z.B.
Man kann es auch kompilziert machen ^^
Oder du speicherst die Sitzung in der Datenbank, wenn du das md5 pwd nicht anzeigen willst, und liest sie immer wieder aufs neue aus
Oder du baust JavaScript mit ein ... bastelst eine hidden form und nimmst die funktion form.submit()
Hallo,
der Meta-Refresh lässt kein Senden eines HTTP-POST zu.
Zwei Möglichkeiten:
1. Du machst es doch über GET. Die 2KB sollten kein Problem sein, PHP unterstützt ja z.b. auch Sessions, du kannst also die Daten auch einfach auf dem Server halten. Und die Sicherheit: ein POST ist genauso unverschlüsselt wie ein GET, letzteres ist lediglich etwas aufflälliger. Aber da sollte man dann halt einfach keine Nutzerdaten verwenden, sondern diese in der Session auf dem Server lassen (man kann sich auch die Mühe machen, hier eigene Tokens zu verwenden, die z.B. jeweils nur für einen Abruf gültig sind).
2. JavaScript. Damit kannst du einfach alle x Sekunden das Formular verschicken, also einen Refresh mit POST. Oder du lädst gleich ganz elegant nur einzelne Teile neu, das geht dann in Richtung AJAX.
Ich vermute fast mal, du willst dir da mit AJAX usw nicht all zu viel Arbeit machen, die schnellste (aber nicht unbedingt schönste) Lösung ist die 2a (Formularversand per JavaScript), dazu findest du auch alles im Netz.
Filipp
der Meta-Refresh lässt kein Senden eines HTTP-POST zu.
Zwei Möglichkeiten:
1. Du machst es doch über GET. Die 2KB sollten kein Problem sein, PHP unterstützt ja z.b. auch Sessions, du kannst also die Daten auch einfach auf dem Server halten. Und die Sicherheit: ein POST ist genauso unverschlüsselt wie ein GET, letzteres ist lediglich etwas aufflälliger. Aber da sollte man dann halt einfach keine Nutzerdaten verwenden, sondern diese in der Session auf dem Server lassen (man kann sich auch die Mühe machen, hier eigene Tokens zu verwenden, die z.B. jeweils nur für einen Abruf gültig sind).
2. JavaScript. Damit kannst du einfach alle x Sekunden das Formular verschicken, also einen Refresh mit POST. Oder du lädst gleich ganz elegant nur einzelne Teile neu, das geht dann in Richtung AJAX.
Ich vermute fast mal, du willst dir da mit AJAX usw nicht all zu viel Arbeit machen, die schnellste (aber nicht unbedingt schönste) Lösung ist die 2a (Formularversand per JavaScript), dazu findest du auch alles im Netz.
Filipp
@agentxi
Hi,
ich habe dir mal drei kleine Scripte erstellt.
index.php – speichert die gesendeten Daten ab und ruft die Seite test.php auf
neuedaten.html – sendet ebenfalls Formulardaten an test.php
test.php – liest die abgespeicherten Daten aus der Datei und zeigt diese
und die Daten aus neuedaten.html an
!! Das Verzeichnis und die Datei, wo Werte abgespeichert werden, muß Vollzugriff für
alle oder zumindest für die user/gruppe, die in der httpd.conf aufgeführt sind.
Du kannst nun von index.php Daten abspeichern und an test.php senden,
Daten von neuedaten.html an test.php senden und gespeicherte und neue
Daten zusammen verarbeiten.
Grüße
Günni
Hi,
ich habe dir mal drei kleine Scripte erstellt.
index.php – speichert die gesendeten Daten ab und ruft die Seite test.php auf
<?
function belegen(){
$handle=fopen("/www/pub/werte.txt","r+");
foreach($_POST as $inhalt){ // an jedes Post-Element……
if($inhalt=="senden") break; // Wenn das Postelement der Submit-Button ist, nachfolg. code überspringen
$inhalt.=";"; // .....wird ein Trennzeichen angehangen
fwrite($handle, $inhalt);
}
fclose($handle);
}
if($txt1 and $txt2){ // Wenn Form-Felder Daten enthalten……
belegen(); // ..... Funktionsaufruf.....
header("location:test.php"); // ........ und Seite test.php aufrufen
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<head>
<title></title>
</head>
<html>
<body>
<form action="index.php" method="post">
<input type="text" name="txt1">
<input type="text" name="txt2">
<input type="submit" name="cmd" value="senden">
</form>
</body>
</html>
neuedaten.html – sendet ebenfalls Formulardaten an test.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<form action="test.php" method="post">
<input type="text" name="txt1">
<input type="text" name="txt2">
<input type="submit" name="cmd" value="senden">
</form>
</body>
</html>
test.php – liest die abgespeicherten Daten aus der Datei und zeigt diese
und die Daten aus neuedaten.html an
<?
$handle=fopen("/www/pub/werte.txt","r+");
$werte=fgets($handle,10); // Dateiinhalt in Variable einlesen
fclose($handle);
$werte=split(";",$werte); // split("Trenzeichen", Variable) trennt die eingelesenen Werte mit
// Hilfe des Trennzeichens auf, und die Variable wird zum Array, das die einzelnen Werte enthält
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<head>
<title></title>
</head>
<html>
<body>
<?
echo "Aktuellen gespeicherten Werte:<p>";
foreach($werte as $inhalt){
$inhalt.="<p>";
echo $inhalt;
}
echo "Neue Werte:<p>";
echo "$txt1<p>";
echo "$txt2<p>";
?>
</body>
</html>
!! Das Verzeichnis und die Datei, wo Werte abgespeichert werden, muß Vollzugriff für
alle oder zumindest für die user/gruppe, die in der httpd.conf aufgeführt sind.
Du kannst nun von index.php Daten abspeichern und an test.php senden,
Daten von neuedaten.html an test.php senden und gespeicherte und neue
Daten zusammen verarbeiten.
Grüße
Günni