【问题标题】: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&para2=something&para3=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&para1=something...'><span>$ni</span></a>";

【讨论】:

    【解决方案2】:

    关于您的示例代码:

    $_SERVER["QUERY_STRING"] = para1=something&para2=something&para3=something&page=2&page=3&page=4 
    

    因此,当您创建链接并将 $_SERVER["QUERY_STRING"] 预先附加到 &page=$ni 时,您的链接确实是

    para1=something&para2=something&para3=something&page=2&page=3&page=4&page=$ni
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      相关资源
      最近更新 更多