2

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>
4

2 に答える 2

1

が設定されている場合$_GET['ipp']、その値をを介してCookieに保存しますsetcookie()。以降のページでは、最初に$_GET['ipp']が設定されているかどうかを確認し、値が変更されていることを示します。次に$_COOKIE['ipp']、新しい値が渡されていない場合はCookieが設定されているかどうかを確認し$_GET、最後に、どちらも存在しない場合はデフォルト値を指定します。

存在する場合はいつでも$_GET['ipp']、既存のCookieを上書きし、別の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']が提供されたオプションの1つであることを確認するには、を使用します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')) {...}
于 2013-01-14T03:17:44.277 に答える
0

PHPの場合

setcookie("ipp", VALUE);

それを取得するには

$_COOKIE["ipp"]
于 2013-01-14T03:16:56.740 に答える