فراموشی رمز عبور

jalaladdin

Active Member
برای قسمت فراموشی رمز عبور از این کد استفاده میکنم اما پسوردی که به ایمیلم فرستاده میشود بصورت md5 میباشد یعنی همانطوری که در پایگاه ذخیره شده است وقتی همین رمز برای قسمت ورود به وب سایت استفاده میکنم مرورگر پیغام رمز عبور اشتباه است را میدهد
PHP:
function makeRandomPassword() { 
          $salt = "abchefghjkmnpqrstuvwxyz0123456789"; 
          srand((double)microtime()*1000000);  
          $i = 0; 
          while ($i <= 7) { 
                $num = rand() % 33; 
                $tmp = substr($salt, $num, 1); 
                $pass = $pass . $tmp; 
                $i++; 
          } 
          return $pass; 
    } 
    $password = makeRandomPassword(); 
    $password = md5($password); 
     
    $sql = mysql_query("UPDATE users SET password='$password'  
                WHERE email='$email'"); 
     
    $subject = "پسورد شما"; 
    $message = "سلام پسورد جدید به ایملتان فرستادیم. 
     
    New Password: $password 
     
    
    Thanks! 
    Site admin 
     
   "; 
   
   
   
   
   $result=mail($email, $subject, $message, "From:  سایت نامWebmaster<[email protected]>\n 
   X-Mailer: PHP/" . phpversion()); 
   if($result){
   echo "پسورد به ایمیلتان فرستاده شد لطفا ایمیل خود راچک کنید!<br />"; }
else{
    echo "خطایی در ارسال پسورد به ایمیلتان رخ داده است "; }
 } 
 
}
 
آخرین ویرایش:

omid_p30

Member
برای قسمت فراموشی رمز عبور از این کد استفاده میکنم اما پسوردی که به ایمیلم فرستاده میشود بصورت md5 میباشد یعنی همانطوری که در پایگاه ذخیره شده است وقتی همین رمز برای قسمت ورود به وب سایت استفاده میکنم مرورگر پیغام رمز عبور اشتباه است را میدهد
PHP:
function makeRandomPassword() { 
          $salt = "abchefghjkmnpqrstuvwxyz0123456789"; 
          srand((double)microtime()*1000000);  
          $i = 0; 
          while ($i <= 7) { 
                $num = rand() % 33; 
                $tmp = substr($salt, $num, 1); 
                $pass = $pass . $tmp; 
                $i++; 
          } 
          return $pass; 
    } 
    $password = makeRandomPassword(); 
    $password = md5($password); 
     
    $sql = mysql_query("UPDATE users SET password='$password'  
                WHERE email='$email'"); 
     
    $subject = "پسورد شما"; 
    $message = "سلام پسورد جدید به ایملتان فرستادیم. 
     
    New Password: $password 
     
    
    Thanks! 
    Site admin 
     
   "; 
   
   
   
   
   $result=mail($email, $subject, $message, "From:  سایت نامWebmaster<[email protected]>\n 
   X-Mailer: PHP/" . phpversion()); 
   if($result){
   echo "پسورد به ایمیلتان فرستاده شد لطفا ایمیل خود راچک کنید!<br />"; }
else{
    echo "خطایی در ارسال پسورد به ایمیلتان رخ داده است "; }
 } 
 
}

خوب شما پسورد رمزگذاری شده رو دوباره در متغییر $password قرار میدیدن.
کد اصلاح شده:
PHP:
function makeRandomPassword() { 
          $salt = "abchefghjkmnpqrstuvwxyz0123456789"; 
          srand((double)microtime()*1000000);  
          $i = 0; 
          while ($i <= 7) { 
                $num = rand() % 33; 
                $tmp = substr($salt, $num, 1); 
                $pass = $pass . $tmp; 
                $i++; 
          } 
          return $pass; 
    } 
    $password = makeRandomPassword(); 
    $encrypted_password = md5($password); 
     
    $sql = mysql_query("UPDATE users SET password='$password'  
                WHERE email='$email'"); 
     
    $subject = "پسورد شما"; 
    $message = "سلام پسورد جدید به ایملتان فرستادیم. 
     
    New Password: $password 
     
    
    Thanks! 
    Site admin 
     
   "; 
   
   
   
   
   $result=mail($email, $subject, $message, "From:  سایت نامWebmaster<[email protected]>\n 
   X-Mailer: PHP/" . phpversion()); 
   if($result){
   echo "پسورد به ایمیلتان فرستاده شد لطفا ایمیل خود راچک کنید!<br />"; }
else{
    echo "خطایی در ارسال پسورد به ایمیلتان رخ داده است "; }
 } 
 
}
 

