2016-08-08 2 views
1

У меня есть ссылка для сброса пароля, которая, похоже, не будет обрабатываться $_GET('variable'). Забыли форма пароля:Сброс пароля не работает

<?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"); 
     } 
    } 
    } 
?> 

Форма сброс пароль:

<?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"); 
     } 
    } 
    } 
?> 

ошибка, которая держит происходит это «подтверждение не отправлено» это означает, что таблица «пользователи» не имеет com_code вставленное ранее, но когда я смотрю на таблицу через phpmyadmin, com_code есть. Где я ошибаюсь

ответ

0

Думаю, что я просто буду использовать сеансы. forgot_pass.php:

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

reset_pass.php:

$passkey = $_SESSION["com_code_sesh"];

1

В забытой форме passaword попробуйте ниже.

<?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"); 
    } 
} 
} 
?> 

Я изменил одну строчку здесь.

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

В $ com_code это динамическое значение, так что вы должны передать его в пути, так что PHP может принести свою ценность, а не принимать его как статическое значение.

+0

нет до сих пор не работает, та же ошибка –

+0

Вы получаете что-нибудь в $ _POST [» проходить'] ? Попробуйте распечатать $ _GET ['passkey'] выше, если условие. –