我在PHP中有一个POST
表单,我正在转换为GET
。
该表格有效,并为我提供了第一页结果,没有任何问题。
但是如何链接到第二页?我假设我必须将所有GET
参数复制到“下一页”链接加上页码(脚本已经处理过),但我该怎么做?
澄清:如何将表单中的所有GET
变量放到页面中的链接上?
答案 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'] . '&page=' . ($page + 1);
虽然您可能不希望信任这些参数,因为它们可能包含HTML注入或旨在攻击您网站的其他恶意技巧。
答案 2 :(得分:0)
不只是URL?param1=val1¶m2=val2&...
吗?