Я пытаюсь сделать простой тестовый скрипт 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.
Да, ты захочешь сделать
if( $_GET['destroy'] == 1 )
или
if( isset($_GET['destroy']) )
Кстати, вы можете использовать
$ _REQUEST [ 'уничтожить']
который будет работать независимо от того, передаются ли данные в запросе POST или GET.
Я знаю, что делаю что-то глупое (я новичок в php), но я не могу понять, что это такое ...
вот так ты многому научишься;) наслаждайся этим ...
В руководстве по PHP есть фрагмент кода для уничтожения сеанса.
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();