응용 프로그램을 만드는 중입니다 ... 모든게 지금까지는 괜찮습니다. 내 등록 시스템에서는 준비된 문과 암호 해싱을 사용했으며 양식 입력란에서도 사용자 입력의 유효성을 검사하려고했습니다. 이 시스템을 완료하려면 사용자가 새로운 비밀번호를 요청할 수 있음을 의미하는 비밀번호 찾기 시스템을 만들어야합니다.비밀번호를 잊어 버리지 않았습니다 더하기 비밀번호 해시
무엇을했는지는 모든 파일이 들어있는 테스트 사이트가있어서 프로덕션 사이트에 추가하기 전에 작동하는지 테스트 할 수 있습니다.
잊어 버린 암호로 mysqli를 사용하면 모든 준비가 완료됩니다. 준비된 문을 배우고이 방법을 사용하면 판단하지 않아도됩니다.
내 분실 암호로 인해 문제가 발생하면 암호가 변경되면 업데이트되지 않습니다. 이 스크린 샷을 참조하십시오 : http://prntscr.com/d5hage
또한 위에서 언급 한 바와 같이 http://prntscr.com/d5hbg1을 내 등록 정보에 입력하고 로그인을 확인하십시오. 그러나 잊어 버린 암호에서 어떻게 해싱을 사용했는지, 어떻게 업데이트합니까? 아래의 코드에서 md5는 깨 졌음을 알고 있습니다. 아래 코드를 모두 작성하십시오. 나는 희망
Reset_Password.php
<?php
// include connection
require_once('include/connection.php');
if(isset($_POST['submit'])){
$user_id = base64_decode($_GET['encrypt']);
$passnew = password_hash($password, $_POST['new_password'], PASSWORD_BCRYPT, array('cost' => 12));
$sql = "UPDATE `olami560_test`.`user` SET `password` =? WHERE `user`.`id` =?";
$stmt = $con->prepare($sql);
$stmt->bind_param('si',$passnew, $user_id);
$stmt->execute();
if ($stmt->errno) {
echo "FAILURE!!! " . $stmt->error;
}
else echo "Password Changed Successfully.Click on link to login <a href='http://www.olaskee.co.uk/project/allocation/progress/index.php'>Login</a>{$stmt->affected_rows} rows";
$stmt->close();
}
?>
<form method="post" action="<?php echo $_SERVER['HTTP_REFERER']; ?>" >
<label>New Password</label>
<input type="password" name="new_password"/>
<input type="submit" name="submit" value="Reset" />
</form>
forgot_password.php
<?php
// include connection
require_once('include/connection.php');
if(isset($_GET) && !empty($_GET['email'])){
$email = mysqli_real_escape_string($con,$_GET['email']);
$query = "SELECT id
FROM `user`
WHERE `user_name` LIKE '".$email."'
OR `email` LIKE '".$email."'";
$result = mysqli_query($con,$query);
$Results = mysqli_fetch_array($result);
if(count($Results)>=1)
{
$query2 = "SELECT email
FROM `user`
WHERE `user_name` LIKE '".$email."'
OR `email` LIKE '".$email."'";
$result2 = mysqli_query($con,$query2);
$emailvalue = mysqli_fetch_array($result2);
//$token = md5(uniqid(rand(),true));
//$encrypt = md5($Results['id']);
$encrypt = base64_encode($Results['id']);
$message = "Your password reset link send to your e-mail address.";
$to = $emailvalue['email'];
$subject="Forget Password";
$from = '[email protected]';
$body= 'Hi, <br/> User <br/>You Requested for Reset Password. <br><br>http://www.olaskee.co.uk/project/allocation/tms/reset_password.php?token='.$token.'&encrypt='.$encrypt.'&action=reset<br/> <br/>--<br>.olaskee<br>';
$headers = "From: " . strip_tags($from) . "\r\n";
$headers .= "Reply-To: ". strip_tags($from) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
mail($to,$subject,$body,$headers);
echo $message;
}
else
{
$message = "Account not found please signup now!!";
echo $message;
}
}
?>
당신이 이해하기에 충분한 설명을 제공합니다. 모든 입력에 감사드립니다.
귀하의 스크린 샷은'password_hash'를 사용하고 있습니다.이 기능에도 똑같은 기능을 사용하지 않으시겠습니까? – apokryfos
왜 내 투표가 실패 했습니까? 내 요청이나 질문에 문제가있는 것은 아닙니까? 의견을 말하십시오.감사합니다 – Olaskee
내가 사용하는 주목할만한 일이 난 여전히 0 행을 업데이 트 – Olaskee