Skocz do zawartości

Sprawdzanie dostępu do strony przy użyciu IF PHP


 Udostępnij

Rekomendowane odpowiedzi

Cześć,

Zrobiłem Sobie takowe sprawdzanie dostępu do strony, oczywiście na początku. Kod wygląda tak,

[...]

<? 

// <!-- Nie dotykać - sesja --> \\

	include("bazadanych.php");
	session_start();
	
// <!-- Sesja na nick Gracza --> \\
	
	$Login = $_SESSION['Login'];	
	
// <!-- Sprawdzanie rangi --> \\
	
	$bazaWybor = $bazaPolaczenie->query("SELECT * FROM cG_uzytkownicy WHERE Login = '$Login'");
	 while($kolumna = $bazaWybor->fetch()) 

	if($kolumna->Skin != 231) {
	header("location: 403r.php"); }

?>

[...]

Takowy sposób działa - sprawdzanie po skinie. Choć gdy chce zrobić sprawdzanie po randze z innej tabeli to nie działa. Brak rezultatów...

[...]

<? 

// <!-- Nie dotykać - sesja --> \\

	include("bazadanych.php");
	session_start();
	
// <!-- Sesja na nick Gracza --> \\
	
	$Login = $_SESSION['Login'];	
	
// <!-- Sprawdzanie rangi --> \\
	
    $bazaWybor = $bazaPolaczenie->query("SELECT * FROM cG_admin WHERE Login = '$Login'");
     while($kolumna = $bazaWybor->fetch()) 

    if($kolumna->Ranga != 3) {
    header("location: 403r.php"); }

?>

[...]

Błąd polega na tym w skrócie:

Mamy tabelę cG_admin i zniej pobiera Login. Jeżeli Login znajduje się w cG_admin to sprawdza mu rangę. A, jeżeli się Login nie znajduje w cG_admin to nie sprawdza go

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

Wynik tego zapytanie, to tylko jeden rekord? Jak tak, to nie potrzebujesz pętli do wyświetlenia danych.

Poza tym:

$bazaWybor->fetch()

zwróci FALSE, jeżeli zapytanie nie zwróciło wyniku, więc... Ja przerobiłbym kod na taki:

<?php
$bazaWybor = $bazaPolaczenie->query("SELECT * FROM cG_admin WHERE Login = '$Login'");
$kolumna = $bazaWybor->fetch();
if($kolumna AND $kolumna->Ranga != 3) {
  header("location: 403r.php");
}

Albo taki (co jest troszkę bez sensu):

<?php
$bazaWybor = $bazaPolaczenie->query("SELECT * FROM cG_admin WHERE Login = '$Login'");
while($kolumna = $bazaWybor->fetch()) {
  if($kolumna AND $kolumna->Ranga != 3) {
    header("location: 403r.php");
  }
}

Poza tym. Pokazałem Tobie już jak korzysta się z ->prepare() i ->bindParam() + ->execute(), a nadal korzystasz z ->query()

Edytowane przez BlackIce
Odnośnik do komentarza
Udostępnij na innych stronach

Nie działa żaden z powyższych kodów.

Próbowałem wejść kontem, które nie jest dodane w cG_admin oraz nie posiada rangi. Mogło wejść bez problemu.

Chodzi o to,

Konto 1 - brak rangi, nie dodane w cG_admin

Konto 2 - ranga 3, dodane w cG_admin

Po czym,

Konto 1 - może wejść bez problemu. Testowałem oba kody jak i również Konto 2

Problem,

Nie sprawdza tej rangi po czym każdy ma dostęp

Edytowane przez Ciastuuś
Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

×