Zapytanie sprawdzające poziom uprawnień użytkownika nie działa prawidłowo

Zapytanie sprawdzające poziom uprawnień użytkownika nie działa prawidłowo

Wątek przeniesiony 2015-05-16 12:15 z PHP przez dzek69.

AS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
0

Witam,
Próbuję zrobić podział użytkowników na zwykłych oraz z uprawnieniami administratora.
Do tabeli 'users' dodałem nową kolumnę 'user_status' którą ustawiłem na INT(3).

I niestety czy user_status w bazie ma liczbę czy 3 czy 1 to i tak wyświetla , że jest to admin..
a wykonuję to tak :

Kopiuj
function is_admin($user_id = -1) {
	// jeśli nie podamy id usera to podstawiamy id aktualnie zalogowanego
	if($user_id == -1) {
		$user_id = $_SESSION['user_id'];
	}
	$result = mysql_query("SELECT * FROM `users` WHERE `user_id` = '{$user_id}' AND `user_status` = 3 LIMIT 1");
	if(mysql_num_rows($result) == 0) {
		return false;
	}
	return mysql_fetch_assoc($result);
}
Kopiuj
$admin = is_admin($_GET['id']);
if($admin === false) {
				echo '<p>Uzytkownik nie jest adminem.</p>
					<p>[<a href="index.php">Powrót</a>]</p>';
			} 

Nvm. Już działa, był drobny błąd w bazie ...
proszę usunąć.

katelx
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Hong Kong
0

ostatnio w php cos robilam dawno temu, ale wyglada ze twoj kod az prosi sie o sql injection, jak temu zapobiec - http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

zrób sobie var_dump($admin) i zobacz co dostaniesz

grzesiomaster
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Bądź też możesz:

Kopiuj
    $result = mysql_query("SELECT * FROM `users` WHERE `user_id` = '{$user_id}' AND `user_status` = 3 LIMIT 1") or die(mysql_error());

I tak jak mówi @katelx ,zabezpiecz to przed sql injection ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.