Formulat verschickt keine Werte

daywalkertp

Erfahrenes Mitglied
Ich hab zwei Seiten.
In der ersten:

Code:
<html>
<head><title>Thats tha SHIT!</title></head>
<body><font face="Arial, Helvetica, sans-serif">

<FORM ACTION="php2.php" METHOD=POST>
<INPUT TYPE="text" NAME="beliebigername">
<INPUT TYPE="submit">
</FORM>

</font></body>
</html>

In der zweiten:

Code:
<?
	echo "Sie haben $beliebigername eingegeben. ";
?>

Wenn ich das Forumal jetzt mit einem Text abschicke erhalte ich folgende Fehlermeldung:

Code:
Notice: Undefined variable: beliebigername in c:\inetpub\wwwroot\php_project\php2.php on line 2
Sie haben eingegeben.
Woran kann das liegen?
 
Auf die erste Seite z.B.

PHP:
<form action= "2.php" method="GET">
<input type="text" name="wirdvariable">
</form>

2. Seite

PHP:
<?php

print "Nun ist es eine $wirdvariable";

?>
 
Original geschrieben von Krypthonas
Auf die erste Seite z.B.

PHP:
<form action= "2.php" method="GET">
<input type="text" name="wirdvariable">
</form>


2. Seite

PHP:
<?php

print "Nun ist es eine $wirdvariable";

?>

Genau das habe ich eben probiert. Allerdings erhalte ich wieder die gleiche Fehlermeldung:
Code:
Notice: Undefined variable: wirdvariable in c:\inetpub\wwwroot\php_project\php2.php on line 3
Nun ist es eine

kann es sein das ich mein PHP falsch installiert habe? Aber wenn ja, wieso funktionieren dann die restlichen Funktionen?
 
Also das muss gehen. Ich hab es eben nochma getestet. Es muss.

Es sei denn du hast statt *.php ne html als Dateiendung verwendet.

Aber so normal gehts auf jedenfall.
 
Also gut, ich hab den Fehler entdeckt. Man muss ein wenig in der php.ini rumschreiben. Sucht nach dem Stichwort "register_globals = off" und schreibt es um in "register_globals = on".

Aber Vorsicht! Falls das Textfeld in eurem Formular Name heisst und ihr das Formular abschickt, wird die Variable $Name überschrieben (wenn sie schon existiert) oder eben erstellt. :-)
 
Wenn man nicht gerade Zugriff auf die php.ini hat musst du das folgendermaßen lösen:
In deiner zweiten Datei musst du statt
echo "Sie haben $beliebigername eingegeben. ";

das hier schreiben:
echo "Sie haben ".$_POST['beliebigername']." eingegeben. ";

oder
echo "Sie haben ".$_GET['beliebigername']." eingegeben. ";


$_POST / $_GET hängt von deiner form method ab.

Bei manchen älteren PHP Versionen kann man $_POST / $_GET nicht verwenden, hier muss man $HTTP_POST_VARS bzw. $HTTP_GET_VARS verwenden.
 
1. Formular über GET zu verschicken ist nicht die erste Wahl. Man kann nur eine begrenzte Anzahl an Zeichen verschicken.

2. Statt in der PHP.ini herumzuwurschteln, sollte man gleich richtigen PHP-Code schreiben:

Variablen holt man sich mit GLOBALS OFF über $_GET[$beliebigername] oder $_POST[$beliebigername], je nachdem ob man POST oder GET verwendet.

Gerade für Anfänger ist es wichtig gleich mit GLOBALS OFF zu beginnen, es können erhebliche Sicherheitslücken in Skripten entstehen da bei Globals die Quelle der Variablen nicht überprüft wird. Sprich: Globals kann man austricksen...


Greetz,
Neuro

(EDIT)
P.S.: GRRR. Niemals so lange ein Fenster offen lassen, sonst antwortet jemand vorher und schreibt quasi das gleiche *g* :-)
 
Zurück