Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Logowanie i cookiesy w php
Forum PHP.pl > Forum > Gotowe rozwiązania
Usagi
Mam taki skrypt

[php:1:67cdb142bb]<?php
if(!(empty($_SERVER['HTTP_REFERER'])))
{
$data = guest_login($_SERVER['HTTP_REFERER']);
if($data['user_kind'] == 'guest')
{
session_register('USER_ID','LOGIN','USER_KIND');
$USER_ID = $data['user_id'];
$LOGIN = $data['user_login'];
$USER_KIND = $data['user_kind'];
}
}



if(empty($LOGIN))
{

if(!(empty($COOKIE_LOGIN)))
{
session_register('USER_ID','LOGIN','USER_KIND');
$USER_ID = $COOKIE_USER_ID;
$LOGIN = $COOKIE_LOGIN;
$USER_KIND = $COOKIE_USER_KIND;
setcookie("COOKIE_LOGIN", $USER_LOGIN, time()+7776000);
setcookie("COOKIE_USER_KIND", $USER_KIND, time()+7776000);
setcookie("COOKIE_USER_ID", $USER_ID, time()+7776000);

}
else
{
if($action=='Zaloguj')
{
$data=user_login($_POST['login'], $_POST['password']);

if($data != '0')
{
if($_POST['still_login']=='yes')
{
setcookie("COOKIE_LOGIN", $data['user_login'], time()+7776000);
setcookie("COOKIE_USER_KIND", $data['user_kind'], time()+7776000);
setcookie("COOKIE_USER_ID", $data['user_id'], time()+7776000);
}
session_register('USER_ID','LOGIN','USER_KIND');
$USER_ID = $data['user_id'];
$LOGIN = $data['user_login'];
$USER_KIND = $data['user_kind'];
}
}
}
}

if(!(empty($LOGIN)))
{
if($action=='Wyloguj')
{
setcookie("COOKIE_LOGIN","", time()-999);
setcookie("COOKIE_USER_KIND","", time()-999);
setcookie("COOKIE_USER_ID","", time()-999);
session_unregister("USER");
session_unregister("USER_ID");
session_unregister("USER_KIND");
session_destroy();
}
}
?>[/php:1:67cdb142bb]

Teraz to dziala tak: za pierwszym razem jest ok, za drugim razem tez, za trzecim wlaczeniem przegladarki znow nie widzi cookiesow.
spenalzo
Moze za duży czas ustawiasz?questionmark.gif Spróbuj zamiast
[php:1:df83359d1e]<?php
time()+100000000000
?>[/php:1:df83359d1e]
dać
[php:1:df83359d1e]<?php
time()+7776000
?>[/php:1:df83359d1e]
to ustawi (a przynajmniej powinno) ciastko na 90 dni.
Ja bym to na pierwszy rzut oka obstawiał - być może data jaka powstaje jest za duża i przechodzi automatycznie na 0 - czyli 01.01.1970 - a że takie ciastko byłoby baaardzo stare to jest kasowane.

Taka rada jeszcze: zamiast sprawdzać if(isset($zmienna)) sprawdzaj !if(empty($zmienna)) - bo pierwszy warunek bedzie prawdą jeżeli zmiennej nie będzie - ale gdy będzie zdefiniowana, ale pusta, to warunek zwróci false, a empty($zmienna) nadal zwróci true - chyba że to zamierzone tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.