PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : $$ in PHP?



ThorstenHirsch
01-03-2006, 10:51
Servus!

Aus Perl kenn ich $$variable um den Inhalt von $variable als neuen Variablennamen zu bekommen. Kann ich sowas auch in PHP machen?

Mein Problem ist folgendes: ich schreibe ein generisches Interface mit Formularen und das Formular kann verschiedene Inputs haben, die ich zum jetzigen Zeitpunkt noch nicht weiß. Ich will aber nach dem Absenden des Formulars alle Inputs als Variablen vorliegen haben und zwar am liebsten als $inputname=$inputwert. Sie liegen mir aber wie das bei POST-Formularen so ist nur als $_POST['$inputname']=$inputwert vor. Ich habe mir schon einen Array erzeugt, der alle $inputnamen enthält und einem hidden-input-Feld zugewiesen wird. Ich kenne nach dem Absenden des Formulars also alle $inputnamen. Wenn das in PHP so klappen würde wie in Perl würde ich es so zuweisen:


foreach ($array as $variable)
{
$$variable=$_POST['$variable'];
}

Ich hoffe so langsam versteht jemand was ich will. ;)

Also - wie schaut's aus? Wie löse ich das mit PHP?

Pingu
01-03-2006, 11:10
Ich habe da einen ganz heißen Tipp für Dich: Manual (http://de3.php.net/manual/de/language.variables.variable.php)

Pingu

Gaert
01-03-2006, 11:12
....


foreach ($array as $variable)
{
$$variable=$_POST['$variable'];
}
Ich hoffe so langsam versteht jemand was ich will. ;)

Also - wie schaut's aus? Wie löse ich das mit PHP?

In der Zeit in der du diesen Post geschrieben hast hättest du's eigentlich schon ausprobieren können, oder?

ThorstenHirsch
01-03-2006, 11:49
lol. Natürlich hatte ich das schon ausprobiert - es hat aber nicht geklappt. Jetzt seh' ich aber, dass das an nem ganz anderen Fehler lag. Arrrrgh!

Na das ist ja toll. :)

P.S.: Warum steht eigentlich im PHP Kochbuch nix darüber drin?

klewan
01-03-2006, 12:51
eval("\$" . $variable . "=\"" . $_POST['$variable'] . "\";");
echo $variable;


evntl geht auch bin mir aber nicht sicher ob das in deinem fall das is was du willst :-)



extract($_POST);
echo $variable;

undefined
01-03-2006, 16:11
Das Übliche Drama der fehlenden Kontrollstrukturen ;)


foreach ($array AS $var)
{
if ( isset( $_POST[$var] ) )
$var =& $_POST[$var];
}

Turbohummel
01-03-2006, 16:44
Also gehen Tuts, aber ob mans verwenden sollte, darüber lässt sichs streiten. Ich jedenfalls nehme davon Abstand. Es geht halt, wie register-globals auch, aber deswegen sollte man es noch lange nicht verwenden.

undefined
01-03-2006, 16:58
:confused: Wo bist du jetzt dran :confused:

Romanday
02-03-2006, 19:22
Also gehen Tuts, aber ob mans verwenden sollte, darüber lässt sichs streiten. Ich jedenfalls nehme davon Abstand. Es geht halt, wie register-globals auch, aber deswegen sollte man es noch lange nicht verwenden.

Warum ist es sinnvoll mit $_POST und $_GET weiterzuarbeiten?
Damit ein versehentliches $variable = $variable; vermieden wird
&& nicht doppelt Speicher reserviert wird!
Das Rad gibt es schon, man muß es nicht erfinden.:D

Turbohummel
02-03-2006, 20:53
Ich arbeite nicht mit $_POST und $_GET, denn ich arbeite mit $_REQUEST, und auch das ist in eine Klasse Remote_Data verpackt, die mir Funktionen wie get_string(), get_int(), get_decimal() und exists() anbietet. Dann weiß ich wenigstens, was da kommt.

undefined
02-03-2006, 21:42
Also wer nur mit $_REQUEST arbeitet hat Generel schon mal einen Designfehler (Zitat: Peter Prochaska auf der Letzten PHP Konferenz in Frankfurt zum Thema Sicherheit, SQL-Injection und Session Hijcking). und da gebe ich im voll und ganz Recht.
Ich Empfehle dir XSSoops http://www.xssoops.com

philneu
03-03-2006, 13:04
Ich hab für $$vars eine Anwendung gehabt:

Eine Liste mit checkboxen für Mitglieder, die eine Mail erhalten sollen.
Die Namen der Checkboxen sind fortlaufend nummeriert, value ist gleich der USER-ID.

Danach kann ich alle Checkboxen der Reihe nach abfragen, ob sie eine User-ID haben, also eine Mail erhalten sollen...

geht auch mit arrays, aber habe es damals so gemacht...

Romanday
03-03-2006, 19:21
Ich hab für $$vars eine Anwendung gehabt:

Eine Liste mit checkboxen für Mitglieder, die eine Mail erhalten sollen.
Die Namen der Checkboxen sind fortlaufend nummeriert, value ist gleich der USER-ID.

Danach kann ich alle Checkboxen der Reihe nach abfragen, ob sie eine User-ID haben, also eine Mail erhalten sollen...

geht auch mit arrays, aber habe es damals so gemacht...

$$vars hättest du nicht gebraucht.

Zur HTML formatierung gibts <ol> sowie im Formular einen nummerischen Array
übergeben. Dann hättest auch Zugriff auf die einzelnen Elemente gehabt.