php - PHP分页脚本未显示页码的正确内容
问题描述
我已经构建了一个 php 脚本来前后导航我的博客页面,但是第一页显示正确,但是当我导航到下一页时,它显示正确的数字,但仍然显示与以前相同的内容。然后,下一个按钮继续显示当前页面。
这是我的脚本:
$publication = "magazine";
$ppp = "6";
if(isset($_GET["id"])){$id = $_GET["id"];}else{
header("Location: ".$url."");
exit();
}
if(isset($_GET["currentpage"])){$currentpage = $_GET["currentpage"];}else{
header("Location: ".$url."");
exit();
}
$count_sql = "SELECT id FROM publication_posts WHERE publication = '".$publication."' AND issue = '".$id."'";
$count_res = mysqli_query($con, $count_sql);
$count_total = mysqli_num_rows($count_res);
//If None, Then Exit
if($count_total == 0){
header("Location: ".$url."");
exit();
}
$display_limit = $ppp;
$totalpages = ceil($count_total / $display_limit);//$rowsperpage
$currentpage = $totalpages;
$offset = ($totalpages - 1) * $display_limit;//$rowsperpage
if($currentpage == "0"){
header("Location: ".$url."/issue/".$id."/".$totalpages."");
exit();
}
$posts_sql = "SELECT * FROM publication_posts WHERE publication = '".$publication."' AND issue = '".$id."' ORDER BY id DESC LIMIT ".$offset.", ".$display_limit."";
我在这里注意到的另一件事是,如果我将当前页面设置为0
,它仍然显示issue/id/0
,而这应该重定向到$totalpages
有谁知道问题出在哪里?
这是我的分页:
<?php
// range of num links to show
$range = 0;
if ($currentpage != $totalpages) {
// get next page
$nextpage = $currentpage + 1;
// echo forward link for next page
$link_next = "<a href=\"issue/".$id."/".$nextpage."\"><div class=\"pagiCell pagiNext fadeOut\"></div></a>";
}
else{
$link_next = "<div class=\"pagiCell pagiNextX\"></div>";
}
?>
<?php
// range of num links to show
$range = 0;
if ($currentpage > 1) {
// get previous page
$prevpage = $currentpage - 1;
// echo forward link for next page
$link_prev = "<a href=\"issue/".$id."/".$prevpage."\"><div class=\"pagiCell pagiPrev fadeOut\"></div></a>";
}
else{
$link_prev = "<div class=\"pagiCell pagiPrevX\"></div>";
}
?>
<?php
$link_refresh = "<a href=\"issue/".$id."/1\"><div class=\"pagiCell pagiRefresh fadeOut\"></div></a>";
?>
<?php
$randpage = rand(1,$totalpages);
$link_random = "<a href=\"issue/".$id."/".$randpage."\"><div class=\"pagiCell pagiRandom fadeOut\"></div></a>";
?>
短网址:localhost/publication/magazine/issue/1/1
长网址:localhost/publication/magazine/issue?id=1¤tpage=1
解决方案
我认为你的问题是你的$currentpage
var 是一个字符串,你正在用它做数学而不转换它。你应该输入它:PHP:Type Juggling
$nextpage = $currentpage + 1;
变成$nextpage = (int)$currentpage + 1;
就像 Magnus Eriksson 之前所说的那样,您没有检查用户输入是否存在安全问题。测试您的变量的预期值意味着,例如PHP:is_int
推荐阅读
- kubernetes - Kubernetes PVC 共享一个 PV?
- linux - obj-m是什么意思:在Linux设备驱动Makefile中
- php - 如何在excel中导出表格数据以及图像缩略图
- jasper-reports - 如何在碧玉报告中使用字体真棒图标?
- php - 身份验证类不适用于 Laravel 中的 Traits
- unity3d - 如果没有额外的参考对象,反向运动学是否可行?
- node.js - 如何在 nodejs 10.x 中使用 TLSv1.3
- if-statement - if(index(i,$12)==1 表示什么
- html - 如何将引导程序 4 中的内容连续居中?
- angularjs - 谷歌索引的页面没有通过ajax加载内容