Muszę wymyślić sposób rozbrojenia tego pliku cookie. Wszystko, co dotąd próbowałem, zawiodło.jak usunąć plik cookie w PHP?
To jak jestem obecnie wyłączania go i nie wydają się działać.
setcookie("user_id", $user_id, time() - 7200);
ten sposób ustawić go:
setcookie("user_id", $user_id, time() + 7200);
mam tej funkcji o nazwie set_session_from_cookie()
, który sprawdza, czy plik cookie jest ustawiony, a jeśli jest on ustawiony, to zaczyna nową sesję za pomocą plików cookie.
Problem polega na tym, że gdy używam tego na mojej stronie, nie mogę się wylogować. Zakładam, że dzieje się tak dlatego, że nie mogę anulować sesji.
Powodem mam tej funkcji, jeśli użytkownik chce być zapamiętany po kończą sesję, można je ponownie uruchomić sesję wywołując cookie.
function set_session_from_cookie()
{
if (isset($_SESSION['user_id'])) {
echo '';
} else {
$_SESSION['user_id']=$_COOKIE['user_id'];
}
}
Wyloguj:
<?php
require'core.php';
session_destroy();
setcookie("user_id", "", time() - 7200);
header('Location:/social_learning/site_pages/starter-template.php');
mogę ustawić ciasteczko z następującego kodu:
if ($rememberme == "on") {
$user_id = mysql_result($query_run, 0, 'id');
setcookie("user_id", $user_id, time() + 7200);
$_SESSION['user_id'] = $user_id;
redirect('home_page.php');
} else {
if ($rememberme == "") {
echo 'ok';
$user_id = mysql_result($query_run, 0, 'id');
echo $user_id;
$_SESSION['user_id'] = $user_id;
redirect('home_page.php');
}
}
Jak mogę ponownie uruchomić sesję używając zapisany plik cookie bez użycia funkcji stworzyłem? Ponieważ wydaje się, że funkcja powoduje, że użytkownik nie może się już wylogować.
Czy Twój ciasteczko powinno być w całej witrynie? –
czy tak powinno być? Jak mogę to powiedzieć? – arboles
Nie używaj czasów względnych do rozbrajania plików cookie. To sprawia, że rozbrojenie zależy od dokładności zegara użytkownika. Użyj czasu "1", który przyciągnie wszystkich oprócz tych z naprawdę zepsutymi zegarami, którzy myślą, że jest 1970. –