我有一个新表单,允许用户在使用Adam的分页方案显示的结果中选择“每页项目数”。选择已经通过分页链接传递到下一页和上一页。如果我想将“每页项目数”(ipp)存储为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 :(得分:1)
设置$_GET['ipp']
后,通过setcookie()
将其值存储在Cookie中。在后续页面上,首先检查是否设置了$_GET['ipp']
,意味着该值正在更改,然后检查在$_COOKIE['ipp']
中未传递新值时是否设置了Cookie $_GET
,并且最后,如果两者都不存在,则提供默认值。
任何时候$_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')) {...}
答案 1 :(得分:0)
在PHP中
setcookie("ipp", VALUE);
要检索它
$_COOKIE["ipp"]