Вопрос
Я пытаюсь сделать простой тестовый PHP-скрипт для сеансов.По сути, он увеличивает счетчик (хранящийся в $_SESSION
) каждый раз, когда вы обновляете эту страницу.Это работает, но я пытаюсь получить ссылку, чтобы уничтожить сеанс, который перезагружает страницу с помощью ?destroy=1
параметр.Я попробовал пару операторов if, чтобы проверить, установлен ли этот параметр, и если да, то уничтожить сеанс, но, похоже, это не работает.
Я даже поместил оператор if в основной текст, чтобы вывести всплывающее сообщение, если параметр установлен, но, похоже, оно не было обнаружено.
Я знаю, что делаю что-то глупое (я новичок в PHP), но не могу понять, что это такое...
Смотрите код здесь:
<?php
if ($_POST['destroy']) {
session_destroy();
} else {
session_start();
}
?>
<html>
<head>
<title>Session test</title>
</head>
<body>
<?php
if (isset($_POST['destroy'])) {
echo "Destroy set";
}
$_SESSION['counter']++;
echo "You have visited this page " . $_SESSION['counter'] . " times" . "<BR>";
echo "I am tracking you using the session id " . session_id() . "<BR>";
echo "Click <a href=\"" . $_SERVER['PHP_SELF'] . "?destroy=1\">here</a> to destroy the session.";
?>
Решение
Я думаю, ты положил
$_POST['destroy']
Вместо
$_GET['destroy']
Вам нужно использовать форму, если вы хотите использовать переменную $_POST.Переменные $_GET хранятся в URL-адресе.
Другие советы
Кстати, вы можете использовать
$_REQUEST['уничтожить']
который будет работать независимо от того, передаются ли данные в запросе POST или GET.
в Руководство по PHP у него есть фрагмент кода для уничтожения сеанса.
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
Да, ты захочешь сделать
if( $_GET['destroy'] == 1 )
или
if( isset($_GET['destroy']) )
Я знаю, что делаю что-то глупое (я новичок в php), но не могу найти, что это такое...
так вы многому научитесь ;) наслаждайтесь...