Pregunta

Estoy intentando hacer un script php de prueba simple para las sesiones.Básicamente incrementa un contador (almacenado en $_SESSION) cada vez que actualiza esa página.Eso funciona, pero estoy intentando tener un enlace para destruir la sesión que recarga la página con el ?destroy=1 parámetro.Probé un par de declaraciones if para ver si ese parámetro está configurado y, de ser así, destruir la sesión, pero no parece funcionar.

Incluso puse una declaración if en el cuerpo principal para que aparezca un mensaje emergente si el parámetro está configurado, pero no parece ser recogido.

Sé que estoy haciendo algo tonto (soy un novato en PHP) pero parece que no puedo encontrar qué es...

Ver código aquí:

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

Solución

creo que pusiste

$_POST['destroy']

En lugar de

$_GET['destroy']

Debe utilizar un formulario si desea utilizar una variable $_POST.Las variables $_GET se almacenan en la URL.

Otros consejos

Por cierto puedes usar

$_REQUEST['destruir']

que funcionaría independientemente de si los datos se pasan en una solicitud POST o GET.

En el Manual PHP tiene un fragmento de código para destruir una sesión.

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

Sí, vas a querer hacer

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

o

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

Sé que estoy haciendo algo tonto (soy un novato en PHP) pero parece que no puedo encontrar qué es...

así vas a aprender mucho ;) disfrútalo...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top