我的页面中有一个帖子列表,我还有一个表单来搜索帖子。
这是我的表格:
<form action="" method="post">
<input type="text" name="search" onclick="if(this.value=='Search:')this.value=''" onblur="if(this.value=='')this.value='Search:'" value="Search:" />
<input type="submit" value="Search" name="sendForm" />
</form>
然后,当我的表单被提交了一些值时,我存储了一个带有我的sql条件语句的会话,我只得到了我的新闻列表,其标题就像我在输入中写的那样。
然后,如果我提交的表格没有任何价值,我会取消我的会话,我会再次获得所有新闻的列表。
if(isset($_POST['sendForm'])){
$search = $_POST['search'];
if(!empty($search) && $search != 'Search:'){
$_SESSION['where'] = "WHERE title LIKE '%$search%'";
header('Location: dashboard.php?exe=posts/index');
}
else{
unset($_SESSION['where']);
}
}
这项工作正常,但我需要点击我的输入搜索以取消设置会话并再次收到所有新闻。
即使我刷新我的页面,我只得到我在输入中写的标题新闻,只有当我点击我的提交按钮时,我再次获得所有新闻的列表。
你知道我怎么能解决这个问题,我怎样才能取消我的会话,不仅可以再次点击我的提交,还可以点击页面刷新,因为当我点击链接dashboard.php时,我想显示所有新闻?exe =文章/索引
我在我的页面顶部尝试使用下面的代码,但是这样我的搜索表单不起作用,没有返回任何结果。
if(!empty($_SESSION['where'])){
unset($_SESSION['where']);
}
答案 0 :(得分:1)
另一个快速替代方法是,您可以设置$_SESSION['where'] == ""
而不是取消设置,然后您的查询不会受到影响,因为它只包含任何内容。另请注意,您的代码容易受到SQL注入攻击。
答案 1 :(得分:0)
您可以将用户最后访问过的页面存储在会话中,如果它与当前页面相同且没有提交,则您知道它是刷新的。
或者您可以使用referer
($_SERVER['HTTP_REFERER']
),但它不太可靠,因为它是客户端数据并且可能被篡改。