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 Tutorialwnsche durchgesehen und von einem User wurde gewnscht, 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 selbsterklrend 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 fr Alice-Grafixx.de
      *
      * Dieser Code ist Freeware und darf beliebig eingesetzt werden
      */
    
    
    // Das Script erst ausfhren, 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 berprfen die eMail-Adresse auf ihre Gltigkeit
    
    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 natrlich 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 einschlielich unseres erstellten Passwortes
    
         mail($empfaenger, $betreff, $mailtext, "From: $sender "); // Mit dieser Funktion wird die eMail dann zusammengesetzt und abschlieend 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 fr Alice-Grafixx.de
      *
      * Dieser Code ist Freeware und darf beliebig eingesetzt werden
      */
    
    // Wir starten die Session fr 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 mssen 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 ausfhren, 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 berprfen die eMail-Adresse auf ihre Gltigkeit
    
    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 natrlich 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 einschlielich unseres erstellten Passwortes
    
         mail($empfaenger, $betreff, $mailtext, "From: $sender "); // Mit dieser Funktion wird die eMail dann zusammengesetzt und abschlieend 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 mssen 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 mssen 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: 688

    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 wre somit spter 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 Lnge, 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


       ALL-INKL.COM - Webhosting Server Hosting Domain Provider