2008-08-19 23 views
1

我正在嘗試爲會話做一個簡單的測試php腳本。基本上,每次刷新頁面時都會增加一個計數器(存儲在$_SESSION)。這是有效的,但我試圖有一個鏈接來銷燬會話重新加載頁面與?destroy=1參數。我已經嘗試了幾個if語句來查看是否設置了該參數,如果是這樣來銷燬會話,但它似乎不起作用。在PHP中訪問html參數

我甚至在主體中放置了一條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."; 
?> 

回答

7

我以爲你把

$_POST['destroy'] 

而不是

$_GET['destroy'] 

如果您想使用$ _POST變量,則需要使用表單。 $ _GET變量存儲在URL中。

1

呀,你要想做

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

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

順便說一句,你可以使用

$ _REQUEST [ '摧毀']

哪些工作r如果數據在POST或GET請求中傳遞,則不受限制。

+1

不是一個很好的做法。確保您的變量來自預期來源非常重要。 – 2010-01-26 17:51:06

0

我知道我在做一些愚蠢的(我是一個PHP新手),但我似乎無法找到它是什麼...

這是你如何去學習很多;)享受它...

2

PHP Manual它有破壞會話的代碼片段。

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