jalaladdin

Active Member
خوب شما پسورد رمزگذاری شده رو دوباره در متغییر $password قرار میدیدن.
کد اصلاح شده:
PHP:
function makerandompassword() { 
          $salt = "abchefghjkmnpqrstuvwxyz0123456789"; 
          srand((double)microtime()*1000000);  
          $i = 0; 
          while ($i <= 7) { 
                $num = rand() % 33; 
                $tmp = substr($salt, $num, 1); 
                $pass = $pass . $tmp; 
                $i++; 
          } 
          return $pass; 
    } 
    $password = makerandompassword(); 
    $encrypted_password = md5($password); 
     
    $sql = mysql_query("update users set password='$password'  
                where email='$email'"); 
     
    $subject = "پسورد شما"; 
    $message = "سلام پسورد جدید به ایملتان فرستادیم. 
     
    New password: $password 
     
    
    thanks! 
    Site admin 
     
   "; 
   
   
   
   
   $result=mail($email, $subject, $message, "from:  سایت نامwebmaster<[email protected]>\n 
   x-mailer: Php/" . Phpversion()); 
   if($result){
   echo "پسورد به ایمیلتان فرستاده شد لطفا ایمیل خود راچک کنید!<br />"; }
else{
    echo "خطایی در ارسال پسورد به ایمیلتان رخ داده است "; }
 } 
 
}
تغیری در کد شما نمی بینم
 

omid_p30

Member
بعد از تولید رمز اون رو با تابع md5 رمزگذاری کردی و داخل خود متغیر $password قرار دادی. به شکل زیر تغییر بده
PHP:
  $encrypted_password = md5($password);
 
آخرین ویرایش:

omid_p30

Member
برای قسمت فراموشی رمز عبور از این کد استفاده میکنم اما پسوردی که به ایمیلم فرستاده میشود بصورت md5 میباشد یعنی همانطوری که در پایگاه ذخیره شده است وقتی همین رمز برای قسمت ورود به وب سایت استفاده میکنم مرورگر پیغام رمز عبور اشتباه است را میدهد
PHP:
function makeRandomPassword() { 
          $salt = "abchefghjkmnpqrstuvwxyz0123456789"; 
          srand((double)microtime()*1000000);  
          $i = 0; 
          while ($i <= 7) { 
                $num = rand() % 33; 
                $tmp = substr($salt, $num, 1); 
                $pass = $pass . $tmp; 
                $i++; 
          } 
          return $pass; 
    } 
    $password = makeRandomPassword(); 
    $password = md5($password); 
     
    $sql = mysql_query("UPDATE users SET password='$password'  
                WHERE email='$email'"); 
     
    $subject = "پسورد شما"; 
    $message = "سلام پسورد جدید به ایملتان فرستادیم. 
     
    New Password: $password 
     
    
    Thanks! 
    Site admin 
     
   "; 
   
   
   
   
   $result=mail($email, $subject, $message, "From:  سایت نامWebmaster<[email protected]>\n 
   X-Mailer: PHP/" . phpversion()); 
   if($result){
   echo "پسورد به ایمیلتان فرستاده شد لطفا ایمیل خود راچک کنید!<br />"; }
else{
    echo "خطایی در ارسال پسورد به ایمیلتان رخ داده است "; }
 } 
 
}
بیین شما یه متغییر داری به نام password که رمز رندوم تولید شده توسط تابع makeRandomPassword رو داخل اون میریزی. بعدش اون رو با تابع md5 رمزگذاری می‌کنی و باز هم داخل متغییر password میریزی. شما باید بعد از رمزگذاری با تابع md5 اون رو داخل یه متغییر دیگه بریزی. من نام متغییر رو عوض کردم. متغییر password رو به encrypted_password تغییر دادم. یعنی این قسمت از کد شما
PHP:
    $password = makeRandomPassword(); 
    $password = md5($password);
به این تغییر کرد
PHP:
    $password = makeRandomPassword(); 
    $encrypted_password = md5($password);
البته در دستور sql هم باید نام متغییر رو تغییر بدی
یعنی این دستور شما
PHP:
 $sql = mysql_query("UPDATE users SET password='$password'  
                WHERE email='$email'");
به این تغییر می‌کنه.

PHP:
 $sql = mysql_query("UPDATE users SET password='$encrypted_password'  
                WHERE email='$email'");
در واقع شما رمزی که رندم تولید کردی رو برای کاربر ایمیل نمی‌کردی. بلکه اون رو رمزگذاری می‌کردی بعد میفرستادی برای کاربر. با تغییر من رمزی که رندم تولید کردی فرستاده میشه.
 

جدیدترین ارسال ها

بالا