Loading...   Upload Image

Passwort per eMail an Nicht-registrierte User versendenForum » Webzone » PHP & MySQL » Passwort per eMail an Nicht-registrierte User versenden

Neues Thema verfassen Neues Thema

  • AridianUser ist offline
    Newbie


    Aridian

    Registriert: 24.03.2012
    Beitraege: 14

    25.03.2012 um 00:26 Uhr

    Hallo Forum,

    ich habe mir mal die Tutorialwünsche durchgesehen und von einem User wurde gewünscht, dass sich ein nicht-registrierter User ein sicheres Passwort per eMail zusenden lassen kann. Da ich heute etwas Zeit hatte, habe ich mal eine solche Funktion geschrieben. Der Code ist gut dokumentiert und sollte eigentlich selbsterklärend sein. Bei Bedarf bau ich noch ein einfaches Captcha mit ein als Spamschutz.

    send_password.php

    <?php
    /**
      * Dies ist ein Beispiel, wie man einfach ein per Zufall generiertes
      * Passwort an eine eMail-Adresse versenden kann, ohne dass ein User
      * registriert sein muss!
      *
      * Version 1.0 ohne Captcha
      *
      * (c) by Aridian für Alice-Grafixx.de
      *
      * Dieser Code ist Freeware und darf beliebig eingesetzt werden
      */
    
    
    // Das Script erst ausführen, wenn auch wirklich auf submit geklickt wurde
    
    if(isset($_POST['submit'])){
    
      $email = $_POST['email']; // Die eMail-Adresse, an die das Passwort versendet werden soll
    
        if(empty($_POST['email'])){
    
    // Fehlermeldung ausgeben wenn keine eMail-Adresse eingegeben wurde
    
        echo '<font color=#DF0000>Es wurde keine eMail-Adresse angegeben!</font><br /><br />';
    
      }else{
    
    // Wir überprüfen die eMail-Adresse auf ihre Gültigkeit
    
    if(!eregi("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$",
    
      $_POST['email'])) {
    
        echo '<font color=#DF0000>Ung&uuml;ltige eMail-Adresse!</font><br /><br />';
    
      }else{
    
    // Wir erstellen das Passwort mittels einer Funktion
    
    function pw_erstellen() {
    
      $zeichen = "abcdefghijkmnopqrstuvwxyz023456789ABCDEFGHJKLMNPQRSTUVWXYZ*~-?/\%";
      srand((double)microtime()*1000000);
    
      $i = 0;
      $pass = '' ;
    
    // Das Passwort sollte schon sicher sein und deshalb erstellen wir ein 10 Zeichen langes Passwort
    
      while ($i <= 9) {
    
        $num = rand() % 65;
        $tmp = substr($zeichen, $num, 1);
        $pass = $pass . $tmp;
        $i++;
    
      }
    
    return $pass;
    
    }
    
    $passwort = pw_erstellen();
    
    // Jetzt versenden wir das Passwort an die eingegebene eMail-Adresse
    
         $sender = "deine@email.de"; // Hier sollte natürlich Deine eMail-Adresse oder die Deines Dienstes stehen
         $empfaenger = "$email";  // Die eMail-Adresse, die der User eingegeben hat. Hierhin wird das Passwort geschickt
         $betreff = "Ihr angefordertes Passwort";  // Der Betreff. Den kann man beliebig ändern
         $mailtext = "Hallo!\n\nIhr angefordertes Passwort lautet: $passwort";  // Und das, was in der eMail dann als Text steht einschließlich unseres erstellten Passwortes
    
         mail($empfaenger, $betreff, $mailtext, "From: $sender "); // Mit dieser Funktion wird die eMail dann zusammengesetzt und abschließend versendet
    
    // Jetzt geben wir eine entsprechende Erfolgsmeldung aus
    
         echo '<font color=#007F00>Das Passwort wurde erfolgreich an Ihre eMail-Adresse versendet</font><br /><br />';
    
        }
      }
    }
    
    echo '
    <b>Passwort zusenden</b>
    <br /><br />
    <form action="" method="POST" />
    <input type="text" name="email" size="30" maxlenght="45" />
    <br />
    <input value="Passwort jetzt zusenden" type="submit" name="submit" />
    </form>
    ';
    
    ?>



    Der Beitrag wurde insgesamt 2 mal editiert, zuletzt 25.03.2012 um 01:30 Uhr ...
    >>Die Wahrheit wird nur zu oft, wie man sagt, verdunkelt, aber sie erlischt nie.<<
    Livius
  • AridianUser ist offline
    Newbie


    Aridian

    Registriert: 24.03.2012
    Beitraege: 14

    25.03.2012 um 01:28 Uhr

    Um die Sache etwas sicherer zu machen, habe ich nun einen Spamschutz von www.stoppt-den-spam.info eingebaut. Dabei handelt es sich um einen Rechen-Captcha.

    send_password.php

    <?php
    /**
      * Dies ist ein Beispiel, wie man einfach ein per Zufall generiertes
      * Passwort an eine eMail-Adresse versenden kann, ohne dass ein User
      * registriert sein muss!
      *
      * Version 1.1 mit einem Rechencaptcha von www.stoppt-den-spam.info
      *
      * (c) by Aridian für Alice-Grafixx.de
      *
      * Dieser Code ist Freeware und darf beliebig eingesetzt werden
      */
    
    // Wir starten die Session für das Captcha von www.stoppt-den-spam.info
    
    session_start();
    
    function encrypt($string, $key) {
    
    $result = '';
    
    for($i=0; $i<strlen($string); $i++) {
    
       $char = substr($string, $i, 1);
       $keychar = substr($key, ($i % strlen($key))-1, 1);
       $char = chr(ord($char)+ord($keychar));
       $result. = $char;
    
    }
    
    return base64_encode($result);
    
    }
    
    $sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "29jfkd921"); // Diesen Code sollte man im rechen-captcha.php Script und hier anpassen. Es müssen aber beide Codes identisch sein
    $sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
    
    if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
    
    unset($_SESSION['rechen_captcha_spam']);
    
    
    // Das Script erst ausführen, wenn auch wirklich auf submit geklickt wurde
    
    if(isset($_POST['submit'])){
    
      $email = $_POST['email']; // Die eMail-Adresse, an die das Passwort versendet werden soll
    
        if(empty($_POST['email'])){
    
    // Fehlermeldung ausgeben wenn keine eMail-Adresse eingegeben wurde
    
        echo '<font color=#DF0000>Es wurde keine eMail-Adresse angegeben!</font><br /><br />';
    
      }else{
    
    // Wir überprüfen die eMail-Adresse auf ihre Gültigkeit
    
    if(!eregi("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$",
    
      $_POST['email'])) {
    
        echo '<font color=#DF0000>Ung&uuml;ltige eMail-Adresse!</font><br /><br />';
    
      }else{
    
    // Wir erstellen das Passwort mittels einer Funktion
    
    function pw_erstellen() {
    
      $zeichen = "abcdefghijkmnopqrstuvwxyz023456789ABCDEFGHJKLMNPQRSTUVWXYZ*~-?/\%";
      srand((double)microtime()*1000000);
    
      $i = 0;
      $pass = '' ;
    
    // Das Passwort sollte schon sicher sein und deshalb erstellen wir ein 10 Zeichen langes Passwort
    
      while ($i <= 9) {
    
        $num = rand() % 65;
        $tmp = substr($zeichen, $num, 1);
        $pass = $pass . $tmp;
        $i++;
    
      }
    
    return $pass;
    
    }
    
    $passwort = pw_erstellen();
    
    // Jetzt versenden wir das Passwort an die eingegebene eMail-Adresse
    
         $sender = "deine@email.de"; // Hier sollte natürlich Deine eMail-Adresse oder die Deines Dienstes stehen
         $empfaenger = "$email";  // Die eMail-Adresse, die der User eingegeben hat. Hierhin wird das Passwort geschickt
         $betreff = "Ihr angefordertes Passwort";  // Der Betreff. Den kann man beliebig ändern
         $mailtext = "Hallo!\n\nIhr angefordertes Passwort lautet: $passwort";  // Und das, was in der eMail dann als Text steht einschließlich unseres erstellten Passwortes
    
         mail($empfaenger, $betreff, $mailtext, "From: $sender "); // Mit dieser Funktion wird die eMail dann zusammengesetzt und abschließend versendet
    
    // Jetzt geben wir eine entsprechende Erfolgsmeldung aus
    
           echo '<font color=#007F00>Das Passwort wurde erfolgreich an Ihre eMail-Adresse versendet</font><br /><br />';
          }
        }
      }
    }
    
    echo '
    <b>Passwort zusenden</b>
    <br /><br />
    <form action="" method="POST" />
    <input type="text" name="email" size="30" maxlenght="45" />
    <br /><br />
    <img src="rechen-captcha.php"> <input type="text" name="sicherheitscode" size="5">
    <br /><br />
    <input value="Passwort jetzt zusenden" type="submit" name="submit" />
    </form>
    ';
    
    ?>


    rechen-captcha.php
    <?php
    session_start();
    unset($_SESSION['rechen_captcha_spam']);
    $zahl1 = rand(10,20); //Erste Zahl 10-20
    $zahl2 = rand(1,10);  //Zweite Zahl 1-10
    $operator = rand(1,2); // + oder -
    
    if($operator == "1"){
       $operatorzeichen = " + ";
       $ergebnis = $zahl1 + $zahl2;
    }else{
       $operatorzeichen = " - ";
       $ergebnis = $zahl1 - $zahl2;
    }
    
    function encrypt($string, $key) {
    $result = '';
    for($i=0; $i<strlen($string); $i++) {
       $char = substr($string, $i, 1);
       $keychar = substr($key, ($i % strlen($key))-1, 1);
       $char = chr(ord($char)+ord($keychar));
       $result.=$char;
    }
    return base64_encode($result);
    }
    
    $_SESSION['rechen_captcha_spam'] = encrypt($ergebnis, "29jfkd921"); // Diesen Code sollte man im send_password.php Script und hier anpassen. Es müssen aber beide Codes identisch sein
    $_SESSION['rechen_captcha_spam'] = str_replace("=", "", $_SESSION['rechen_captcha_spam']);
    
    $rechnung = $zahl1.$operatorzeichen.$zahl2." = ?";
    $img = imagecreatetruecolor(80,15);
    $schriftfarbe = imagecolorallocate($img,13,28,91);
    $hintergrund = imagecolorallocate($img,162,162,162);
    imagefill($img,0,0,$hintergrund);
    imagestring($img, 3, 2, 0, $rechnung, $schriftfarbe);
    header("Content-type: image/png");
    imagepng($img);
    imagedestroy($img);
    ?>


    Beide Dateien müssen sich im selben Verzeichnis befinden.

    Gruß Aridian



    Der Beitrag wurde insgesamt 3 mal editiert, zuletzt 25.03.2012 um 01:39 Uhr ...
    >>Die Wahrheit wird nur zu oft, wie man sagt, verdunkelt, aber sie erlischt nie.<<
    Livius
  • -Name-User ist offline
    Mod of the night


    -Name-

    Registriert: 19.04.2007
    Beitraege: 690

    25.03.2012 um 17:15 Uhr

    Hi Adrian,

    ist echt beeindruckend, dass du dir so viel Arbeit gemacht hast!
    Wenn du magst, kannst du dein Tutorial auch unter deinem Benutzernamen hochladen: alice-grafixx.de/submit_tutorial!
    Es erscheint dann bei den anderen PHP/MySQL-Tutorials und wäre somit später leichter zu finden! :)

    lg
    -Name-



  • AridianUser ist offline
    Newbie


    Aridian

    Registriert: 24.03.2012
    Beitraege: 14

    25.03.2012 um 18:35 Uhr

    Servus -Name-,

    naja, soviel Arbeit war das gar nicht. Ich bin dann eher so ein Mensch, der alles am besten perfekt machen will und lieber eine Funktion zuviel als zuwenig einbaut und dann ziehen sich die Scripte in die Länge, denn dann wird man nie fertig, weil man es immer noch ein wenig besser machen kann und will :)

    Ich werde die Tutorials mal hochladen. Ist vielleicht wirklich besser und übersichtlicher dann.

    Gruß Aridian



    >>Die Wahrheit wird nur zu oft, wie man sagt, verdunkelt, aber sie erlischt nie.<<
    Livius

[ 1 ] Seite 1 von 1


Affiliates:   Blue-Graphics  •   Pat DG  •   The Seduction  •   Chibi Graphics  •   Gallery Yuri  •   Colorful Gfx  •   Design Grafixx  • Show all ...
designenlassen.de - Der Design-Marktplatz für Webdesign, Logo-Design, Flyerdesign u.v.m.        ALL-INKL.COM - Webhosting Server Hosting Domain Provider