2013-03-06 4 views
1

로그인 스크립트에 무차별 대책을 만들려고합니다. 계정이 잠긴 데이터베이스를 업데이트해야하는 쿼리는 제대로 작동하지 않지만PHP 업데이트 쿼리가 업데이트되지 않습니다.

if(isset($_POST['submit'])) { 
$mysqli = getConnected('*','*','*','*'); 
$username = $mysqli->escape_string($_POST['username']); 
$password = $mysqli->escape_string($_POST['password']); 
$hash = sha1($password); 
$query = "SELECT * FROM users WHERE username='$username'"; 
$result = $mysqli->query($query); 
$data = $result->fetch_assoc(); 

    if($data['lock'] == 0) { 
     if($hash == $data['password']) { 
     $_SESSION['loggedin'] = true; 
     $_SESSION['username'] = $username; 
     $result->free(); 
     $mysqli->close(); 
     header("Location: index.php?p=start"); 
     } else { 
      if($data['login_attempts'] != 0) { 
       $attempts_left = $data['login_attempts'] - 1; 
       $query2 = "UPDATE users SET login_attempts='$attempts_left' WHERE username='$username'"; 
       $mysqli->query($query2); 
       echo "Inloggningen misslyckades, du har ". $attempts_left ." försök kvar."; 
      } else { 
       $query3 = "UPDATE users SET lock='1' WHERE username='$username'"; 
       $mysqli->query($query3); 
       echo "Ditt konto har låsts."; 
      } 
     } 
    } else { 
     echo "Ditt konto är låst, kontakta webmaster för att återställa det."; 
    } 
} 

$의 QUERY3이 실행되는 경우 문제는, 비록 : 나는 지난 반 시간 동안이 코드를 찾고 있었어요 때문에 .. 어쨌든 여기

을 좌절하기 시작하고있어 코드입니다 var_dump에 따라 올바르게 실행됩니다.

저는 미쳐 가지 않도록 눈의 두 번째 세트가 필요합니다!

답변

1

lockreserved word in mysql입니다. 검색어를 다음으로 변경해야합니다.

$query3 = "UPDATE users SET `lock`='1' WHERE username='$username'"; 
          ^^^^^^ use back-ticks to escape reserved words in mysql 
+1

고맙습니다! 이 지루한 문제를 안심시켜 줬어! –

관련 문제