如何存储post变量值

时间:2013-07-23 19:40:43

标签: php post paging

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

2 个答案:

答案 0 :(得分:1)

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

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

  • 您的网页index.php(搜索表单)提交给自己
  • 将您的搜索查询汇总为index.php中的查询字符串(如果是帖子
  • 使用已汇编的查询字符串
  • 重定向到find.php
  • 每个搜索信息都将始终位于查询字符串中。
  • 愉快地使用您的分页。

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

然后一定要像你一样对字符串值进行硬编码。

如果您想更安全,可以使用预备语句。

希望这有帮助。