我有一个索引页面,其中包含搜索页面,当我提交它时,它会通过操作和方法发布将值传递给find.php。代码在
之下if($_POST['searchsubmit']=="Search"){
$cat=$_POST['searchcategory'];
$area=$_POST['searcharea'];
$term=$_POST['searchbox'];
}
上面的代码写在find.php上,现在当我尝试通过基本的分页方法实现分页时,在哪里条件下进行适当的搜索查询
$where="where approved='yes'";
if($term!=""){
$where.=" and name like '%$term%'";
}
if($cat!=""){
$where.=" and category like '%$cat%'";
}
if($area!=""){
$where.=" and area like '%$area%'";
}
$start=0;
$end=5;
if($_GET['page']!="")
{
$start=$_GET['page']*$end;
}
其中$ start是我的初始限制,$ end是我的记录数。对于分页的第一页,我传递一个变量页面,其中第一页为
<a href="find.php?page=<?php echo 0;?>">First</a>
我的搜索查询现在变为
$que="select * from shops ".$where." ORDER BY likes DESC limit $start,$end";
只要点击“第一个”,我的新链接就会变成“/find.php?page=0” 并且我从索引页面搜索栏中重新发布的帖子值将丢失。
有没有办法保留这些值?这两种方法,我通过网址和GET再次发送它们,或者另一种方法是将它们存储在会话中。 有没有第三种方法可用?
答案 0 :(得分:1)
作为您问题的替代解决方案 -
答案 1 :(得分:0)
评论是正确的。
使用:
// Start the session
session_start();
// Save variables into session
$_SESSION['somevalue'] = $_POST['value'];
然后当任何页面调用session_start时,它将有权访问$ _SESSION ['somevalue']
此外,您对SQL注入非常开放。清理您的值以确保没有人可以将任意sql代码放入字符串中。如果您使用的是mysqli,它应该像这样简单:
// After connecting to the DB
$_POST['somevalue' = $mysqli->real_escape_string($_POST['somevalue']);
然后一定要像你一样对字符串值进行硬编码。
如果您想更安全,可以使用预备语句。
希望这有帮助。