2016-07-11 8 views
0

パスワードリセット機能を実装しようとしています。

http://www.website.com/passwordreset.php?code=$code&email=$email 

メール、SQL更新やリンクの詳細は罰金送信されている。ここに私のコードが送信されている

のindex.php

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method = "POST"> 

     <input type = "email" name = "recover_email" placeholder = "Enter Your Email Address" required/>      
     <input type = "submit" name= "recover" value = "Recover"/> 

</form> 

<?php  

    if(isset($_POST['recover']) && $_POST['recover'] == 'Recover'){ 
     $email = $_POST['recover_email']; 

     $sql = $db->prepare("SELECT * from registered_users where email = ?"); 
     $sql->bind_param("s",$email); 
     $sql->execute(); 
     $sql = $sql->get_result(); 

     if(($getRowCount = $sql->num_rows) == 1){ 
       $rowName = $sql->fetch_assoc(); 

       $code = rand(1000, 1000000); 

     mail(); 

$updateCode = $db->prepare("UPDATE registered_users SET passwordResetCode = ? where email=?"); 
       $updateCode->bind_param("is",$code,$email); 
       $updateCode->execute(); 
       $updateCodeResult = $updateCode->get_result(); 
      } 

    }else if(!(($getRowCount = $sql->num_rows) == 1) && $email != ''){ 
     //do something 
     } 
    } 

    ?> 

メール本文です。

私は次のページのリンクをクリックしてパスワードを更新しようとしています。

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method = "POST"> 

    <table cellpadding = "5%" style="width:70%"> 
     <tr> 
      <td> 
      <input type = "password" id="newPassword" name = "newPassword" placeholder = "New Password" minlength="8" required /> 
      </td> 
     </tr> 

     <tr> 
      <td> 
      <input type = "password" id= "confirmnewPassword" name = "confirmnewPassword" placeholder = "Confirm New Password" minlength="8" required /> 
      </td>      
     </tr> 

     <tr> 
      <td> 
      <input type = "submit" name= "setNewPassword" value = "Set Password"/> 
      </td> 
     </tr> 

    </table> 
    </form> 

<?php 

    if(isset($_GET['code'])){ 

     $getEmail = $_GET['email']; 
     $getCode = $_GET['code']; 

     if(isset($_POST['setNewPassword']) && $_POST['setNewPassword'] == 'Set Password'){ 

     $newPassword = $_POST['newPassword']; 
     $confirmNewPassword = $_POST['confirmnewPassword'];   

     if($newPassword == $confirmNewPassword){ 

     $updatePassword = $db->prepare("UPDATE registered_users SET password = ?, re_password = ? where email = ? and passwordResetCode = ?"); 
     $updatePassword->bind_param("sssi",$newPassword,$confirmNewPassword,$getEmail,$getCode); 
     $updatePassword->execute();  

     }else if($newPassword != $confirmNewPassword){ 
     } 
     }   
    } 
    ?> 

passwordreset.php

私はこのコードから、すべての$ _GET機能を削除した場合、それは正常に動作しますが、$ _GETは全くのURLから私の電子メールとコードをフェッチしていないようです。

+1

使用する$ _SERVER [ 'REQUEST_URI'] [ 'PHP_SELF']?または前のもの? –

+0

で代わりに$ _SERVERの –

+0

On passwordreset.php –

答えて

0

スクリプトは次の処理を行います。 1.引数を指定したパスワードリセットページへのリダイレクト。ユーザーがそれにアクセスする、彼の新しいパスワードをポストするとき 2.Getパスワードをリセットするポスト(ただし、引数を取得doesntのは) あなたはユーザー投稿まで、新しいパスワードを取得

if(isset($_GET["code"])){ 
session_start(); 
$_SESSION["code"]=$_GET["code"]; 
} 

を保存する必要があります。

session_start(); 
$code=$_SESSION["code"]; 
passwordreset.phpページでpasswordreset.php
関連する問題