2013-06-28 4 views
0

로그인 한 사용자 계정이없는 사용자 목록을 표시하고 싶습니다. 내 표는 logged를 호출되어에서 나는 대개 열을 생성특정 사용자를 제외한 사용자 목록을 표시하고 싶습니다.

SELECT * 
FROM users 
WHERE level = 'student' 
     AND level NOT LIKE '%{$_SESSION['SESS_name']}%' 
ORDER BY level ASC 
+0

의 세션에서 사용자 ID 로그인. 이것은 작동하지 않습니다. SQL은 요청 된 세션 변수가 레벨을 포함 할 것으로 기대하지만 매개 변수는 이름을 보유하고 있다고 믿게 만듭니다. – mbanzon

+0

몇 가지 샘플 데이터를 게시해야합니다. 그게 많이 도움이 될 것입니다 – sailingthoms

+0

'레벨'무엇입니까? 검색어에는 검색어 문자열에 '레벨'이라는 매개 변수 하나만 포함됩니다. 사용자 수준 또는 사용자 이름입니까? 그래서'$ _SESSION [ 'SESS_name']'은 무엇을 포함합니까? – sailingthoms

답변

0

주 당신은 SQL 주입 취약점을 가지고 ...

SELECT * FROM users WHERE logged = 1; 

... 모두가 같은 그와 같은 간단한 사용자 로그인 볼 수 있습니다 그리고 사용자에 로깅되지 않은 볼 수 있습니다. 이 PDO http://php.net/manual/en/pdo.prepare.php

스토어 사용이

$stmt = $dbh->prepare('SELECT * FROM users WHERE level = "student" AND id != :userId ORDER BY level ASC'); 
$stmt->execute([':userId' => $_SESSION['userId']]); 

을 시도 당신 대신 당신의 코드가 심하게 이스케이프 이름

0

, 그리고 그들은 로그인 할 때 :

SQL 쿼리는 아래에 배치됩니다 ... 협조에 감사드립니다, 나에게 그것을 해결하기 위해 어떤 아이디어를 제안하십시오 이 값을 1으로 설정하면 로그 아웃 할 때 0으로 설정합니다.

SELECT * FROM users WHERE logged = 0; 
+0

Thas는 목록에서 제외 된 현재 사용 된 것이고 현재 로그인 한 모든 사용자가 아닌 경우에만 작동합니다. – mbanzon

+0

그 다음에 그는 사용자 ID 대신 WHERE username! = $ _SESSION [ 'username'] 또는 그 효과를 나타냅니다. ? 나는 그의 문법을 벗어나려고했다. ..... 사용자 목록에 로그인 한 사용자 목록은 .... .... 복수형이 아니다 .... – KyleK

+0

당신은 완전히 맞다 - 나는 원래의 포스트에서 그것을 놓쳤다. . – mbanzon

관련 문제