2016-08-22 3 views
0

사용자 입력 암호를 ​​데이터베이스에 저장된 암호와 일치 시키려고합니다. 지금까지 그것은 완벽하게 잘 작동했다 그러나 갑자기 이상한 행동을 시작했다.간단한 === 일치하지 않는 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   
    } 
} 

동일한 암호의 이미지 추가. enter image description here

+2

'var_dump ($ check_password, $ row [ 'password'])'- 그것들은 같은가요? 같은 양의 문자? – aynber

+0

예, 둘 다 같습니다. 심지어 콘솔에 "로그인 성공"메시지가 표시되었습니다. –

답변

0

이 문제를 해결하는 올바른 방법인지는 모르지만 어떻게 든이 트릭을 수행했습니다.

$response['message'] = 'Login successful.'; 다음 줄을 추가하면 문제가 해결됩니다.

echo json_encode($response); 
exit; 

는하지만 난 여전히 성공 메시지를 로그인 할 때까지 문이 성공적으로 실행 된 경우 때 'Invalid Email id or password.' 오류가 표시되었다 어떻게 이해할 수 없습니다입니다.

관련 문제