사용자 입력 암호를 데이터베이스에 저장된 암호와 일치 시키려고합니다. 지금까지 그것은 완벽하게 잘 작동했다 그러나 갑자기 이상한 행동을 시작했다.간단한 === 일치하지 않는 PHP
오류가 표시되기 시작한 스크립트 정보가 정확하지만 잘못된 전자 메일 ID 또는 암호. 새로 고침 창 $ _Session 변수 (사용자가 로그인되었음을 의미)에 저장된 사용자 이름이 표시된 오류가 표시된 직후.
하지만 사용자가 $ _session에 사용자 이름을 저장하는 시점까지 도달하지 않은 경우 어떻게 할 수 있습니까?
어쨌든, 나는 $ _session이 완전히 파괴되지 않았다고 생각하면서 스크립트의 시작 부분에서 세션 변수를 설정 해제하려고 시도했지만 그 역시 효과가 없었습니다.
나는 strcmp를 사용하여 $ check_password === $ row [ 'password']에서 이미 테스트했지만 성공하지 못했습니다. 나는 또한 "=="연산자로 이것을 시험했지만 행운은 없었다.
놀랍게도, 내가 localhost에서이 작업을 시도하면 문제가 없지만 서버에서 언급 한대로 오류가 발생합니다.
오류 로그를 확인했지만 아무 것도 없었습니다. 어떤 단서, 무엇이 원인이 무엇입니까?
foreach($result as $row)
{
$pass = hash('sha256', $_POST['password'] . $row['salt']);
for($round = 0; $round < 65536; $round++) { $check_password = hash('sha256', $pass . $row['salt']); }
if($check_password===$row['password'])
{
// check if e-mail verification has been done or not
if(strcmp($row['activation'],"Active")==0)
{
$_SESSION['username'] = $row['username'];
$response['status'] = 'success';
$response['message'] = 'Login successful.';
}
else
{
$response['status'] = 'failure';
$response['message'] = 'Your Account is Not verified Yet. Kindly verify your account via Login panel Verify Account link.';
}
}
else
{
$response['status'] = 'failure';
$response['message'] = 'Invalid Email id or password.'; <--- Error point
}
}
'var_dump ($ check_password, $ row [ 'password'])'- 그것들은 같은가요? 같은 양의 문자? – aynber
예, 둘 다 같습니다. 심지어 콘솔에 "로그인 성공"메시지가 표시되었습니다. –