Pergunta

Estou tentando fazer um script php de teste simples para sessões.Basicamente ele incrementa um contador (armazenado em $_SESSION) sempre que você atualizar essa página.Isso funciona, mas estou tentando ter um link para destruir a sessão que recarrega a página com o ?destroy=1 parâmetro.Eu tentei algumas instruções if para ver se esse parâmetro está definido e, em caso afirmativo, para destruir a sessão, mas parece que não funciona.

Eu até coloquei uma instrução if no corpo principal para exibir uma mensagem se o parâmetro estiver definido - mas parece que não foi detectado.

Eu sei que estou fazendo algo bobo (sou um novato em PHP), mas não consigo descobrir o que é...

Veja o código aqui:

<?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.";
?>
Foi útil?

Solução

Eu acho que você colocou

$_POST['destroy']

Em vez de

$_GET['destroy']

Você precisa usar um formulário se quiser usar uma variável $_POST.Variáveis ​​$_GET são armazenadas na URL.

Outras dicas

A propósito, você pode usar

$_REQUEST['destruir']

que funcionaria independentemente de os dados serem passados ​​​​em uma solicitação POST ou GET.

No Manual PHP possui um trecho de código para destruir uma sessão.

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

Sim, você vai querer fazer

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

ou

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

Eu sei que estou fazendo algo bobo (sou um novato em php), mas não consigo encontrar o que é...

é assim que você vai aprender muito ;) aproveite ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top