2012-01-14 100 views
0

好的, 我有兩個單選按鈕'A'和'B',用戶可以選擇其中的任何一個,默認爲 按鈕'A'被選中,但當用戶來到我的網站並選擇'B',然後選擇更改爲按鈕'B',但問題是,PHP單選按鈕和會話

當用戶移動到我的網站中的另一個頁面時,選擇會回到默認值? 如何解決? 可以在緩存和會話的幫助下完成嗎?如果是,那麼如何:?

這裏是按鈕,

<form name="f1" method="POST" action="<?php echo $PHP_SELF;?>"> 
<span>Family filter:</span> 
<ul> 
<li><input type="radio" name="r1" value="o" onClick="submit();" <?php echo ($_SESSION['r1'] == "o") ? 'checked="checked"' : ''; ?><?php echo ($_POST['r1'] == 'o') ? 'checked="checked"' : ''; ?> />On</li> 
<li><input type="radio" name="r1" value="p" onClick="submit();" <?php echo ($_SESSION['r1'] == "p") ? 'checked="checked"' :''; ?><?php echo ($_POST['r1'] == 'p') ? 'checked="checked"' : ''; ?> />Off</li> 
</ul> 
</form> 



<?php 
session_start(); 

//我不知道該怎麼寫在這裏,以使其工作:?s >

還當我打開頁面兩個按鈕未被選中我怎麼能這樣做按鈕'A'默認情況下保持選中時沒有選中

+0

考慮到您沒有提交按鈕的事實,您將不得不進行AJAX調用以保存會話。 – PeeHaa 2012-01-14 16:39:36

+0

他有onClick =「submit();」應該提交表格。我認爲。所以AJAX並不是必需的。 – 2012-01-14 16:46:59

回答

2

您需要將您的_POST變量翻譯成_SESSION變量。它起初工作,因爲您允許POST或SESSION變量設置檢查:

<?php echo ($_SESSION['r1'] == "o") ? 'checked="checked"' : ''; ?><?php echo ($_POST['r1'] == 'o') ? 'checked="checked"' : ''; ?> 

但是,這是不必要的。在你的頁面的最頂部,你應該有這樣的:

<?php 
session_start(); 
if (isset($_POST['r1'])){ 
    $_SESSION['r1']=$_POST['r1']; 
} 
?> 

,然後向下下面你只需要

<?php echo ($_SESSION['r1'] == "o") ? 'checked="checked"' : ''; ?> 

額外注:確保在session_start()調用發生在很頁面開始,並且它出現在每個頁面的最頂部,您希望會話變量可用。

0
session_start(); 
$_SESSION['r1'] = $_REQUEST['r1']; 

當你提交一個選擇你的PHP腳本,你需要GET/POST /請求變量,並將其存儲到一個會話變量開始在會議結束後。然後在每個php文件中添加一個session_start()語句,並且您將能夠使用該腳本中的所有會話變量。您還可以設置會話cookie,以便在用戶關閉其瀏覽器session_set_cookie_params(0);或使用session_destroy();擊中註銷按鈕時過期。一旦存儲了會話變量,就可以在所有頁面上使用它來設置單選按鈕的「已檢查」屬性。