Доступ к параметру 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.";
?>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
1 202
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

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

$_POST['destroy']

Вместо

$_GET['destroy']

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

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

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

или же

if ( isset($_GET['destroy']) )

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

$_REQUEST['destroy']

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

Не совсем хорошая практика. Важно убедиться, что ваши переменные происходят из ожидаемого источника.

Álvaro González 26.01.2010 20:51

Действительно? почему это важно? Если кто-то может подделать GET, он также может подделать POST. Я думаю, что это не имеет значения, если ваши переменные поступают из GET или POST, вы должны относиться к обоим как к одинаково ненадежным независимо.

Pat 27.01.2010 16:30

I know I'm doing something silly (I'm a php newbie) but I can't seem to find what it is...

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

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

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

Другие вопросы по теме