PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablenproblem


Arc_75
11.04.2003, 15:54:02
Sobald ich den Submit-Button drücke, soll das Programm
die Variable $form[login] wiedergeben.
Es handelt sich hierbei um ein Beispielaussschnitt aus einem Lehrbuch,
und mir ist bewusst, dass ich die Variable einfacher benennen könnte
z.B. $login. Unter diesen Umständen bräuchte ich nur $login=$_POST[login]
eingeben und alles würde Prima laufen.

Hier erstmal das Listing.

<?php
$form[login]=$_POST[...] <-- Diese Zeile bereitet mir Schwierigkeiten
print $form[login] <-- Das Ziel...Die Variable form[login] soll ausgegeben werden
?>

<form action="<?php print $PHP_SELF;?>" method="POST">
<input type="text" name="form[login]" value="<?php print $form[login]?>">
<input type="submit" value="Aktualisieren">
</form>
...
..
.
Wer kann mir weiterhelfen ???

c4
11.04.2003, 15:57:04
Die Namen für Formularelemente sollten nur Buchstaben und Zahlen enthalten sonst nix.
Wenn Du mit assoziativen Arrays arbeitest, dann schreib die Feldbezeichner in Hochkomma.

Abgeändert ergibt sich ungefähr das:
<?php
$login=$_POST['login'];
print $login
?>

<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST">
<input type="text" name="login" value="<?php print $login ?>">
<input type="submit" value="Aktualisieren">
</form>


Noch was:
Da seit PHP Version 4.1 ein neues Sicherheitskonzept aktiviert ist, musst Du alle übergebenen Variablen mit
$_GET - für Urlparameter
$_POST - für mit method=post versendete Parameter
$_REQUEST - $_POST & $_GET zusammen
$_COOKIE - für Cookies
$_FILES - für hochgeladene Files
$_SERVER - für Servervars (z.B. PHP_SELF)
$_ENV - für Umgebungsvars
ansprechen. Also ehemals $username mit $_POST['username']
Oder Du setzt in der php.ini register_globals (o.ä.) auf on. Davon rate ich aber ab.

s-fox
12.04.2003, 13:15:57
Ich hab das gerade mit den neuen Variablen gelesen!
Ich mach die formular-postes immer mit´dem Name der Datei, in der sich das Script befindet!

<form action="scriptort.php" method="post">
<input ....
...>
</form>

Wird das bald nicht mehr von den Server interpretiert?

Yzerman
12.04.2003, 13:19:47
Wie c4 bereits schrieb, es wird dann nicht mehr akzeptiert, wenn auf dem Server PHP Version 4.1.x oder höher läuft und in der PHP.ini der Eintrag "RegisterGlobals" auf "Off" steht. Dann musst Du die neuen Variablen benutzen.
Viele Webspaceprovider lassen diesen Eintrag allerdings auf "on", zunächst zumindest, damit auch alte Scripte weiterlaufen.
Ich empfehle jedoch dringend, nur noch mit den neuen Vars zu proggen.