分页链接没有正确指导

时间:2018-03-16 19:10:45

标签: php pagination

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

这是一个导入XML Feed并对结果进行分页的插件。

例如,当使用' 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> ';

1 个答案:

答案 0 :(得分:1)

以下是发生的事情

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

现在说你点击&#34; First&#34;按钮,您被重定向到$_SERVER['REQUEST_URI'].'?page=1#rss',所以现在您在地址栏上的网址为http://mypage?page=1#rss

现在当你点击&#34; First&#34;再次?文本?page=1#rss附加到已存在的请求Uri,即http://mypage?page=1#rss。结果是?你猜到了 http://mypage/test?page=1#rss&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> ';