【问题标题】:Pagination Links Not Directing Properly分页链接指向不正确
【发布时间】:2018-03-17 03:19:12
【问题描述】:

我是 PHP 新手,我正在为 CraftCMS 开发一个 PHP 插件。
在我的本地开发机器上,此代码正在运行;但是,在服务器上,分页链接没有正确定向。

这是一个插件,用于导入 XML 提要并对结果进行分页。

例如,当在代码中使用“PHP_SELF”时,链接会重定向到索引页面,而当使用“REQUEST_URI”时,链接第一次可以正常工作,但会附加到每个连续的 URI。

我想知道是否有解决此问题的解决方法或更好的方法?

这个版本带你回到主页: 代码:

echo '<a href="'.$_SERVER['PHP_SELF'].'?page=1#rss" title="First" class="btn">&lt;&lt;</a> <a href="'.$_SERVER['PHP_SELF'].'?page='.( $page - 1 ).'#rss" title="Previous" class="btn prev">&lt;</a> ';

虽然此版本每次都附加查询字符串: 例如http://mypage/test?page=1&page=2

代码:

echo '<a href="'.$_SERVER['REQUEST_URI'].'?page=1#rss" title="First" class="btn">&lt;&lt;</a> <a href="'.$_SERVER['REQUEST_URI'].'?page='.( $page - 1 ).'#rss" title="Previous" class="btn prev">&lt;</a> ';

【问题讨论】:

    标签: php pagination


    【解决方案1】:

    这是发生了什么

    第一次使用$_SERVER['REQUEST_URI']地址栏的URL(也就是$_SERVER['REQUEST_URI']返回的值)是http://mypage

    现在假设您单击“第一个”按钮,您将被重定向到 $_SERVER['REQUEST_URI'].'?page=1#rss',所以现在您在地址栏上的 URL 显示为 http://mypage?page=1#rss

    那么现在当您再次单击“第一个”时会发生什么?文本 ?page=1#rss 附加到已经存在的请求 Uri 即 http://mypage?page=1#rss。那么结果呢?你猜对了 http://mypage/test?page=1#rss&amp;page=1#rss

    为避免这种情况,您需要从请求 Uri 中删除查询字符串(? 之后的部分),并且存在一个 wonderful SO answer 来帮助您做到这一点

    所以你的代码应该是这样的

    $url=strtok($_SERVER["REQUEST_URI"],'?');
    echo '<a href="'.$url.'?page=1#rss" title="First" class="btn">&lt;&lt;</a> <a href="'.$_SERVER['REQUEST_URI'].'?page='.( $page - 1 ).'#rss" title="Previous" class="btn prev">&lt;</a> ';
    

    【讨论】:

    • 非常有帮助,我也了解了 strtok。非常感谢。它有效并避免了我以前的情况。
    猜你喜欢
    • 2013-12-18
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多