Variable mit & in E-Mail

  • Hallo, ich habe ein Problem. Bei der Registrierung meiner Programmierten SW soll man den Benutzernamen angeben, wird nun ein Name mit Deutschen umlauten angegeben gibts Probleme; deshalb wandle ich die Variable wie folgt um:

    PHP
    $name = htmlspecialchars(htmlentities($name));

    Nun wird der Name in der Datenbank gespeichert und es wird eine E-Mail mit einem Link zur endgültigen Registrierung an den Benutzer geschickt, der Link den man nun Anklicken muss enthällt u.a. die Variable mit dem Maskierten Benutzernamen, war da nun ein Umlaut dabei ist in dem generierten Link ein & dabei, nun kann die SW den Benutzernamen nicht vollständig mit $_GET auslesen weil das & als Trennung im Link gedeutet wird.

    Solch ein generierter Link sieht dann z.B. so aus:

    HTML
    meineseite/index.php?page=regok&name=Müller&key=1766

    Das Müller heißt eigentlich Müller, ist eben umgewandelt, das Problem ist das & wenn ich das wieder mit $_GET auslese:-(.
    Wie löse ich das am einfachsten?

    Gruß Thomas

  • Speichere dir Daten ohne htmlentities in der DB und wandele nur bei Bedarf um.

  • Mit der Datenbank habe ich keine Probleme, das Problem ist das ich einen Link generieren muss, der den Nutzernamen enthällt, dieser Link soll dann mittels $_GET ausgelesen werden, mit umlauten geht das nicht, selbst wenn ich umwandle geht es nicht da dann plötzlich ein & beim maskierten ü dabei ist...

  • http://de2.php.net/manual/de/function.urlencode.php

    Zitat

    Gibt einen String zurück, in dem alle nicht-alphanumerischen Zeichen außer -_. durch ein Prozentzeichen (%) gefolgt von zwei Hexadezimalwerten und Leerzeichen durch ein Plus (+) ersetzt werden.


    Ein + ist ein nicht-alphanumerisches Zeichen außer -_. und wird daher durch ein Prozentzeichen (%) gefolgt von zwei Hexadezimalwerten maskiert. Hätte man auch einfach mal ausprobieren können.

    Im übrigen hat unregistriert Recht, htmlentities/htmlspecialchars sollte nicht vor dem Eintragen in die Datenbank verwendet werden, sondern nur nach dem Auslesen je nach Bedarf. In die Datenbank kommen die Daten so wie sie vom User angegeben wurden (Ausnahme natürlich Maskierung durch mysql_real_escape_string, bzw. durch Verwendung von prepared Statement bei Mysqli/PDO).

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook