在PHP中获取表单。如何链接到结果的第二页+?

时间:2012-06-07 15:10:19

标签: php forms post get pagination

我在PHP中有一个POST表单,我正在转换为GET

该表格有效,并为我提供了第一页结果,没有任何问题。

但是如何链接到第二页?我假设我必须将所有GET参数复制到“下一页”链接加上页码(脚本已经处理过),但我该怎么做?

澄清:如何将表单中的所有GET变量放到页面中的链接上?

3 个答案:

答案 0 :(得分:2)

最简单的方法是做类似的事情:

$get = preg_replace("/page=\d+/i", "", $_SERVER['QUERY_STRING']);

$link = "somepage.php?".$get."&page=".($_GET['page']+1);

echo "<a href='".$link."'>Next Page</a>";

只需获取获取字符串,删除页面然后将页面添加回+1。请注意,由于人们可以在查询字符串中传递任何内容,因此这将是不安全的。更好的选择是通过检查每个预期的$ _GET key =&gt;值对来明确地构建URL,验证它,然后将其添加到链接变量。这样,查询字符串中的任何其他位都不会回显到页面。

编辑:

好的,这是一个非常快速的例子。

$category = (int)$_GET['cat'];
$keyword = trim($_GET['keyword']);
$keyword = filter_var($keyword, FILTER_SANITIZE_STRING);


$nextlink  = "somepage.php?";
$nextlink .= http_build_query(array(
   "cat" => $category,
   "keyword" => $keyword,
   "page" => $page+1
));

所以基本上你得到了你想要的GET var,验证它们,然后只使用http_build_query和一个关联数组来构建链接的查询字符串。我放入他们的安全性是非常基本的,但是类型转换数量和限制你可以坚持到字符串中的crud数量是一个开始的地方

答案 1 :(得分:0)

简单地说,你会从请求中读出它们:

$link = 'mypage/?someitem=' . $_GET['someitem'] . '&amp;page=' . ($page + 1);

虽然您可能不希望信任这些参数,因为它们可能包含HTML注入或旨在攻击您网站的其他恶意技巧。

答案 2 :(得分:0)

不只是URL?param1=val1&param2=val2&...吗?