Доступ к параметру html в PHP

Я пытаюсь сделать простой тестовый скрипт 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.";
?>
19.08.2008 19:49:54
5 ОТВЕТОВ
РЕШЕНИЕ

Я думаю, что вы положили

$_POST['destroy']

Вместо того

$_GET['destroy']

Вам нужно использовать форму, если вы хотите использовать переменную $ _POST. Переменные $ _GET хранятся в URL.

7
19.08.2008 19:52:03

Да, ты захочешь сделать

if( $_GET['destroy'] == 1 )

или

if( isset($_GET['destroy']) )
1
19.08.2008 19:58:50

Кстати, вы можете использовать

$ _REQUEST [ 'уничтожить']

который будет работать независимо от того, передаются ли данные в запросе POST или GET.

4
19.08.2008 21:00:08
Не очень хорошая практика. Важно убедиться, что ваши переменные получены из ожидаемого источника.
Álvaro González 26.01.2010 17:51:06
В самом деле? почему это важно? Если кто-то может подделать GET, он может подделать POST так же легко. Я думаю, что не имеет значения, если ваши переменные происходят из GET или POST, вы должны относиться к обоим как к одинаково ненадежным независимо.
Pat 27.01.2010 13:30:37

Я знаю, что делаю что-то глупое (я новичок в php), но я не могу понять, что это такое ...

вот так ты многому научишься;) наслаждайся этим ...

0
19.08.2008 22:29:32

В руководстве по PHP есть фрагмент кода для уничтожения сеанса.

session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
2
19.08.2008 22:54:33