Supportnet Computer
Planet of Tech

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.

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

Antwort 3 von semi

Hier ein Beispiel. Keine Fehlerprüfung etc. ist so auf die schnelle getippt.

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

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.


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: