2013-01-14 73 views
2

我有一種新的表格,允許用戶選擇使用亞當分頁方案顯示的結果中的「每頁項目」。該選擇已通過分頁鏈接傳遞到下一頁和上一頁。如果我想將「每頁項目」(ipp)作爲cookie存儲,並且能夠記住其他使用類似方案的頁面,那麼最好的方法是什麼?下面是我的形式:設置「每頁項目」的Cookie

<form action="product_list_by_category_ipp.php" method="get" name="ippForm" id="ipp_changer" class="ipp_changer"> 
<label> 
    #pp:</label> 

<select name="ipp" style="display:inline!important;margin:4px;" onchange="document.forms['ipp_changer'].submit()"> 
<option value="<?php echo $ipp; ?>"><?php echo $_GET['ipp']; ?></option> 
<option value="5">5</option> 
<option value="15">15</option> 
<option value="25">25</option> 
<option value="All">All</option> 
</select> 
<input type="hidden" name="cat" value="<?php echo $product_category; ?>" /> 


</form> 

回答

0

在PHP

setcookie("ipp", VALUE); 

要找回它

$_COOKIE["ipp"] 
1

$_GET['ipp']設置,在Cookie通過setcookie()存儲它的價值。在隨後的頁面上,首先檢查是否設置了$_GET['ipp'],意味着值正在更改,然後檢查如果$_GET中沒有傳遞新值,那麼檢查是否設置了Cookie $_COOKIE['ipp'],最後,如果兩者都不存在,則提供默認值。

隨時有$_GET['ipp']存在,它會覆蓋現有的cookie並被使用,直到其他$_GET['ipp']覆蓋它。

// If the value was passed in $_GET and is an int or "All"... 
if (isset($_GET['ipp']) && (ctype_digit($_GET['ipp']) || $_GET['ipp'] == 'All')) { 
    // Store it in the cookie 
    setcookie('ipp', $_GET['ipp']); 
    // And save in a variable 
    $ipp = $_GET['ipp']; 
} 
// Then check existing cookies 
else if (isset($_COOKIE['ipp']) && (ctype_digit($_COOKIE['ipp']) || $_COOKIE['ipp'] == 'All')) { 
    $ipp = $_COOKIE['ipp']; 
} 
// Finally use a default value if none was set 
else { 
    // Default to 3 for example: 
    $ipp = 3; 
} 

在您的標記之後,您只需要使用值$ipp因爲它的來源已經從$_GET, $_COOKIE解決,或默認值。由於我們將其驗證爲整數,因此不需要通過htmlspecialchars()進行額外的轉義。

<option value="<?php echo $ipp; ?>"><?php echo $ipp; ?></option> 

如果你真的想成爲嚴格驗證$_GET['ipp']正是您提供一個選項,使用in_array()

// Make sure it's one of your allowed values... 
if (isset($_GET['ipp']) && in_array($_GET['ipp'], array(5,15,20,25,'All')) {...} 
+0

如果選擇「全部」,則ctype_digit($ _ GET ['ipp'])將爲假。 +1爲全面的答案 – PassKit

+0

@PassKit是的,修正的。 –

+0

謝謝。這很好。我在else之後添加了「$ _GET ['ipp'] = $ _COOKIE ['ipp'],所以如果還沒有設置的話,它會設置。 –