Christopher: Laufzeitvariable basteln ,z.B.: $a = "email_$vorname"; ??

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

  1. 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

    --
    Losung für Dienstag, 13. April 2004
    Wir wollen nicht mehr sagen zu den Werken unserer Hände: "Ihr seid unser Gott." (Hosea 14,4)
    Nicht dass wir tüchtig sind von uns selber, uns etwas zuzurechnen als von uns selber; sondern dass wir tüchtig sind, ist von Gott. (2. Korinther 3,5)
    (http://www.losungen.de/heute.php3)
  2. 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

    --
    bythewaythewebsuxgoofflineandenjoytheday
  3. Hallo,
    Deine hilfe:

    $sendto = "email_$vorname";
    eval ("$sendto  = "$sendto ";");
    echo $feldname

    das sollte klappen

    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    1. 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

      --
      Debugging is at least twice as hard as writing the program in the first place.
      So if your code is as clever as you can possibly make it, then by definition you're not smart enough to debug it.
      1. 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

        --
        http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
        1. 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