2016-08-08 17 views
1

Ich habe ein Reset-Passwort-Link, der scheinbar nicht verarbeiten $_GET('variable'). Das Passwort vergisst Form:Passwort zurücksetzen link funktioniert nicht

<?php 
$error = $email = ""; 

if (isset($_POST['email'])) 
    { 
    $email = sanitizeString($_POST['email']); 
    $com_code = md5(uniqid(rand())); 

    if ($email == "") 
     $error = "Not all fields were entered<br>"; 
    else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) 
     $error='Email is invalid'; 
    else 
    { 
     $resultE = queryMySQL("SELECT email FROM users WHERE email='$email'"); 

     if ($resultE->num_rows == 0) 
     { 
     $error = "<span class='error'>Email 
        error</span><br><br>"; 
     }else 
     { 
     queryMysql("UPDATE users SET com_code='$com_code' WHERE email='$email'"); 
     $mail_to = $email; 
     $subject = 'Reset your password '; 
     $body_message = 'Please click on this link to reset password '; 
     $body_message .= '<a href="http://tickets.dundaah.com/tickets/php/edit_profile/reset_pass.php?passkey=$com_code">Activate</a>'; 
     $headers = 'MIME-Version: 1.0' . "\r\n"; 
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
     $mail_status = mail($mail_to, $subject, $body_message, $headers); 
     if(isset($_SESSION['url'])) 
      $url = $_SESSION['url']; 
     else 
      $url = "../../index.php"; 

     header("Location:$url"); 
     } 
    } 
    } 
?> 

Die Reset-Passwort Form:

<?php 
$error = $pass =""; 

    if (isset($_POST['pass'])) 
    { 
    $pass = sanitizeString($_POST['pass']); 

    $salt1 = "qm&h*"; 
    $salt2 = "[email protected]"; 
    $token = hash('ripemd128', "$salt1$pass$salt2"); 
    $passkey = $_GET['passkey']; 

    if ($pass == "") 
     $error = "Enter all fields"; 
    //put if else statements here 
    else if (preg_match("/[^a-zA-Z0-9_-]/", $pass)){ 
     $error='Remove spaces,numbers,special characters'; 
    } 
    else 
    { 
     $resultpassw = queryMysql("SELECT * FROM users WHERE com_code='$passkey' "); 

     if ($resultpassw->num_rows == 0) 
     $error = "&nbsp;&#x2718; Confirmation not sent"; 
     else 
     { 
     queryMysql("UPDATE users SET pass='$token', updated=CURRENT_TIMESTAMP WHERE com_code='$passkey'"); 

     header("Location:../../profile.php"); 
     } 
    } 
    } 
?> 

Der Fehler, der auftritt, hält, ist die ‚Bestätigung nicht gesendet‘ impliziert, dass die Tabelle ‚Benutzer‘ keine com_code zuvor eingefügten, aber Wenn ich den Tisch über phpmyadmin anschaue, ist der com_code da. Wo ich bin gehe ich falsch

Antwort

0

Denken Sie, ich werde nur Sitzungen verwenden. forgot_pass.php:

$com_code = md5(uniqid(rand())); 
 
$_SESSION["com_code_sesh"] = $com_code;

reset_pass.php:

$passkey = $_SESSION["com_code_sesh"];

1

In vergessen Passwortform unten versuchen.

<?php 
    $error = $email = ""; 

if (isset($_POST['email'])) 
{ 
$email = sanitizeString($_POST['email']); 
$com_code = md5(uniqid(rand())); 

if ($email == "") 
    $error = "Not all fields were entered<br>"; 
else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) 
    $error='Email is invalid'; 
else 
{ 
    $resultE = queryMySQL("SELECT email FROM users WHERE email='$email'"); 

    if ($resultE->num_rows == 0) 
    { 
    $error = "<span class='error'>Email 
       error</span><br><br>"; 
    }else 
    { 
    queryMysql("UPDATE users SET com_code='$com_code' WHERE email='$email'"); 
    $mail_to = $email; 
    $subject = 'Reset your password '; 
    $body_message = 'Please click on this link to reset password '; 
    $body_message .= '<a href="http://tickets.dundaah.com/tickets/php/edit_profile/reset_pass.php?passkey='.$com_code.'">Activate</a>'; 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    $mail_status = mail($mail_to, $subject, $body_message, $headers); 
    if(isset($_SESSION['url'])) 
     $url = $_SESSION['url']; 
    else 
     $url = "../../index.php"; 

    header("Location:$url"); 
    } 
} 
} 
?> 

Ich habe hier eine Zeile geändert.

$body_message .= '<a href="http://tickets.dundaah.com/tickets/php/edit_profile/reset_pass.php?passkey='.$com_code.'">Activate</a>'; 

wie $ com_code ist dynamischer Wert, so dass Sie es in Art und Weise übergeben müssen, so php kann seinen Wert holen, und nehmen Sie es nicht als statischer Wert.

+0

nicht immer noch nicht funktioniert, gleichen Fehler –

+0

Erhalten Sie alles in $ _POST [‘ bestehen'] ? Versuchen Sie $ _GET ['Hauptschlüssel'] oben, wenn Bedingung. –

Verwandte Themen