내 로그인 시스템 md5가 사용자 이름을 해시하고 password_hash가 암호를 해시합니다. 따라서 사용자 이름을 기반으로 행을 가져올 수 없습니까? 내 고객은 다음 이메일 주소를 입력합니다. 그런 다음 분실 한 비밀번호 변경 옵션을 제공합니다. 그러나 동일한 유형의 해시를 사용하여 필드를 업데이트 할 때 전자 메일 필드를 식별자로 사용하면 새 암호가 올바르지 않습니까? 다음은 나의 업데이트 샘플이지만 하드 코딩 된 삽화입니다 (추신 : 이건 작동하지 않나요?).Password_hash 테이블 업데이트 후 올바르지 않음
$em = '[email protected]';
$em1 = base64_encode($em);
$ps = 'some password';
$password_hash = password_hash($ps, PASSWORD_BCRYPT);
$qu = "UPADTE table SET field = '$password_hash' WHERE email = '$em1'";
$res = mysqli_query($link, $qu);
편집 문제는 사용자가 존재하는지 확인하고 적극적으로 계정의 소유자로 자신을 식별하는 이메일을 발송 한 후 내 코드를 포함합니다. 다음은 최종 프로세서 페이지입니다.
if(EMPTY($_POST[psw1])) {
echo "New password must be supplied"; }
elseif(EMPTY($_POST[psw2])) {
echo "Repeat password must be entered"; }
elseif($_POST[psw1] != $_POST[psw2]) {
echo "Passwords entered do not match";
} elseif(EMPTY($_POST[eu])) {
echo "Essential data is missing in order to complete this process.";
}
elseif (strlen($_POST['psw1']) < 6) {
echo "Password must be at least six characters in length";
}
elseif (preg_replace("/[^a-zA-Z0-9]/", "", $_POST['psw1']) != $_POST['psw1']) {
echo "Password may only contain letters and numbers";
}
elseif(!EMPTY($_POST[psw1]) && !EMPTY($_POST[psw2]) && !EMPTY($_POST[eu]) && $_POST[pw1] == $_POST[pw2]) {
include "conn.php";
echo "$_POST[eu]<br />";
$eu = $_POST[eu];
$pdw = password_hash($_POST[pw1], PASSWORD_BCRYPT);
$sq = mysqli_query($link, "UPDATE str1 SET pf = '$pdw', cu_pw_status = '2' WHERE cu_type = '$eu'");
echo "Your password has been changed, you may now login <a href='login2.php'>Login</a>";
} else {
echo "오류가 발생했습니다. 사이트 관리자에게 문의하십시오."; }
안녕은, 어떤 테이블이 참조 위해이었다, 열 또는 필드 PF라고, str1이 호출되지 않습니다. 암호가 업데이트되었지만 올바르지 않습니까? – Szue