2014-05-10 2 views
0

사용자 ID에서 사용자 ID를 추출하려고하는데 작동하지 않습니다.로그인 한 사용자 ID를 mysql에서 어떻게 추출 할 수 있습니까?

로그인 기능 :. 내가가 로그인있을 때

function login($user, $password) { 
$user = strip_tags(mysql_real_escape_string($user)); 
$password = strip_tags(mysql_real_escape_string($password)); 

$password = md5($password); 

$sql = "SELECT * FROM users WHERE user = '$user' AND password = '$password'"; 
$result = mysql_query($sql) or die('Error. ' . mysql_error()); 


if (mysql_num_rows($result) == 1) 
{ 
    $_SESSION['access']=true; 
    $_SESSION["user"] = $user; 
    $_SESSION["password"] = $password; 
    $_SESSION["id"] = $id; 
    header('Location: '.DIR.'admin.php'); 
    exit; 
} 
else 
{ 
    //error 
    $_SESSION['error'] = 'Wrong name or password.'; 
} 
} 

지금, 나는 에코 '사용자 이름'$ 사용자와 admin.php에서 이러한 정보를 게시하려고 노력했다. 'ID :'. $ id '; 그것은 보여주지 않는다.

+0

'admin.php' 코드를 게시 할 수 있습니까? –

+0

PDO를 사용하십시오. 더 많은 장식이 있습니다. –

+2

'strip_tags()'를 사용하지 마십시오. 사용자는 패스워드에'<'를 사용할 수 있어야하고,'echo strip_tags ('foo '과 같은 문자는 데이터베이스에 문제를 일으키지 않지만 html로 사용하면 문제가 발생할 수 있습니다. 문제를 해결해야합니다. – Arjan

답변

1

당신은 라인

if (mysql_num_rows($rezultat) == 1) 

if (mysql_num_rows($result) == 1) 

을 변경해야하지만 확실히 당신은 SQL 주입을 방지하거나 적어도 mysqli 기능 (MySQL은 현재 지원되지 않습니다)

하는 준비된 문으로 PDO를 사용하는 것이 좋습니다
+0

일반 텍스트 암호 저장하지 않음 –

+0

그는 그렇지 않습니다. 그는 md5를 사용하지만 물론 가장 좋은 방법이 아닙니다. –

+0

doh는 그 라인을 놓쳤습니다. (물론 md5가 너무 약해서 거의 비슷하지 않습니다. –

0

검색어가 잘못되었습니다.

$sql = "SELECT * FROM users WHERE user = '" . $user . "' AND password = '" . $password . "'"; 

아마 '$ user'라는 이름의 사용자가 없을 것입니다. 따옴표에주의하십시오.

+0

사실, PHP는 큰 따옴표로 묶인 문자열의 변수를 내용으로 대체합니다 – Arjan

+0

변수가 큰 따옴표로 묶여 있지만 작은 따옴표로 묶여 있더라도? – Maykonn

+0

예 작은 따옴표는 문자열에서 작은 따옴표로 묶여 변수 치환에 영향을 미치지 않습니다 – Arjan

관련 문제