Ankündigung

Einklappen
Keine Ankündigung bisher.

Ändern der Value im Auswahlfeld

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ändern der Value im Auswahlfeld

    Hallo liebe Community,

    ich habe ein Kontaktformular in PHP. In diesem Kontaktformular gibt es ein Auswahlfeld mit Empfängern. Die Empfänger sind in einer MySQL Datenbank gespeichert.

    Ich rufe diese folgendermaßen auf:

    PHP-Code:
    $_SQL_Mailliste mysql_query("SELECT * FROM emailadressen WHERE group = '1' order by name");
            while(
    $row_mailliste mysql_fetch_array($_SQL_Mailliste))
             {
                echo 
    "<option value='{$row_mailliste['email']}' id='{$row_mailliste['id']}'>{$row_mailliste['name']}</option>\n";
            } 
    Leider ist das Problem, dass die E-Mail Adressen im Quellcode zu sehen sind. Wie kann ich das ändern, dass anstatt der E-Mail Adresse evtl. nur die ID als Value dort steht, aber auch das Formular weiß welche MailAdresse er nehmen soll?

    Ich komm da irgendwie nicht weiter.

    LG


  • #2
    Indem du nur die ID reinschreibst und beim absenden dann die E-Mail-Adresse mittels der ID wieder aus der DB holst.
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Das reinschreiben der ID müsste ja so aussehen, richtig?

      PHP-Code:
      {
                  echo 
      "<option value='{$row_mailliste['id']}'>{$row_mailliste['name']}</option>\n"
       } 
      Aber wie bzw. wo muss ich dann die E-Mail-Adresse über der ID wieder aus der DB holen?

      Kommentar


      • #4
        Ja, aber die { } brauchst nicht, die Varianten sind Geschmacksksache
        PHP-Code:
        echo '<option value="'.$row_mailliste['id'].'">'.$row_mailliste['name']."</option>\n"
        Aber wie bzw. wo muss ich dann die E-Mail-Adresse über der ID wieder aus der DB holen?
        Was wie? Im PHP Teil bei der Formular-Verarbeitung mittels einem SELECT
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Die älteste der drei mysql-Erweiterungen ist veraltet (mysql_*-Funktionen, nicht die MySQL-Datenbank) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
          Choosing an API
          Warum man mysql* generell nicht (mehr) nutzen sollte.
          Wie man von mysql* auf PDO umsteigt
          Wissenswertes zum Thema SQL-Injection
          Standards - Best Practices - AwesomePHP - Guideline für WebApps

          Kommentar


          • #6
            Ich steig da irgendwie nicht ganz durch.

            Muss ich nun so die E-Mail Adresse aus der Datenbank nehmen?

            PHP-Code:
            $_POST['email'] = mysql_query("SELECT email FROM emailadressen"); 

            Kommentar


            • #7
              Nein, wieso willst du was an $_POST zuweisen? Das vergiss mal schnell.

              Du muss in der DB suchen und zwar den Datensatz der die ID hat die im Form ausgewählt wurde. Und von diesem Satz nimmst du dann die E-Mail-Adresse ..

              Code:
              SELECT email FROM tab WHERE id = [die id aus dem Form die ausgewählt wurde]
              Sicherheit nicht vergessen!! Daher das Gganze am besten mit Prepared Statments (mysqli oder PDO) da die Query sonst für SQL-Injetcions anfällig ist. Das mysql_ nicht mehr verwendet werden sollte, wurde ja schon öfters erwähnt.
              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Ahhh okay.

                Dann müsste ich also

                PHP-Code:
                $empfaenger $_POST['email']; 
                Durch das hier ersetzen?

                PHP-Code:
                $empfaenger mysql_query("SELECT email FROM mailadressen WHERE id='".$_POST['email']."'"
                Was die Sicherheit angeht, werde ich im nächsten Step angehen. Mir ist es erst mal wichtig zu verstehen wie das genau funktioniert.

                Kommentar


                • #9
                  So die Seite aber bitte nicht online stellen, das ist eine gewaltige Lücke... Dann mach mindestens ein mysql_real_escape_string() rum.

                  http://php-de.github.io/jumpto/sql-injection/

                  Hier nochwas zu mysqli, ist nicht viel anders in der NOtation als mysql, kannt gleich mit machen dann.

                  http://www.peterkropff.de/site/php/m...grundlagen.htm
                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar

                  Lädt...
                  X