bestimmte Variablen übernehmen
Berndi
- php
Hallo,
ich kenne mich noch nicht so aus mit PHP. Habe folgendes Scriptschnipsel übernommen:
if(count($_POST) > 0)
foreach($_POST as $key => $value)
$$key = $value;
Damit werden ja alle Variablen übernommen, die "gepostet" werden. Wie werden aber nur bestimmte Variablen übernommen?
Danke und noch'n schönen Abend,
Berndi
Huhu Berndi
Damit werden ja alle Variablen übernommen, die "gepostet" werden. Wie werden aber nur bestimmte Variablen übernommen?
eine Möglichkeit wäre z.B.
$GetTheseVars=array('Name','Vorname','Strasse');
foreach($_POST as $key => $value){
if(in_array($key,$GetTheseVars)){
$$key = $value;
}
}
oder
foreach($GetTheseVars as $one){
if($_POST[$one]){
$$one = $_POST[$one];
}
}
Viele Grüße
lulu
Moin!
if(count($_POST) > 0)
foreach($_POST as $key => $value)
$$key = $value;
Damit werden ja alle Variablen übernommen, die "gepostet" werden. Wie werden aber nur bestimmte Variablen übernommen?
Warum willst du die Variablen denn nochmal extra "übernehmen"? Es existiert doch der Hash $_POST genau deshalb, daß man direkt auf ihn zugreift.
Im übrigen ist der Code oben ziemlich gefährlich. Er reproduziert das Problem, weswegen PHP von vielen Leuten recht kritisch gesehen wird: Man kann durch schlichte Übergabe eines "name=wert" (entweder in der URL-Zeile, oder als POST-Formular) beliebige Variablen erzeugen und mit Werten vorbelegen. Wenn das Script dann zufällig diese Variablen verwendet und nicht sicher dafür sorgt, daß Anfangswerte zugewiesen werden, hat man eine ziemliche Sicherheitslücke.
Wenn du Werte aus dem POST-Formular weiterverarbeiten willst, mach das im Direktzugriff. Wenn beispielsweise ein Textfeld "nachname" drin ist:
echo "Sie heißen ".$_POST['nachname'];
Mit dem Befehl var_dump($_POST); kannst du dir auflisten lassen, welcher Inhalt vom Formular gesendet wurde, falls irgendetwas mal unklar ist oder nicht so funktioniert. var_dump() funktioniert für alle Variablen, die PHP kennt.
- Sven Rautenberg
Nochmal Hallo,
danke für Eure Antworten. Ich glaube das war's, was ich gesucht habe:
$name = $_POST['name'];
Mit register_globals=On hat man das ja nicht gebraucht, deshalb war mir das nicht so ganz klar.
Grüße,
Berndi