Alle mit POST übermittelten Variablen auf einmal registrieren.
Koontz
- php
0 Thomas Schmieder0 Koontz0 Thomas Schmieder0 Christian Seiler
Hi,
gibt es eine Möglichkeit, die mit POST übermittelten Variablen auf einmal zu registrieren? Mit einer einzigen Variablen kann man das ja mit:
$test = $_POST["test"];
machen. Geht das auch für alle auf einmal?
Im neuen Netscape bzw. IE60 kann man die übermittelten Variablen ja leider nicht mehr wie normale Variablen (also einfach mit $) ansprechen sondern nur noch mit $_POST.
Hallo,
dazu kann man ab PHP 4.2.x wieder die foreach()-Funktion und den indirekten Referenzierer $$ benutzen.
Für einige Versionen vor 4.2.x kapselt foreach() leider die in ihr definierten Variablen wie in einer Userfunction.
foreach($_POST as $key => $value)
{
$$key = $value;
}
Aber mal ernsthaft, wozu sollte das gut sein?
Liebe Grüße aus http://www.braunschweig.de
Tom
Aber mal ernsthaft, wozu sollte das gut sein?
Ganz einfach. Ich habe mehrere Formulare, welche Daten per POST austauschen. Dabei handelt es sich meistens um ca. 100 Variablen, die per POST übermittelt werden. In dem aufgerufenen Formular werden die Variablen dann über $VARIABLENNAME angesprochen. Halt ganz normal. Tja, beim neuen Netscape ist es nun so, dass man die per POST übermittelten Variablen nicht mehr per $VARIABLENNAME ansprechen kann sondern nur noch über $_POST["VARIABLENNAME"]. Das würde also bedeuten, dass ich jedesmal für über 100 Variablen den Code ändern müsste. Darauf hab ich schlicht und ergreifend keine Lust. Deshalb meine Frage.
Beim InternetExplorer 6.0 kann man übrigens anscheinend generell keine Daten mehr per POST übermitteln. Es funktioniert weder $VARIABLENNAME noch $_POST["VARIABLENNAME"].
Hallo nochmal,
wird das jetzt zur "zwei Frames Frage" von PHP?
Das habe ich hier heute bestimmt schon dreimal gelesen und ich glaube, auch Deinen Namen in diesem Zusammenhang schon gesehen zu haben.
Das hat nichts mit dem Browser zu tun, sonder ist eine Einstellungsache am Server. Dort werden die Variablen, die PHP über den Environmentbreich des Scriptes übergeben bekommt, nicht mehr als Einzelvariablen automatisch angelegt, da diese ja auch schon früher dann gleichzeitig die POST, GET, COOKIE, FILES, SERVER;... Variablen aufnehmen mussten, was schließlich nicht geht. Also hat man irgendwann beschlossen, diese ewig langen Namen für die Arrays ($HTTP_POST_VARS) gegen kurze zu ersetzen ($_POST) und die Variablen einfach in den Arrays stehen zu lassen. AUßerdem sind die kurznamigen Arrays nun Script-superglobal. Das bedeutet, dass man für sie kein global-Statement mehr benötigt.
Ich würde mir an Deiner Stelle die Arbeit machen, und die paar Scripte umschreiben.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hm, na gut. Dann werde ich das wohl machen müssen :-/
Es gibt da aber ein kleines Problem mit meinen SQL-Anweisungen. Wenn ich schreibe:
$query = "SELECT * FROM user_db WHERE username = '$_POST['USERNAME']'";
... dann meckert er.
Erst wenn ich:
$username = $_POST["USERNAME"];
$query = "SELECT * FROM user_db WHERE username = '$username'";
schreibe, geht es. Und vor dieser Schreibarbeit grault es mir.
Gruss,
Koontz
Halli,
Es gibt da aber ein kleines Problem mit meinen SQL-Anweisungen. Wenn ich schreibe:
$query = "SELECT * FROM user_db WHERE username = '$_POST['USERNAME']'";
$query = "SELECT * FROM user_db WHERE username = '".$_POST['USERNAME']."'";
oder
$query = "SELECT * FROM user_db WHERE username = '{$_POST['USERNAME']}'";
cu,
Robert
Hi Robert,
$query = "SELECT * FROM user_db WHERE username = '{$_POST['USERNAME']}'";
Das gefällt mir. Hab ich mich bisher noch gar nicht gekümmert um diese Schreibweise. Gibts da was zu beachten? Die ist ja wirklich übersichtlich!
Liebe Grüße aus http://www.braunschweig.de
Tom
Stimmt, das hat was. So mach ich das jetzt :-)
Gruss,
Koontz
$query = "SELECT * FROM user_db WHERE username = '$_POST['USERNAME']'";
logisch, das quoting stimmt nicht mehr...
$query = "SELECT * FROM user_db WHERE username = " . $_POST['USERNAME'];
Odium
... oder wenn du den server kontrollieren kannst die eigenschaft register-globals o.s.ä. in der PHP-Konfiguration einzuschalten
Odium
Hi,
... oder wenn du den server kontrollieren kannst die eigenschaft register-globals o.s.ä. in der PHP-Konfiguration einzuschalten
frei nach dem Motto, was immer so war muss immer so bleiben...
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo,
da ich momentan mehr asp mache kann mir das gar nicht passieren... hier müssen paramter immer geholt werden...
ich hab es ihm ja nur als möglichkeit angeboten, bitte keine übertriebenen schlüsse daraus ziehen..
Odium
p.s. in meinem beispiel unten fehlen natürlich die ' die den string innerhalb der sql-anweisung kennzeichnen...
Hallo Koontz,
Beim InternetExplorer 6.0 kann man übrigens anscheinend generell keine Daten mehr per POST übermitteln. Es funktioniert weder $VARIABLENNAME noch $_POST["VARIABLENNAME"].
Kann es sein, das in Deinem Formular enctype="text/plain" drinnen steht? Wenn ja, dann schickt der IE die Daten schon ab, aber halt wirklich als text/plain - und das kann kein Server erkennen. POST-Formulare sollten als application/x-www-urlencoded verschickt werden.
Christian