我是PHP的新手,我正在为CraftCMS开发一个PHP插件。
在我的本地开发机器上,这段代码正在运行;但是,在服务器上,分页链接没有正确指导。
这是一个导入XML Feed并对结果进行分页的插件。
例如,当使用' PHP_SELF'在代码中,链接重定向到索引页面,当使用' REQUEST_URI时,'该链接第一次正常工作,但附加了每个连续的URI。
我想知道是否会有解决这个问题的解决方法或更好的方法?
此版本将您带回主页: 代码:
echo '<a href="'.$_SERVER['PHP_SELF'].'?page=1#rss" title="First" class="btn"><<</a> <a href="'.$_SERVER['PHP_SELF'].'?page='.( $page - 1 ).'#rss" title="Previous" class="btn prev"><</a> ';
虽然这个版本每次附加查询字符串: 例如http://mypage/test?page=1&page=2
代码:
echo '<a href="'.$_SERVER['REQUEST_URI'].'?page=1#rss" title="First" class="btn"><<</a> <a href="'.$_SERVER['REQUEST_URI'].'?page='.( $page - 1 ).'#rss" title="Previous" class="btn prev"><</a> ';
答案 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"><<</a> <a href="'.$_SERVER['REQUEST_URI'].'?page='.( $page - 1 ).'#rss" title="Previous" class="btn prev"><</a> ';