【问题标题】:PHP Query String - parameter duplicatesPHP 查询字符串 - 参数重复
【发布时间】:2012-07-31 14:05:17
【问题描述】:
这是我用于创建分页链接的代码:
echo "<a href='".$_SERVER['PHP_SELF']."?".$_SERVER["QUERY_STRING"]."&page=$ni'><span>$ni</span></a>";
唯一的问题是每次点击链接,'page' 参数在 URL 中不断增加:
http:..php?para1=something¶2=something¶3=something&page=2&page=3&page=4
我能理解为什么。每次单击链接时,都会将另一个 'page' 参数添加到现有 URL。
有什么办法解决吗?
谢谢
【问题讨论】:
-
永远不要使用$_SERVER['PHP_SELF'],至少要先使用htmlencode。否则,您的代码很容易受到PHP injection 的影响。真的,可以来自客户端的任何 $_SERVER 变量也是如此。
标签:
php
mysql
pagination
query-string
【解决方案1】:
不要在每次页面加载时都附加 .$_SERVER["QUERY_STRING"].。
就用这个吧:
echo "<a href='".$_SERVER['PHP_SELF']."?page=$ni'><span>$ni</span></a>";
如果您需要来自 QUERY_STRING 的其他参数,请将其单独添加到您的 URL。
IE:
echo "<a href='".$_SERVER['PHP_SELF']."?page=$ni¶1=something...'><span>$ni</span></a>";
【解决方案2】:
关于您的示例代码:
$_SERVER["QUERY_STRING"] = para1=something¶2=something¶3=something&page=2&page=3&page=4
因此,当您创建链接并将 $_SERVER["QUERY_STRING"] 预先附加到 &page=$ni 时,您的链接确实是
para1=something¶2=something¶3=something&page=2&page=3&page=4&page=$ni