0
비밀번호 재설정 기능을 구현하려고합니다. 여기
<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
}
}
?>
이메일 본체가 전송되는
index.php를 내 코드입니다 :
http://www.website.com/passwordreset.php?code=$code&email=$email
메일, SQL 업데이트 및 링크 정보는 잘 전송되고있다.
이제 내 다음 페이지의 링크를 클릭하여 암호를 업데이트하려고합니다.
passwordreset.php는이 코드에서 모든 $의 _GET 기능을 제거하면
<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){
}
}
}
?>
, 그것을 잘 작동하지만, $ _GET 전혀 URL에서 내 이메일과 코드를 가져 오지 않는 것 같다 .
사용 $의 _SERVER 대신에 $ _SERVER의 [ 'REQUEST_URI'] [ 'PHP_SELF']를 passwordreset.php 페이지 passwordreset.php –
에서? 또는 이전 하나? –
On passwordreset.php –