2013-05-12 3 views
1

내 스크립트는 사용자를 내 데이터베이스에 로그인해야합니다.SELECT 쿼리를 수행 할 수 없습니다.

사용자 이름과 암호가 스태프 테이블의 행과 일치하는지 확인하여이 작업을 수행합니다.

사용자 이름과 암호가 존재하는 것으로 확인되면 사용자 이름과 암호가 쿠키에 저장됩니다.

내가 갖는 문제는 사용자가 로그인되지 않는 것이다.

그것은 다음과 같은 변수가 버튼을

$ 행을 클릭시 다음과 같은 값을 에코 방법을 통해 확인 된 것입니다 양식에 사용자 이름 필드에 무엇이든 = 0 $ 사용자 이름 =

이 쿼리

<?php 

$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = ''; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die      ('Error connecting to mysql'); 

$dbname = 'the_shop'; 
mysql_select_db($dbname); 

if(isset($_GET['submit'])) 
{ 
    $username = $_GET['username']; 
    $password = md5($_GET['password']); 
    echo "$username + $password <br />"; 

    // insert user into db 
// $sql = "INSERT INTO `logindb`.`users` (`id`, `username`, `password`) VALUES (NULL, '".$username."', '".$password."');"; 
// echo $sql; 
// $result = mysql_query($sql); 

    // getting user from db 
    $query = "SELECT Username, Password FROM staff WHERE `Username`='.$username.'"; 
    $result = mysql_query($query) 
    or die(mysql_error()); 
    $num=mysql_numrows($result); 
    echo $num; 
    if($num <= 0) { 
    echo "login not successful"; 
    echo "$username"; 
} 
else 
{ 
    $_SESSION['username'] = '$username'; 
    $_SESSION['password'] = '$password'; 
//header("Location:Admin_Control_panel.php"); 
} 
} 
?> 
에 문제가 있음을 나타내는 것
+1

[** 새 코드 **에서 mysql_ * 함수를 사용하지 마십시오. (http://bit.ly/phpmsql). 그들은 더 이상 유지되지 않으며 [공식적으로 사용되지 않습니다] (http://j.mp/XqV7Lp). [** 빨간색 상자 **] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. – Kermit

+0

mysql_num_rows ($ result);는 mysql_numrows가 아니지만, 어쨌든 mysql을 사용해야한다. –

+1

왜 사용자 이름 만 확인하고 비밀번호는 확인하지 않습니까? –

답변

3

가 원치 않는 문자 (.)가 있습니다.

"SELECT Username, Password FROM staff WHERE `Username`='.$username.'" 
                 ^  ^

해야합니다.

"SELECT Username, Password FROM staff WHERE `Username`= '$username'" 

점이 없습니다.

3

이 라인 : 문자열을 연결 할 필요가 없습니다

$query = "SELECT Username, Password FROM staff WHERE `Username`='$username'"; 

당신이 이중 인용 된 문자열 내부의 $ 값을 구문 분석 double-quotesPHP을 사용하고 있기 때문에 :

$query = "SELECT Username, Password FROM staff WHERE `Username`='.$username.'"; 

가 될 필요가 .

1
$query = "SELECT Username, Password FROM staff WHERE `Username`='$username'"; 
2

귀하의 질의는해야한다 : 사용하고 변수를 변수 설정하는 방법에 대한 대안으로

$query = 'SELECT Username, Password FROM staff WHERE Username = ' . $username; 

내가 PDO에보고 제안 (PHP 데이터 개체). 우선 당신의 $query를 들어

http://php.net/manual/en/book.pdo.php

+0

내년 프로젝트에서 php와 mysql을 사용할 때마다 내년에 그 일을 할 생각이 있습니다. 그러나 이제는 내 배려가 필요하기 때문에 배울 시간이 없습니다. 몇 일 안에 :) –

+0

나는 그 감각을 안다 :) 행운을 빈다. – mattfryercom

관련 문제