Autor Zpráva
TrueColor
Profil *
Mám stránce logout.php je:

session_start();
session_destroy();
header("location:main_login.php")

Stránka uživatele odhlásí. Přesměruje na formulář přihlášení. Kdekoliv se nachází tento kód v hlavičce:

session_start();
include "prihlaseni/parts/current-url.php";
$url = $currentUrl;
if(!session_is_registered(myusername)){
header("location:prihlaseni/login.php?url=".$url);

Pokud se chci dostat na URL s tímto kódem, přesměruje uživatele na login.php. To ovšem neplatí u URL začínající: www.stranka.cz. Nevíte proč mi to dělá?
Spectator
Profil
ověřuj
if (isset($_SESSION['nazev'])) {
    // prihlasen
}

za header('location: ...');
dávej
exit;
přesměrováním script nekončí.

header(location by měla být absolutní adresa)

session_is_registered() si nejsem jist, zda existuje, ale pokud ano, je to IMHO nějaká vykopávka.
TrueColor
Profil *
Nebyl jsem moc přesný, problém je, že ukončí session pro url adresy bez www, ale když najedu na nějakou stránku s www, zase se ukáže jako přihlášený. Zmíněné rady nepomáhají.
Tori
Profil
Myslím, že to bude problém s cookies. Zkuste před session_start() dá jednu z těchto možností: (tečka před názvem domény je tam schválně)
ini_set('session.cookie_domain', '.stranka.cz');
// nebo 
$params = session_get_cookie_params;
session_set_cookie_params($params['lifetime'], $params['path'], '.stranka.cz');
viz dokumentace funkce setcookie
TrueColor
Profil *
Vypadá to, že první možnost funguje. Děkuji!
Majkl578
Profil
Jen doplním, že by ses měl za každých okolností vyvarovat použití funkcí session_register, session_is_registered a session_unregister. PHP je od verze 5.4 (aktuální stabilní verze) nezná, byly zrušeny.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0