如何存储post变量值

问题描述 投票:0回答:2

我有一个包含搜索页面的索引页面,当我提交它时,它通过操作和方法 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 再次发送它们,或者另一种方法是将它们存储在会话中。 还有第三种方法吗?

php post pagination
2个回答
1
投票

马克是绝对正确的。不要按原样使用代码。

作为您问题的替代解决方案 -

  • 您的页面index.php(搜索表单)自行提交
  • 如果是帖子,请将您的搜索查询组装为 index.php 中的查询字符串
  • 使用组装好的查询字符串重定向到 find.php
  • 每个搜索信息都将始终在查询字符串中。
  • 愉快地使用你的分页。

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']);

然后确保像您所做的那样对字符串值周围的引号进行硬编码。

如果你想更安全,可以使用准备好的语句。

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.