0

有点麻烦。基本上我已经创建了一些分页。问题是每次我点击页码 url 时,它只是将参数添加到 url,即使它已经存在。

例如,我登陆页面。我的 url 现在是 example.com/page?pagenum=1,我点击第二页,所以我的 url 现在是 example.com/page?pagenum=1&pagenum=2。现在一切正常,但是您可以想象会变得有点混乱,所以宁愿它更新 URL 中已经存在的参数。我目前正在使用以下内容获取当前页面 URL:

<?php
    function curPageURL() {
     $pageURL = 'http';
     if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
     $pageURL .= "://";
     if ($_SERVER["SERVER_PORT"] != "80") {
     $pageURL .=      $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
     $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}
?>

然后链接是这样的:

<a href='<?php echo curPageURL(); ?>&pagenum=<?php echo "1"; ?>'> 1 </a>

更新 我需要保留的 URL 中有其他参数,我只需要更新“pagenum”

4

2 回答 2

0

你可以http_build_query这样使用:

$all_params = $_GET;
$all_params["page"] = "2";
$link = "page.php?" . http_build_query($all_params); // "page.php?page=2&foo=bar"
于 2013-09-16T14:51:06.477 回答
0

存在问题是因为REQUEST_URI同时包含路径和查询字符串,并且您每翻页都会向该字符串追加一个新的查询字符串。要提取路径,您可以使用以下代码,取自以下答案:

$path = strtok($_SERVER["REQUEST_URI"], '?');

然后,您可以复制现有的查询字符串字段,但删除pagenum

$fields = $_GET;
unset($fields['pagenum']); // remove any existing pagenum value
$path .= '?' . http_build_query($fields); // re-append the query string

然后,您可以或多或少地使用现有的链接代码:

<a href='<?php echo $path; ?>&pagenum=<?php echo "1"; ?>'> 1 </a>
于 2013-09-16T15:06:16.207 回答