我有一个包含搜索页面的索引页面,当我提交它时,它通过操作和方法 post 将值传递给 find.php。代码如下
if($_POST['searchsubmit']=="Search"){
$cat=$_POST['searchcategory'];
$area=$_POST['searcharea'];
$term=$_POST['searchbox'];
}
上面的代码是写在find.php上的,现在当我尝试通过基本的分页方法来实现分页,并配合where条件来进行适当的搜索查询
$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 是我的记录数。对于分页的第一页,我传递了一个变量page,其中第一页为0
<a href="find.php?page=<?php echo 0;?>">First</a>
我的搜索查询现在变成了
$que="select * from shops ".$where." ORDER BY likes DESC limit $start,$end";
一旦我点击“first”,我的新链接就变成“/find.php?page=0” 我从索引页搜索栏收到的帖子值丢失了。
有什么方法可以保留这些值吗?我认为这两种方法是通过 GET 和 url 再次发送它们,或者另一种方法是将它们存储在会话中。 还有第三种方法吗?
马克是绝对正确的。不要按原样使用代码。
作为您问题的替代解决方案 -
评论正确。
用途:
// 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']);
然后确保像您所做的那样对字符串值周围的引号进行硬编码。
如果你想更安全,可以使用准备好的语句。
希望这有帮助。