php
2009-07-08 2 views 0 likes 
0
function procLogin($username,$password){ 

    $query = "SELECT * 
         FROM members 
         WHERE login = '".mysql_escape_string($username)."' 
         AND passwd = '".mysql_escape_string($password)."'"; 
     $result = mysql_query($query); 


     //$values = array(); 
     while($row = mysql_fetch_array($result)) 
     { 
       return 'gg'; 
       return(array($row['member_id'])); 
     } 



} 

아니 유저 레벨 필드 ....도 아무것도 얻을 수 ....PHP 로그인 반환 값

귀하의 질문에,하지만 한 가지 문제는 당신이 return가에서 보내고 걸 정확히 무엇인지

답변

1

return (array ($ row [ 'member_id'])));

잘못 같은데 - 그것은해야한다 :

리턴 ($ 행 [ 'MEMBER_ID']);

그런 식으로 배열을 정의 할 필요는 없습니다.

또한 숫자 인덱스로 반환하는 mysql_fetch_array()를 사용합니다. mysql_fetch_assoc은 숫자 인덱스가 아닌 열 이름으로 값을 반환하므로 작업 할 때 훨씬 유용합니다.

는 여기에 몇 가지 깔끔한 업으로 다시이다 : 나는 유저 레벨에 대한 의견에 따라, 생각하고

function procLogin($username,$password){ 
    $query = "SELECT * 
     FROM members 
     WHERE login = '".mysql_escape_string($username)."' 
     AND passwd = '".mysql_escape_string($password)."'"; 
    $result = mysql_query($query); 

    $row = mysql_fetch_assoc($result); 

    if ($row['member_id'] > 0) 
    { 
     return ($row['member_id']); 
    } 
    else 
    { 
     return false; 
    } 
} 
+0

userlevel에 현재 사용자에 대한 값이 있지만 false가 반환됩니다. – Kevin

4

하지 않음 이 while 루프 내에서 : 뭔가 당신의 SQL에 잘못하지 않는 한 procLogin() 기능을 항상 "GG"의 값을 반환 할 수 있도록

while($row = mysql_fetch_array($result)) 
{ 
    return 'gg'; 
    return(array($row['member_id'])); 
} 

는 사실, 당신은 ... 루프 내에서 두 번을 반환하고 질문.

일반적으로 혼동을 불러오고 예기치 않은 결과가 발생할 수 있으므로 어떤 루프에서도 return 문을 사용하지 마십시오.

+0

while 루프에는이 점이 없습니다. $ row의 값으로 단순하면 충분합니다. – MitMaro

+0

while 루프를 사용하지 않고 userlevel을 얻는 방법 – Kevin

0

아무 것도 반환하지 않습니까? 말하자면, 사실 while 루프로 들어가는 것입니까?

mysql_query 호출 바로 뒤에 mysql_error() 함수 호출을 사용하여 문제가 있는지 확인할 수 있습니다.

예를 들어 연결이되지 않았을 수 있습니다.

1

, 당신은 단지 MEMBER_ID보다는 전체 배열을 반환 할 것인지? 다음은 위의 Meep3D의 대답에 약간의 수정 등 :

$loginInfo = procLogin("theband","password1"); 
//if ($loginInfo) or something similar here 
$level = $loginInfo['userlevel']; 
: 당신은 유저 레벨 찾고 있다면 이것은, 모든 테이블 열의 배열을 반환해야

function procLogin($username,$password){ 
    $query = "SELECT * 
     FROM members 
     WHERE login = '".mysql_escape_string($username)."' 
     AND passwd = '".mysql_escape_string($password)."'"; 
    $result = mysql_query($query); 

    $row = mysql_fetch_assoc($result); 

    if (mysql_num_rows($result) > 0) 
    { 
     $row = mysql_fetch_assoc($result); 
     return $row; 
    } 
    else 
    { 
     return false; 
    } 
} 

는, 아마도 당신처럼 뭔가를 액세스 할 수 있어야합니다

+0

전체 정보가 필요 없으며 현재 사용자의 사용자 수준 만 검사됩니다. 또한 코드는 false를 반환합니다 ... – Kevin

+0

그래서 userlevel을 반환하십시오. return $ row [ 'userlevel']; 데이터베이스에서 예상되는 결과가 확실합니까? –

0

여전히 문제가 있습니까? 그래서 같은 시도 할 경우 쿼리를 정의한 후

echo $query; 

를, 데이터베이스에서 유효한 반환이 있는지 확인하기 위해 phpMyAdmin을 붙여 넣 + 복사합니다.

그 시도의 배치 후 :

if (mysql_error()) 
{ 
    trigger_error ("MySQL Error: ". mysql_error(), E_USER_ERROR); 
} 

이는 mysql_query 전화 직후. 무엇이 잘못되었는지에 대한 세부 정보를 제공하는 경우 오류가 발생합니다.

+0

문제가 해결되었습니다. MD5를 사용하여 암호화하지 않았습니다. – Kevin

관련 문제