Wpis z mikrobloga

Jak porobić takie coś - mam sobie prościutką stronę z logowaniem, tworzę sesję

$SESSION['user'] = $POST['username'];

Po zalogowaniu jest dostęp do kolejnych podstron gdzie jest

if(isset($SESSION['user'])) ....

Mam przycisk wylogowania, który robi takie rzeczy:

session
start();
$SESSION=array();
session
destroy();

i przekierowuje na stronę logowania, spoko. Tylko czemu nadal mogę sobie hasać po podstronach i tam widzi sesję jakby nadal była aktywna? Jak to zrobić zgodnie ze sztuką? #kiciochpyta #it #php
  • 21
@OperatorHydrolokator: po co Ci ten session_start() i array? To oddzielny plik?
jeśli chcesz kogoś wylogować to wystarczy samo session_destroy();
dodatkowo jakieś przekierowanie i to wszystko,
jeśli wywaliłeś sesje i w innym miejscu sprawdzasz czy dana wartość w sesji istnieje a nadal widzisz content który powinien być ukryty dla niezaleogowanych, to coś w sprawdzaniu spierniczyłeś.
@Jare_K: @poszlo_wyszlo: Jak to robię w taki sposób:

Wyloguj

logout.php:
php
sessionstart();
session
destroy();
header('Location: index.php');
exit;
?

to działa.

A chciałem tak jakoś kulturalnie w jednym pliku mieć, w ten sposób:
....

<?php if(isset($POST['logout'])){

unset($
SESSION['user']);

}
....
to tej sesji nie kończył jakby. Warum warum? Jestem phpowa lamka, nie bijcie jak poważnego babola zrobiłem :D
@Jare_K: dzięki bardzo dobry człowieku, normalnie wiszę Ci wielkie piwo :) Ale mam jeszcze 1 pytanie :P

Zakładamy, że się zaloguję, wszystko jest ok. Otwieram sobie podstronę w nowej karcie, a tą pierwszą główną zamykam. Wchodzę ponownie na tą główną i nadal mi się wyświetla formularz do logowania, pomimo, że teoretycznie nie nastąpiło ubicie sesji?

I to chyba wszystko. No chyba, że mi się coś jeszcze przypomni :)
@Jare_K: jeszcze mam pytanie :) Mam sobie taki tam prościutki config.php

php
sessionstart();
$
SESSION['url']=$SERVER['REQUESTURI'];
$log=$SERVER['DOCUMENTROOT'].'/logfile.log';
?

I robię sobie na samym początku każdej strony

include($SERVER['DOCUMENTROOT'].'/config.php');

żeby po kliknięciu na podstronę, a nie będąc zalogowanym wyświetlił się komunikat o przekierowaniu do strony logowania. Po zalogowaniu powinno przenieść na poprzednią stronę. Po poprawnym zalogowaniu mam takie sprawdzanie:

if(isset($SESSION['url']))
{
$url = $
SESSION['url'];
}
@OperatorHydrolokator:
include, include_once, require itp. to nie funkcje tylko instrukcje, więc nie stosuj nawiasów.
Obstawiam, że jeśli przekierowałeś użytkownika do strony logowania, którą prawdopodobnie jest index.php i również wczytuje config, to na tej stronie do $
_SESSION['url'] trafia index.php który po zalogowaniu przekierowuje z powrotem na ostatnio odwiedzoną stronę. W tym configu powinieneś sprawdzić czy jesteś na stronie logowania i jeśli tak, to nie nadpisywać zmiennej sesji.