Skocz do zawartości
PL
Szukaj na Pecetowiczu
  • Utwórz konto

Kodowanie panelu administratora i problem z działaniem sesji


Rekomendowane odpowiedzi

Cześć, mam problem ponieważ koduje panel administratora i mam problem z działaniem sesji. Mianowicie mimo tego że się nie zalogowałem można wejść do strony z całym panelem administratora, mimo że jest dodane,  żeby sprawdzało czy sesja nie jest pusta.

Oto kod:

session_start();
if(empty($_SESSION['admin_access'])) {
	header ('index.php');
}

Próbowałem zapisać jakąś sesje i ją wyświetlić i działa, natomiast z tą mam problem... Z góry dziękuje za pomoc!

P.S. Sprawdzanie czy sesja istnieje jest w pliku gdzie dodaje wszystkie pliki css itp, natomiast on jest podpięty do innych stron..

Odnośnik do komentarza
Udostępnij na innych stronach

A przy wylogowaniu usuwasz sesję? Pokaż kod.

Odnośnik do komentarza
Udostępnij na innych stronach

16 minut temu, BlackIce napisał:

A przy wylogowaniu usuwasz sesję? Pokaż kod.

Jeszcze nie napisałem wylogowywania, ale najgorsze jest to że ja w kodzie od logowania nawet nie zdeklarowałem tej zmiennej sesji, więc mimo wszystko mnie powinno nie przekierowywać do panelu bo sesja nawet nie istnieje

Odnośnik do komentarza
Udostępnij na innych stronach

(edytowane)

Musisz ją gdzieś tworzyć, skoro działa przekierowanie. Przeszukaj pliki.

//edit.

Ale czekaj. Sprawdzasz czy wartość klucza tablicy jest pusta - a to zwraca true nawet jak podany klucz nie istnieje. Zmień kod na taki:

<?php
if(isset($_SESSION['admin_access']) and !empty($_SESSION['admin_access'])) {
  //zalogowany
}
Edytowane przez BlackIce
Odnośnik do komentarza
Udostępnij na innych stronach

39 minut temu, BlackIce napisał:

Musisz ją gdzieś tworzyć, skoro działa przekierowanie. Przeszukaj pliki.

 

//edit.

Ale czekaj. Sprawdzasz czy wartość klucza tablicy jest pusta - a to zwraca true nawet jak podany klucz nie istnieje. Zmień kod na taki:


<?php
if(isset($_SESSION['admin_access']) and !empty($_SESSION['admin_access'])) {
  //zalogowany
}

 

Nadal nic nie działa.

Tak wygląda kod logowania:

<?php
include 'templates/global/header_include.template.php';

$info = '';

if(isset($_POST['login_button'])) {
	$admin_login = stripslashes($_POST['login_admin']);
	$admin_password = stripslashes($_POST['password_admin']);
	
	if(empty($admin_login) && empty($admin_password)) {
		$info = '<div class="alert alert-danger">Musisz wypełnić wszystkie pola, aby się zalogować!</div>';
	}
	
	$admin_database = $database->query("SELECT * FROM `admin_user` WHERE admin_login='$admin_login' and admin_password='$admin_password'");
	
	if($admin_database->num_rows == 1) {
		$info = '<div class="alert alert-success">Zalogowano poprawnie! Zaraza nastąpi przekierowanie do panelu administratora.</div>';
		echo '<meta http-equiv="refresh" content="5; URL=dashboard.php">';
	} else {
		$info = '<div class="alert alert-danger">Podany administrator nie istnieje!</div>';
	}
}
?>

Strona na pewno nie ma nigdzie zdeklarowanej sesji itp.

Odnośnik do komentarza
Udostępnij na innych stronach

(edytowane)

index.php

<?php
session_start();

include 'templates/global/header_include.template.php';

$info = '';

if(isset($_POST['login_button'])) {
	$admin_login = stripslashes($_POST['login_admin']);
	$admin_password = stripslashes($_POST['password_admin']);
	
	if(empty($admin_login) && empty($admin_password)) {
		$info = '<div class="alert alert-danger">Musisz wypełnić wszystkie pola, aby się zalogować!</div>';
	}
	
	$admin_database = $database->query("SELECT `uid` FROM `admin_user` WHERE admin_login='$admin_login' and admin_password='$admin_password'");
	
	if($admin_database->num_rows == 1) {
      	$_SESSION['admin_access'] = $admin_database->fetch_object()->uid;
		$info = '<div class="alert alert-success">Zalogowano poprawnie! Zaraza nastąpi przekierowanie do panelu administratora.</div>';
		echo '<meta http-equiv="refresh" content="5; URL=dashboard.php">';
	} else {
		$info = '<div class="alert alert-danger">Podany administrator nie istnieje!</div>';
	}
}

dashboard.php

<?php
session_start();
if(!isset($_SESSION['admin_access']) or empty($_SESSION['admin_access'])) {
  die('You don\'t have access to view this page!');
}
Edytowane przez BlackIce
Odnośnik do komentarza
Udostępnij na innych stronach

Dobra działa, tylko ja chciałem po prostu umieścić sprawdzanie sesji w pliku header_include. Nie da się tego właśnie tak zrobić? Bo teraz to będę musiał w każdym pliku umieszczać osobno to sprawdzanie sesji.

Odnośnik do komentarza
Udostępnij na innych stronach

No to OK. Wrzuć ten kod co podałem z dashboard do header_include i powinno być dobrze. Ważne jednak, żebyś tą linijkę umieścił w index:

<?php
$_SESSION['admin_access'] = $admin_database->fetch_object()->uid;
Odnośnik do komentarza
Udostępnij na innych stronach

Kontynuuj dyskusję

Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.

  • Dodaj nową pozycję...
  • Dodaj nową pozycję...