我有一个内容<div>
,其中我根据$_GET
值包含不同的PHP文件...例如,我有/index.php?type=foo&action=bar
。我试图包含一个PHP文件,其中包含一些表数据和简单的分页,如下所示
$paginate .= "<a href='$target&page=$prevPage'>previous page</a>";
$target = $_SERVER[ 'REQUEST_URI' ];
。它的工作原理我想要它的例外,每次我去下一页/上一页时,URL都会重复。例如:
/index.php?type=foo&action=bar&page=2&page=3&page=4&page=3&page=2
等等......使用$_SERVER["PHP_SELF"]
让我回到\index.php
而没有额外的$_GET
参数
我意识到为什么会这样,但有一个很好的解决方法吗?
答案 0 :(得分:0)
试试这个:
$target = $_SERVER[ 'REQUEST_URI' ];
$target = preg_replace('/&page=\d*/',"",$target);
$paginate .= "<a href='$target&page=$prevPage'>previous page</a>";
最好给出页面名称:
更改:
$target = $_SERVER[ 'REQUEST_URI' ];
致:
$target = 'your_page.php';
答案 1 :(得分:0)
请注意,使用用户输入创建URI可能是一个安全问题。
在我看来,您必须将请求解码为例如数组。然后,您可以编辑值并创建新的查询字符串。
$cur = $_GET;
$cur['page'] = 7;
$new = array();
foreach ($cur as $key=>$val) {
// Possily you need to remove magic quotes, here
$new[] = url_encode($key).'='.url_encode($val);
}
$target = 'index.php?'.implode('&', $new);
我还建议使用固定文件名。使用$ _SERVER [“PHP_SELF”]仅在脚本名称可能更改时才有意义。通常,情况并非如此。
还要考虑从$ _GET或$ _REQUEST中收集预先指定的变量。这避免了一些安全问题。