我需要将最后 3 次搜索保存在 cookie 中并显示
I need that the last 3 searches are saved in a cookie and displayed
我希望将最近 3 次搜索保存在 Cookie 中并显示在“
”标签中。
这是我的 HTML 代码:
<form class="Dform" method="POST" action="index.php">
<input type="text" name="search" value="">
<input type="submit" name="" value="Search">
</form>
我只显示了之前的搜索,但我不知道如何执行前 2 个搜索,这是我的 php 代码:
<?php
if (!empty($_POST['search']))
{
setcookie('PreviousSearch', $_POST['search'], time()+60*60,'',localhost);
}
?>
<?php
$r1 = htmlspecialchars($_COOKIE['PreviousSearch']);
echo '<p> Previous search (1) : '.$r1.'</p>';
?>
有多种方法可以实现这一点。
虽然我更喜欢数据库方法,但我会保持简单并向您展示序列化方法。
您的 Cookie 中当前拥有的内容:上次搜索。
您在 Cookie 中想要的内容:最后三个搜索。
所以,我们需要一个数组在Cookie中。但是我们不能在里面放一个普通的数组。有一些解决方法。我将使用 serialize
方法。但我们也可以使用 json,逗号分隔的列表,...
您的代码应执行如下操作:
// Gets the content of the cookie or sets an empty array
if (isset($_COOKIE['PreviousSearch'])) {
// as we serialize the array for the cookie data, we need to unserialize it
$previousSearches = unserialize($_COOKIE['PreviousSearch']);
} else {
$previousSearches = array();
}
$previousSearches[] = $_POST['search'];
if (count($previousSearches) > 3) {
array_shift($previousSearches);
}
/*
* alternative: prepend the searches
$count = array_unshift($previousSearches, $_POST['search']);
if ($count > 3) {
array_pop($previousSearches);
}
*/
// We need to serialize the array if we want to pass it to the cookie
setcookie('PreviousSearch', serialize($previousSearches), time()+60*60,'',localhost);
我的代码未经测试,因为我已经很久没有使用 cookie 了。但它应该有效。
我希望将最近 3 次搜索保存在 Cookie 中并显示在“
”标签中。 这是我的 HTML 代码:
<form class="Dform" method="POST" action="index.php">
<input type="text" name="search" value="">
<input type="submit" name="" value="Search">
</form>
我只显示了之前的搜索,但我不知道如何执行前 2 个搜索,这是我的 php 代码:
<?php
if (!empty($_POST['search']))
{
setcookie('PreviousSearch', $_POST['search'], time()+60*60,'',localhost);
}
?>
<?php
$r1 = htmlspecialchars($_COOKIE['PreviousSearch']);
echo '<p> Previous search (1) : '.$r1.'</p>';
?>
有多种方法可以实现这一点。 虽然我更喜欢数据库方法,但我会保持简单并向您展示序列化方法。
您的 Cookie 中当前拥有的内容:上次搜索。
您在 Cookie 中想要的内容:最后三个搜索。
所以,我们需要一个数组在Cookie中。但是我们不能在里面放一个普通的数组。有一些解决方法。我将使用 serialize
方法。但我们也可以使用 json,逗号分隔的列表,...
您的代码应执行如下操作:
// Gets the content of the cookie or sets an empty array
if (isset($_COOKIE['PreviousSearch'])) {
// as we serialize the array for the cookie data, we need to unserialize it
$previousSearches = unserialize($_COOKIE['PreviousSearch']);
} else {
$previousSearches = array();
}
$previousSearches[] = $_POST['search'];
if (count($previousSearches) > 3) {
array_shift($previousSearches);
}
/*
* alternative: prepend the searches
$count = array_unshift($previousSearches, $_POST['search']);
if ($count > 3) {
array_pop($previousSearches);
}
*/
// We need to serialize the array if we want to pass it to the cookie
setcookie('PreviousSearch', serialize($previousSearches), time()+60*60,'',localhost);
我的代码未经测试,因为我已经很久没有使用 cookie 了。但它应该有效。