Laufzeitvariable basteln ,z.B.: $a = "email_$vorname"; ??
Christopher
- php
Moin Liste,
hab eine wichtige Frage. Ich habe Variablen wie diese:
$email_christopher = "neo@goqb.de";
Nun fragt mein Script den Vornamen ab und speichert das in der Variable $vorname!
Jetzt hab ich probiert daraus zur Laufzeit eine Variable zu basteln, damit diese Abgefragt wird:
$sendto = "email_$vorname";
Was ich bewirken möchte?
Ich möchte PHP mitteilen, dass es den Inhalt von "$email_vorname" in die Variable $sendto wirft.
Da aber sehr viele eMailadressen, etc. gespeichert sind möchte ich das nicht mit unzähligen IF-abfragen machen sondern so wie oben angegeben.
Nur funzt das nicht.
Dann erscheint in der Variable "$sendto" nämlich nicht meine eMailadresse, sondern der Text "email_christopher"... :-(
Der zweite Trick von mir brachte nichts:
$sendto = "$email_$vorname";
brachte natürlich, da die Variable $email dann ja eingefügt werden soll, und diese leer ist nur "christopher" raus.
$temp123 = "email_$vorname";
$temp234 = "$$temp123";
brachte als dann den Text "$email_christopher" in der Variable raus, nicht aber der erhoffte Inhalt aus der Variable $email_christopher :-(
Hat jemand eine Idee wie ich das bewerkstelligen kann, bzw. wonach ich da bei Google suchen sollte?
Danke im Vorraus!
Viele Grüße,
Christopher
Hallo Christopher!
Du brauchst wohl eine variable Variable.
Lesetip: http://de2.php.net/manual/en/language.variables.variable.php
Siehe auch im Archiv: http://forum.de.selfhtml.org/archiv/2004/3/75273/#m433518.
MfG
Götz
Huhu Christopher
$temp123 = "email_$vorname";
$temp234 = "$$temp123";
brachte als dann den Text "$email_christopher" in der Variable raus, nicht aber der erhoffte Inhalt aus der Variable $email_christopher :-(
Na, so langsam kommst Du der Lösung ja näher.
Evtl. wäre an dieser Stelle ein Blick ins Manual hilfreich.
http://de.php.net/manual/en/language.variables.variable.php
Meiner Meinung nach sind solche Konstruktionen i.d.R. aber überflüssig, schwer durchschaubar und fehleranfällig.
Der Einsatz von Arrays ist dagegen viel schöner ;-)
Also in Deinem Fall (könnte man | würde ich) schreiben:
$mail_recipients = array(
'christopher' => 'neo@goqb.de',
'joerg' => 'huhu@gmx.net',
'lulu' => 'lulu@maledivas.de',
);
$send_to = false;
if (isset($mail_recipients[$vorname])) {
$send_to = $mail_recipients[$vorname];
}
Und dann "wirft" er je nach $vorname die richtige Mail-Adresse in die Variable :-)
Viele Grüße
lulu
Hallo,
Deine hilfe:
$sendto = "email_$vorname";
eval ("$sendto = "$sendto ";");
echo $feldname
das sollte klappen
MFG
Andavos
Halihallo Andavos
$sendto = "email_$vorname";
eval ("$sendto = "$sendto ";");
^^^ (dieser quote muss escaped werden.)
echo $feldname
Pfui, deifel, Andavos! :-)
Nach all den guten Vorschlägen von Götz und lulu eine
Sicherheitslücke vorzuschlagen...
ich sag einfach mal:
$vorname = ""; unlink('c:/windows/win.com'); $sendto .= "";
Viel Spass mit dem codeinject.
Und komm mir jetzt bloss nicht mit der Ausrede, dass Windows 3.1
niemand mehr als ServerOS einsetzt, du! :-)
Nun klar, das kann man vielleicht verhindern aber das macht die
Lösung auch nicht besser, da aperformant und schlicht
unästhetisch.
Viele Grüsse
Philipp
Hallo,
ich liefer nur die Lösung, für die Sicherheitslücken ist jeder Admin selbst verantwortlich ;)
Außerdem weiß man ja nicht, woher die Adresse kommen. Wenn die Schon bei der Registierung überprüft wurden, hat man das Prob. i.d.R. nicht, oder wenn der Admin die eingetragen hat ;)
Aber nagut, die anderen Lösungen sind sicherer als meine, dafür ist die leichter zu verstehen ;)
MFG
Andavos
hi,
Aber nagut, die anderen Lösungen sind sicherer als meine, dafür ist die leichter zu verstehen ;)
nein.
sie ist vielleicht die mit am wenigsten wissen anwendbare, aber das ist auch schon alles.
nicht umsonst hat sich unter programmierern der spruch "eval is evil" verbreitet - neben möglichen sicherheitslücken genannter art erschwert es idR. auch das debugging.
gruss,
wahsaga