2016-07-01 2 views
-1

Ich habe eine "Passwort vergessen" -Seite gemacht, wenn der Benutzer seine emailid übermittelt, dann E-Mails aus der Datenbank und wenn E-Mail existiert dann wird das Passwort an diese E-Mail gesendet. Die mail() Funktion wird verwendet, um die E-Mail zu senden. Wenn ich abschicke, erscheint die NachrichtEmpfangen von E-Mails nicht mit mail() Funktion

Passwort an Ihre E-Mail-ID gesendet. Bitte überprüfen Sie Ihre E-Mail jetzt!

Aber Nachricht geht nicht in der Posteingang oder SPAM. Mein Hosting ist Linux Hosting.

<form method="post" id="loginForm" name="loginForm" action="" onsubmit="return executeOnSubmit();"> 
    <div class="col-lg-4" style="text-align:right;"> 
     Email ID&nbsp;<span style="color:red">*</span> 
    </div> 
    <div class="col-lg-8"> 
     <input type="email" class="form-control" value="<?php echo $email; ?>" name="email" placeholder="Enter email address" required /> 
    </div> 
    <div style="clear:both;"><br /></div> 
    <div class="col-lg-4"></div> 
    <div class="col-lg-8 pull-right"> 
     <input type="submit" class="btn btn-success" value="Submit" name="submit" /> 
    </div> 
</form> 

<?php 
$email = ""; 
if(isset($_POST["submit"])) 
{ 
    $email = $_POST["email"]; 
    $res=mysql_query("select * from mainaccount where email='$email'") or die(mysql_error()); 
    if($row = mysql_fetch_array($res)) 
    { 
     extract($row); 
     $msg = "Hi User,\n\nEmail: ".$email."\n\nPassword: ".$password; 
     $smail=mail($email,"Scholarship Forgot Password!","Forgot Password Details: ",$password); 
     if(!$smail) 
     { 
      echo "<span style='color:red;'>&nbsp;&mdash;&nbsp;Mail Not Send!</span>"; 
     } 
     else 
     { 
      echo "&nbsp;&mdash;&nbsp;Password sent to your email id. Please check your email now!"; 
     } 
    } 
    else 
    { 
     echo "<span style='color:red;'>Email id does not match!</span>"; 
    } 
} 
?> 
+3

Pflichtlektüre: [? Warum sollte ich mysql_ verwenden nicht * Funktionen in PHP] (https://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in- php), [Wie kann ich SQL-Injektion in PHP verhindern?] (https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php), https: // xkcd .com/327 /, http://plaintextoffenders.com/about/ (Besuchen Sie auch nie die Seite, auf der Sie diesen Code aus den 90er Jahren wiederbekommen haben). –

+2

Randnotiz, Passwörter nicht als Klartext speichern. Sie müssen dem Benutzer das Zurücksetzen des Kennworts ermöglichen, es nicht abrufen. Schau dir 'password_hash()' an. – Rasclatt

+0

Überprüfen Sie Ihre Argumente: 'mail (string $ zu, string $ Betreff, string $ Nachricht [, string $ additional_headers [, string $ zusätzliche_Parameter]])' – Progrock

Antwort

1

Sie können PHPMailer verwenden. Laden Sie die Bibliothek von https://github.com/PHPMailer/PHPMailer herunter.

<?php 

function send_mail($email, $recipient_name, $subject, $message='') 
{ 
    require("phpmailer/class.phpmailer.php"); 

    $mail = new PHPMailer(); 

    $mail->CharSet="utf-8"; 
    $mail->IsSMTP();          // set mailer to use SMTP 
    $mail->Host = "mail.example.com"; // specify main and backup server 
    $mail->SMTPAuth = true;  // turn on SMTP authentication 
    $mail->Username = "myusername"; // SMTP username 
    $mail->Password = "[email protected]"; // SMTP password 

    $mail->From = "[email protected]"; 
    $mail->FromName = "System-Ad"; 
    $mail->AddAddress($email, $recipient_name); 

    $mail->WordWrap = 50;         // set word wrap to 50 characters 
    $mail->IsHTML(true);         // set email format to HTML (true) or plain text (false) 

    $mail->Subject = $subject; 
    $mail->Body = $message; 
    $mail->AltBody = "This is the body in plain text for non-HTML mail clients";  
    // $mail->AddEmbeddedImage('images/logo.png', 'logo', 'logo.png'); 
    //$mail->addAttachment('files/file.xlsx'); 

    if(!$mail->Send()) 
    { 
     return false; 
    } 

    return true; 

} 


$email = ""; 
if(isset($_POST["submit"])) 
{ 
    $email = $_POST["email"]; 
    $res=mysql_query("select * from mainaccount where email='$email'") or die(mysql_error()); 
    if($row = mysql_fetch_array($res)) 
    { 
     extract($row); 
     $msg = "Hi User,\n\nEmail: ".$email."\n\nPassword: ".$password; 
     $smail= send_mail($email,"User name","Scholarship Forgot Password!",msg); 
     if(!$smail) 
     { 
      echo "<span style='color:red;'>&nbsp;&mdash;&nbsp;Mail Not Send!</span>"; 
     } 
     else 
     { 
      echo "&nbsp;&mdash;&nbsp;Password sent to your email id. Please check your email now!"; 
     } 
    } 
    else 
    { 
     echo "<span style='color:red;'>Email id does not match!</span>"; 
    } 
} 
?> 
+0

Sie könnten 'foo' Mailer verwenden. Listing alternative Software und Bibliotheken könnte anstrengend werden. Warum hilft hier der PhpMailer? – Progrock

Verwandte Themen