1

我有一个内容<div>,其中包含不同的 PHP 文件,具体取决于$_GET值...例如,我有/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参数的状态

我意识到为什么会发生这种情况,但是有没有很好的解决方法?

4

2 回答 2

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';
于 2013-03-07T09:45:30.083 回答
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 收集预先指定的变量。这避免了一些安全问题。

于 2013-03-07T09:49:56.327 回答