2008-08-19 13 views
1

J'essaie de faire un script php de test simple pour les sessions. Fondamentalement, il incrémente un compteur (stocké dans $_SESSION) chaque fois que vous actualisez cette page. Cela fonctionne, mais j'essaye d'avoir un lien pour détruire la session qui recharge la page avec le paramètre ?destroy=1. J'ai essayé quelques instructions if pour voir si ce paramètre est défini et si c'est le cas pour détruire la session mais cela ne semble pas fonctionner.Accéder au paramètre html en PHP

J'ai même mis une instruction if dans le corps principal pour faire apparaître un message si le paramètre est défini - mais il ne semble pas être détecté.

Je sais que je fais quelque chose d'idiot (je suis un débutant PHP) mais je ne peux pas sembler trouver ce qu'il est ...

Code Voir ici:

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

Répondre

7

I pensez que vous mettez

$_POST['destroy'] 

Au lieu de

$_GET['destroy'] 

Vous devez utiliser un formulaire si vous souhaitez utiliser une variable $ _POST. Les variables $ _GET sont stockées dans l'URL.

1

Ouais, vous allez vouloir faire

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

ou

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

Par la façon dont vous pouvez utiliser

$ _REQUEST [ 'destroy']

qui fonctionnerait r egardless si les données sont transmises dans une requête POST ou GET.

+1

Pas vraiment une bonne pratique. Il est important de s'assurer que vos variables proviennent de la source attendue. –

+0

Vraiment? pourquoi c'est important? Si quelqu'un peut truquer un GET, ils peuvent simuler un POST aussi facilement. Je pense que ce n'est pas grave si vos variables proviennent de GET ou POST, vous devriez traiter les deux comme étant tout aussi non fiables. – Pat

0

Je sais que je fais quelque chose d'idiot (je suis un débutant php) mais je ne peux pas sembler trouver ce qu'il est ...

qui est la façon dont vous allez apprendre beaucoup;) en profiter ...

2

Dans le PHP Manual il y a un fragment de code pour détruire une session.

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