2014-09-11 1 views
1

나는 데이터베이스에 사용자 설정을 가지고와 동일한 정보를 입력 한 복어, PHP와 MySQL형태로 사용자 이름 및 데이터베이스 사용자 이름은 비록 동의하지 같은

를 사용하여 로그인을 만들려고 해요 형태. echo로 검사하면 코드가 if 문까지갑니다 (일치하지 않는 경우 (즉, if 문으로 들어가고! =을 사용하여 올바른 사용자가 없으므로 암호가 실패 함) 눈이 좋은 것

감사

PHP 코드

$query = "SELECT * FROM 'users' WHERE LOWER('username')=:username"; 
$stmt=$dbh->prepare($query); 
$stmt->bindValue(':username',strtolower ($_POST['username'])); 
$stmt->execute(); 


if ($stmt->rowCount() == 1) 
{ 
    $row=$stmt->fetch(PDO::FETCH_ASSOC); 
    require('blowfish.php'); 
    require('bcrypt.class.php'); 
    $bcrypt = new Bcrypt(4); 
     if($bcrypt->verify($_POST['password'],$row['password'])) 
    { 
     echo"logged in!! fish"; 
    } 
} 

HTML 코드 :.

<form method="POST" action="authorise.php"> 
Username: <input type ="text" name="username"/><br/> 
Password: <input type ="password" name="password"/><br/> 
<input type="submit"/> 
</form> 
+0

테이블 및 열을 문자열로 처리하지 마십시오. –

답변

0

당신은 당신의 한때에 작은 따옴표가 필요하지 않습니다 ery

$query = "SELECT * FROM users WHERE LOWER(username)=:username"; 

예약어를 사용하는 경우 열 이름과 테이블 이름에 백틱을 사용해야 할 수 있습니다. 따옴표는 대신 쿼리에서 문자열을 사용하여 이스케이프 처리 할 때 사용됩니다.

+0

당신의 도움에 감사드립니다. – dabollix

0

귀하의 쿼리 매개 변수 사용자 이름 대신 열이라는 이름의 리터럴 문자열 사용자 이름에 동일한 경우는 기본적으로 MySQL의를 요구하고 LOWER 함수 내부의 작은 따옴표를 사용

$query = "SELECT * FROM 'users' WHERE LOWER('username')=:username"; 

잘못된 것입니다. IE가 $_POST['username']과 같으면 "robbert"이고, 쿼리는 robbert = username을 묻습니다. 아니, 로버트 같아. 테이블에 대해서도 마찬가지입니다. 백틱이나 따옴표를 사용하지 마십시오.

MySQL 백틱 (`)은 열 또는 테이블 이름을 인용하는 데 사용됩니다. 사용하려는 쿼리 여야합니다.

$query = "SELECT * FROM users WHERE LOWER(username)=:username"; 
+0

안녕하세요, 저는 ': username'을 사용하지 않고 $ _POST [ 'username']을 사용한다는 것을 의미합니다. 또한 select 문을 변경합니다 : $ query = "SELECT * FROM users WHERE LOWER (username) = : username"; 도움을 주셔서 감사합니다 – dabollix

+0

아니요, 쿼리에': username'을 유지하고'bindParam' 메서드를 사용하여 SQL 삽입 공격을 최소화하고 싶습니다. – Robbert

+0

다음 오류가 나타납니다. 치명적인 오류 : 27 행의 C : \ xampp \ htdocs \ newlogin \ authorise.php에서 정의되지 않은 Bcrypt :: verify()를 호출하십시오. 문제의 행은 다음과 같습니다. if ($ bcrypt-> ($ _ POST [ 'password'], $ row [ 'password'])) 감사합니다. 감사합니다. – dabollix