agentxi
Goto Top

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

Content-ID: 34107

Url: https://administrator.de/contentid/34107

Ausgedruckt am: 15.11.2024 um 09:11 Uhr

GreyFox
GreyFox 20.09.2006 um 15:49:57 Uhr
Goto Top
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()
filippg
filippg 20.09.2006 um 15:51:58 Uhr
Goto Top
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
Guenni
Guenni 21.09.2006 um 18:09:08 Uhr
Goto Top
@agentxi

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
agentxi
agentxi 05.07.2007 um 13:02:06 Uhr
Goto Top
Danke, ich werde es über Server_sessions machen. Man hört sich face-wink
filippg
filippg 05.07.2007 um 13:13:23 Uhr
Goto Top
Wow, da hat die Entscheidung aber lange gedauert.

Filipp