2012-04-10 2 views
1

어떤 이유로 PHP 로그인 스크립트가 "잘못된 전자 메일/암호 조합"을 계속 반환하지만 올바른 전자 메일과 암호를 입력하고 있음을 알고 있습니다. 누구든지 내가 잘못하고있는 것을 볼 수 있습니까?중첩 된 경우 이해하기 다른 구문

<?php 

$email= $_POST['email']; 
$password= $_POST['password']; 

if (!empty($email) && !empty($password)) { 

    $connect= mysqli_connect("localhost", "root", "", "si") or die('error connecting with the database'); 
    $query= "SELECT user_id, email, password FROM users WHERE email='$email' AND    
    password='$password'"; 
    $result= mysqli_query($connect, $query) or die('error with query'); 

    if (mysqli_num_rows($result) == 1) { 
     $row= mysqli_fetch_array($result); 
     setcookie('user_id', $row['user_id']); 
     echo "you are now logged in"; 
    } else { 
     echo "invalid username/password combination"; 
    } 

} else { 
    echo" you must fill out both username and password"; 
} 

?> 
+1

들여 쓰기가 없으면 코드를 이해하기가 매우 어렵습니다. – dqhendricks

+0

@dqhendricks 방금 편집했습니다. :-) –

+0

@dqhendricks 그것은 소스에서 괜찮습니다. 그래서 그냥 표준이 아닌 4 칸으로 처리합니다. – tobyodavies

답변

1

당신이 mysqli_num_rows ($result)1 동일하지 않을 때 ... 난 당신이해야한다고 생각 무엇 usernamepassword이 데이터베이스에 직접 존재하는 경우 확인하는 것을 점점 케어 ..... 그 유일한 논리적 인 이유는 당신은 여전히 ​​추가 문제가있는 경우 스크립트에서 왜, 제가이 말을 전환 할

+0

을 ... :-) 위해서 var_dump ($ 쿼리)와 위해서 var_dump (mysqli_num_rows ($ 결과)) –

+0

두 개 이상의 사용자 이름과 암호를 사용할 수 없지만'if (mysqli_num_rows ($ result)> 0)'오류가 어디서 발생 하는지를 확인하기 위해 – Baba

2

알려 invalid username/password combination

을 받고해야

if (mysqli_num_rows($result) > 0) 

그러나 그 외의 코드는 제대로 작동하는 것처럼 보입니다. $ _POST 변수에 포함해야한다고 생각하는 변수가 포함되어 있습니까? 이 사용자/패스 조합이 데이터베이스에 있는지 확인하십시오?

2

코드가 정상적으로 보입니다. 다음을 확인합니다.

쿼리가 작동하는지 확인하십시오. 쿼리를 에코하여 DB 프로그램의 데이터베이스에서 실행하고 결과가 무엇인지 확인하십시오.

는 이메일/암호 조합에 1 개 이상의 사용자가 없습니다 있는지 확인하십시오 - 그것은 당신의 카운트 검사를 놈 것입니다.

확인 세부하여 게시하고이 데이터베이스 (우고 공백 등)이 무엇인지에 올바른지 확인하십시오.

마지막으로, 제대로 들여 쓰기와 코드를 배치 나을 것, 그것은 여기 읽는 얼마나 쉽게 참조 : 데이터베이스에 중복 데이터가 있었기 때문에 http://codepad.org/DmtMuTpC

관련 문제