login mit email - Bestätigung?

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

  • #16
    Erzeuge ein Token (einen zufälligen String), speichere ihn in der DB und baue ihn in den Link in der Mail ein.
    Klickt der User auf den Link, schaust du in der DB nach, ob das Token existiert, ob es noch gültig ist (Zeitpunkt der Erzeugung muss ebenfalls in DB vorliegen), loggst den zugehörigen User ein (Zuordnung zum User muss ebenfalls in der DB vorliegen), bittest den User ein Passwort zu setzen, falls das nicht bereits bei der Registrierung passiert ist, setzt den User auf "aktiv" und löschst das Token.

    Kommentar


    • #17
      wie könnte so etwas aussehen?

      wie sieht dieser link aus
      der dan in der db nachsehen kann.
      wie setzt es dan auf aktiv und und wie kann ich es überwachen das er aktiv ist.

      mfg. wessei

      Kommentar


      • #18
        Sorry, aber die Rückfragen sind einigermaßen unverständlich.

        Das Token ist eine eindeutige Bytefolge. Zum Beispiel eine Folge von 10 zufälligen Buchstaben (a-z) und Ziffern (0-9). Die Idee dahinter ist, dem jeweiligen Nutzer eine Möglichkeit an die Hand zu geben, zu beweisen, dass er Inhaber einer Mail-Adresse ist.

        Beispiel:

        Nutzer A registriert sich, hat aber sein Konto noch nicht aktiviert. Nutzer A wird nun ein Link zugeschickt, mit dem er sein Konto aktivieren kann. Dieser Link enthält das Token "123xyz". Nutzer A kann das Token nur dann kennen, wenn er die entsprechende Mail abruft (= Inhaber der Mail-Adresse ist).

        Gleichzeitig ist auf dem Server hinterlegt, dass Nutzer A ein Link mit dem Token "123xyz" zugeschickt wurde und dass das Konto als aktiviert gelten soll, wenn ein entsprechender Request eingeht, der dieses Token übermittelt (beispielsweise als GET-Parameter).
        Zuletzt geändert von mermshaus; 13.07.2011, 03:35.

        Kommentar


        • #19
          ohh ok danke
          versteh schon was du damit meinst ;-)

          werd mich gleich an die arbeit machn :-D

          mfg. wessei

          Kommentar


          • #20
            Hallo...
            Ich bin grade dabei diese ganze PHP Geschichte etwas genauer anzueignen. Dafür habe ich eine fiktive Seite gebastelt auf der man sich auch registrieren kann. Also fiktiv deshalb weil das nie was Sinnvolles wird sondern einfach nur für mich zur übung. Deswegen bitte ich auch drum das man mich nicht zu scharf kritisiert . Aber anmerkungen und verbesserungsvorschläge nehme ich natürlich gern an.
            So nun zu meinem Problem:
            wie schon gesagt habe ich ein Registrierungsformular welches auch funktioniert und möchte auch gerne einen Bestätigungslink per email versenden. Grundsätzlich trägt mir mein Script alles gewünschte in meine Datenbank ein inklusive "Code" zum Bestätigen der E-Mail Adresse allerdings schickt es mir keine E-Mail. Könnte da mal jemand drüber schauen und mir sagen was genau ich falsch mache?
            Schon mal vielen dank im vorraus.
            P.S.: Das "if" für das eintragen und senden der email beginnt bei Zeile 94, die wichtigen Daten habe ich durch "..." ersetzt weil ich leider schon mal sehr schlechte Erfahrungen gemacht habe, Die Seite wird nicht auf einem lokalem Server ausgeführt sonder auf ner gehosteten Domain und das E-Mail Script für sich funtioniert. Das ist getestet.

            Kommentar


            • #21
              PHP-Code:
              <?php
              $verbindung 
              mysql_connect("...""..." "...")
              or die(
              "Verbindung zur Datenbank konnte nicht hergestellt werden");

              mysql_select_db("...") or die ("Datenbank konnte nicht ausgewählt werden");

              $username $_POST["username"];
              $passwort $_POST["passwort"];
              $passwort2 $_POST["passwort2"];
              $email $_POST["email"];
              $geb $_POST["geb"];
              $aktiv $_POST["aktiv"];
              $autho $_POST["autho"];
              $reg $_POST["reg"];
              $ip $_POST["ip"];
              $stat $_POST["stat"];

              function 
              ID($return) {
                  
              srand(time());
                      
              $id "";
                  
              $a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
                   for(
              $i=0$i<=$return$i++) {

                       
              $id.=substr($a, (rand()%(strlen($a))),1);
                   }
                    return(
              $id);
              }

              $link id('12');

              if(
              $passwort != $passwort2 OR $username == "" OR $passwort == "")
                  {
                  echo 
              "    <html>
                              <head>
              <title>...</title> 
                              <
                              </head> 
                              <body bgcolor=\"#333333\">
                              <p class=\"style1\" align=\"center\">&nbsp;</p>
                              <p class=\"style1\" align=\"center\">Anmeldung</p>
                              <p class=\"style2\" align=\"center\">&nbsp;</p>
                              <p class=\"style3\" align=\"center\">Vielen Dank f&uuml;r Ihre Anmeldung.</p>
                              <p class=\"style3\" align=\"center\">Leider ist etwas schief gelaufen.</p>
                              <p class=\"style3\" align=\"center\"><a  href=\"/anmelden.php?username=
              $username&passwort=$passwort&passwort2=$passwort2&email=$email&geb=$geb\">Felder  auffüllen.</a></p>
                              <p class=\"style2\" align=\"center\">&nbsp;</p>
                              <p class=\"style2\" align=\"center\">&nbsp;</p>
                              </body>
                              </html>"
              ;
                  exit;
                  }
              $passwort md5($passwort);

              $result mysql_query("SELECT id FROM user WHERE username LIKE '$username'");
              $menge mysql_num_rows($result);

              if(
              $menge == 0)
                  {
                  
              $eintrag "INSERT INTO user (username, passwort, email, aktiv,  autho, reg, link, geb, ip, stat) VALUES ('$username', '$passwort',  '$email', '$aktiv', '$autho', '$reg', '$link', '$geb', '$ip', '$stat')";
                  
              $eintragen mysql_query($eintrag);

                  if(
              $eintragen == true)
                      {
                      echo 
              "    <html>
                              <head>
                              <title>...</title> 
                              <style type=\"text/css\">
                              <!--
                              .style1 {
                                  color: #00CC00;
                                  font-size: 36px;
                              }
                              .style2 {
                                  font-size: 18px;
                                  color: #00CC00;
                              }
                              .style3 {
                                  color: #00CC00;
                                  font-size: 14px;
                              }
                              .form1 {
                                  color: #00CC00;
                                  font-size: 18px;
                                  border: 3px
                                  border-color: #00CC00;
                                  background-color: #333333;
                                  width: 195px;
                              }
                              .form2 {
                                  color: #00CC00;
                                  font-size: 18px;
                                  border: 3px
                                  border-color: #00CC00;
                                  background-color: #333333;
                                  width: 300px;
                              }
                              a:link { color: #00CC00; }
                              a:visited { color: #00CC00; }
                              -->
                              </style>
                              </head> 
                              <body bgcolor=\"#333333\">
                              <p class=\"style1\" align=\"center\">&nbsp;</p>
                              <p class=\"style1\" align=\"center\">Anmeldung</p>
                              <p class=\"style2\" align=\"center\">&nbsp;</p>
                              <p class=\"style3\" align=\"center\">Vielen Dank f&uuml;r Ihre Anmeldung.</p>
                              <p class=\"style3\" align=\"center\">Der  gew&uuml;nschte Benutzername: 
              $username wurde f&uuml;r Sie  erstellt.</p>
                              <p class=\"style3\" align=\"center\">Bitte  best&auml;tigen Sie Ihre Email-Adresse mit dem Link den  Sie</p>
                              <p class=\"style3\" align=\"center\">via Email auf 
              $email bekommen haben.</p>
                              <p class=\"style2\" align=\"center\">
              $link</p>
                              <p class=\"style2\" align=\"center\">&nbsp;</p>
                              </body>
                              </html>"
              ;

                          
              $to $email;
                          
              $subject "Best&auml;tigungsmail von ...";
                          
                          
              $message "
                                      <html>
                                      <head>
                                      <title>Best&auml;tigungsmail</title>
                                      </head>
                                      <body>
                                      <p>Hallo 
              $username</p>
                                      <p>&nbsp;</p>
                                      <p>Bitte &ouml;ffnen Sie folgenden Link um Ihren Benutzerkonto freizuschalten.</p>
                                      <p>&nbsp;</p>
                                      <p><a  href=\"....com/autho.php?username=
              $username&link=$link\">E-Mail  Adresse best&auml;tigen-</a></p>
                                      </body>
                                      </html>
                          "
              ;

              $headers "MIME-Version: 1.0" "\r\n";
              $headers .= "Content-type:text/html;charset=UTF-8" "\r\n";

              $headers .= 'From: <noreply@....com>' "\r\n";

              mail($to,$subject,$message,$headers);
                          
                      }

                  else
                      {
                      echo 
              "    <html>
                              <head>
                              <title>...</title> 
                              <style type=\"text/css\">
                              <!--
                              .style1 {
                                  color: #00CC00;
                                  font-size: 36px;
                              }
                              .style2 {
                                  font-size: 18px;
                                  color: #00CC00;
                              }
                              .style3 {
                                  color: #00CC00;
                                  font-size: 14px;
                              }
                              .form1 {
                                  color: #00CC00;
                                  font-size: 18px;
                                  border: 3px
                                  border-color: #00CC00;
                                  background-color: #333333;
                                  width: 195px;
                              }
                              .form2 {
                                  color: #00CC00;
                                  font-size: 18px;
                                  border: 3px
                                  border-color: #00CC00;
                                  background-color: #333333;
                                  width: 300px;
                              }
                              a:link { color: #00CC00; }
                              a:visited { color: #00CC00; }
                              -->
                              </style>
                              </head> 
                              <body bgcolor=\"#333333\">
                              <p class=\"style1\" align=\"center\">&nbsp;</p>
                              <p class=\"style1\" align=\"center\">Anmeldung</p>
                              <p class=\"style2\" align=\"center\">&nbsp;</p>
                              <p class=\"style3\" align=\"center\">Vielen Dank f&uuml;r Ihre Anmeldung.</p>
                              <p class=\"style3\" align=\"center\">Leider ist etwas schief gelaufen.</p>
                              <p class=\"style3\" align=\"center\"><a  href=\"/anmelden.php?username=
              $username&passwort=$passwort&passwort2=$passwort2&email=$email&geb=$geb\">Nochmal  versuchen.</a></p>
                              <p class=\"style2\" align=\"center\">&nbsp;</p>
                              <p class=\"style2\" align=\"center\">&nbsp;</p>
                              </body>
                              </html>"
              ;
                      }


                  }

              else
                      {
                      echo 
              "    <html>
                              <head>
                              <title>...</title> 
                              <style type=\"text/css\">
                              <!--
                              .style1 {
                                  color: #00CC00;
                                  font-size: 36px;
                              }
                              .style2 {
                                  font-size: 18px;
                                  color: #00CC00;
                              }
                              .style3 {
                                  color: #00CC00;
                                  font-size: 14px;
                              }
                              .form1 {
                                  color: #00CC00;
                                  font-size: 18px;
                                  border: 3px
                                  border-color: #00CC00;
                                  background-color: #333333;
                                  width: 195px;
                              }
                              .form2 {
                                  color: #00CC00;
                                  font-size: 18px;
                                  border: 3px
                                  border-color: #00CC00;
                                  background-color: #333333;
                                  width: 300px;
                              }
                              a:link { color: #00CC00; }
                              a:visited { color: #00CC00; }
                              -->
                              </style>
                              </head> 
                              <body bgcolor=\"#333333\">
                              <p class=\"style1\" align=\"center\">&nbsp;</p>
                              <p class=\"style1\" align=\"center\">Anmeldung</p>
                              <p class=\"style2\" align=\"center\">&nbsp;</p>
                              <p class=\"style3\" align=\"center\">Vielen Dank f&uuml;r Ihre Anmeldung.</p>
                              <p class=\"style3\" align=\"center\">Leider ist  gew&uuml;nschte Benutzername: 
              $username schon vergeben.</p>
                              <p class=\"style3\" align=\"center\"><a  href=\"/anmelden.php?passwort=
              $passwort&passwort2=$passwort2&email=$email&geb=$geb\">Mit  neuem Benutzernamen anmelden.</a></p>
                              <p class=\"style2\" align=\"center\">&nbsp;</p>
                              <p class=\"style2\" align=\"center\">&nbsp;</p>
                              </body>
                              </html>"
              ;
                      }
              ?>

              Kommentar


              • #22
                Wozu verwendest du LIKE? Ich sehr hier keinen Anwendungszweck dafür.

                Werte, die du in SQL-Code einfügst, müssen mit mysql_real_escape_string() maskiert werden, ansonsten ist das eine riesige Sicherheitslücke.

                mysql_* Funktionen sind veraltet und werden bald aus PHP entfernt. Schau dir stattdessen mal mysqli oder PDO an.

                Es gibt keinen Grund Umlaute zu verst&uuml;mmeln.

                HTML-Klassen sollten sinnvoll und sprechend benannt werden und nicht style1, style2, usw.

                md5() ist veraltet und unsicher. Verwende besser password_hash().

                Eine Code-Zeile sollte nicht länger als 80 Zeichen haben, vor allem, wenn du den Code im Internet publizierst. Es gibt nichts nervigeres als ständig nach rechts und links zu scrollen.

                Entscheide dich für eine Sprache und vermische sie nicht ($result, $eintrag, etc.). Am besten immer alles Englisch schreiben, weil das die Sprache in der IT ist.

                Verwende nicht mail(), sondern eine Mailer-Bibliothek wie zB. PHPMailer. Für den üblichen Programmierer bedeutet es einen irrsinnigen Aufwand eine Mail so korrekt zu gestalten, dass sie problemlos mit mail() verschickt werden könnte. Diese Arbeit nimmt einem so eine Mailer-Bibliothek ab. Dein Code mag vielleicht jetzt für den Augenblick in genau deinen Testfällen funktionieren. Aber die Wahrscheinlichkeit, dass es so wirklich korrekt und zuverlässig auf Dauer funktioniert ist etwa so hoch wie ein 6er im Lotto.
                Zuletzt geändert von h3ll; 17.11.2015, 18:50.

                Kommentar

                Lädt...
                X