Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Formular-Daten und HTML-Frames
Frage
Hallo Leute,
ich habe (noch) ein kleines Problem mit PHP.
Ich habe eine normale HTML/PHP-Seite, die ein Formular enthält.
Nach dem Absenden des Formulars (mit POST-Methode) soll eigentlich eine Frameset-HTML-Seite mit einem oberen und einem unteren Teil aufgerufen werden.
Der untere Teil soll dann eine PHP-Seite haben, der die Formulardaten auswertet.
Problem: die Seite hat die $_POST-Daten nicht?!?
Warum?!?
Und wie kann ich das Problem umgehen.
Eine Hilfe wäre nett.
Danke,
Dennis
Antwort 1 von semi
Kann auch nicht funktionieren, da die einzelnen Frames im "übernächsten" Schritt vom Browser angeholt werden.
In dem Skript, an das die Daten geschickt werden, generierst Du nur die Indexseite des Framesets.
Die einzelnen Frames werden vom Browser geladen. Zu diesem Zeitpunkt sind die Daten bereits weeech.
Lösung:
Sessions oder temp. Datei mit den Abfragedaten.
In dem Skript, an das die Daten geschickt werden, generierst Du nur die Indexseite des Framesets.
Die einzelnen Frames werden vom Browser geladen. Zu diesem Zeitpunkt sind die Daten bereits weeech.
Lösung:
Sessions oder temp. Datei mit den Abfragedaten.
Antwort 2 von Dennis Galander
Hallo Semi,
danke für die prompte Antwort.
Das hatte ich mir schon fast so gedacht; brauchte eigentlich nur noch eine Bestätigung.
Ein Tipp von 'nem Erfahrenen:
Was wäre denn besser, die temp.Datei oder Session-Management.
Bei der temp.Datei hätte ich schon etwas bessere Vorstellungen, wie das mit der Session sein soll, nicht wirklich?!?
Irgendwelche guten Tipps (speziell zu Session-Management?)
Muß auch (in sicherheitstechnischer Sicht) nicht wirklich super sein. Je einfacher, desto besser.
Danke nochmals,
Dennis
danke für die prompte Antwort.
Das hatte ich mir schon fast so gedacht; brauchte eigentlich nur noch eine Bestätigung.
Ein Tipp von 'nem Erfahrenen:
Was wäre denn besser, die temp.Datei oder Session-Management.
Bei der temp.Datei hätte ich schon etwas bessere Vorstellungen, wie das mit der Session sein soll, nicht wirklich?!?
Irgendwelche guten Tipps (speziell zu Session-Management?)
Muß auch (in sicherheitstechnischer Sicht) nicht wirklich super sein. Je einfacher, desto besser.
Danke nochmals,
Dennis
Antwort 3 von semi
Hier ein Beispiel. Keine Fehlerprüfung etc. ist so auf die schnelle getippt.
Formular:
form.html
Variante 1 (temp. Datei)
frame.php
Vaiante 2 (Sessions)
frame.php
Gruß,
Michael
Formular:
form.html
<html>
<body>
<form action="frame.php" method="post" target="_top">
<pre>
Vorname : <input name="vorname">
Nachname: <input name="nachname">
<input type=submit>
</pre>
</form>
</body>
</html>Variante 1 (temp. Datei)
frame.php
<?php
$query = array(
"vorname" => $_POST['vorname'],
"nachname" => $_POST['nachname']
);
$tmpname = tempnam(".", "s_");
$fd = fopen($tmpname, "w");
fwrite($fd, serialize($query));
fclose ($fd);
?>
<frameset rows="50%,*">
<frame src="form.php">
<frame src="output.php?s=<?php echo urlencode($tmpname); ?>">
</frameset>output.php
<?php
$tmpname = $_GET['s'];
if(file_exists($tmpname))
{
$query = unserialize(implode("",file($tmpname)));
echo "Vorname :" . $query['vorname'] . "<br>";
echo "Nachname:" . $query['nachname'] . "<br>";
unlink($tmpname);
}
else
{
echo "Fehler:" . $tmpname . "existiert nicht!";
}
?>Vaiante 2 (Sessions)
frame.php
<?php
session_start();
if(!session_is_registered("query"))
{
session_register("query");
}
$query = array(
"vorname" => $_POST['vorname'],
"nachname" => $_POST['nachname']
);
?>
<frameset rows="50%,*">
<frame src="form.html">
<frame src="output.php?<?php echo strip_tags (SID)?>">
</frameset>output.php<?php
session_start();
if(session_is_registered("query"))
{
echo "Vorname :" . $query['vorname'] . "<br>";
echo "Nachname:" . $query['nachname'] . "<br>";
}
else
{
echo "Fehler: Session nicht mehr gültig!";
}
?>Gruß,
Michael
Antwort 4 von Dennis Galander
Hi Semi,
es hat eine Weile gedauert, bis ich verstanden habe, dass es nur mit der php.ini-Einstellung register_globals=On funktioniert.
Meine Frage bzw. mein Problem:
wie geht es ohne diese Einstellung?!?!?
Ich werde aus der manual nicht ganz schlau und probiere es auch schon, aber es geht irgendwie nicht richtig.
Gibt's das was besonderes zu beachten?!?
Gruß
Dennis
es hat eine Weile gedauert, bis ich verstanden habe, dass es nur mit der php.ini-Einstellung register_globals=On funktioniert.
Meine Frage bzw. mein Problem:
wie geht es ohne diese Einstellung?!?!?
Ich werde aus der manual nicht ganz schlau und probiere es auch schon, aber es geht irgendwie nicht richtig.
Gibt's das was besonderes zu beachten?!?
Gruß
Dennis
Antwort 5 von semi
Schau Dir die Funktion import_request_variables im PHP-Handbuch an.
Einfachste Variante:
import_request_variables("gP");
irgendwo am Anfang des Skriptes.
Einfachste Variante:
import_request_variables("gP");
irgendwo am Anfang des Skriptes.

