为了账号安全,请及时绑定邮箱和手机立即绑定

页面跳转越界问题,求老师解答

<?php
		/**分页模块**/
	$p=empty($_GET['p'])?1:$_GET['p'];//获取页码;
	$table='cms_p';//数据库表名称
	

		/**php->mysql**/
	$mysqli= new mysqli('localhost','root','5866138','php_cms');
	if($mysqli->errno)
	{
		die('错误号是:'.$mysqli->errno.'错误信息:'.$mysqli->error);
	}
	$mysqli->set_charset('utf8');
	$sql='select count(id) as c from cms_p;';
	
	$res=$mysqli->query($sql);
	if(!$res)
	{
		die('查询失败'.$mysqli->error);
	}
	else if(is_object($res))
	{	
		if($res->num_rows>0)
		{
			$row1=$res->fetch_all(MYSQLI_ASSOC);
			$res->free();
		}else { echo "没有结果";
		$row1=1;}
	}


		/**分页设置**/
	$pagesize=10;//每页的数据量;
	$pagecount=ceil($row1[0]['c']/$pagesize);//页面的总数量;
	$limit=($p-1)*10;
	
	

		/**数据处理模块**/
	$sql="select * from cms_p limit $limit , $pagesize ;";
	$res2=$mysqli->query($sql);
	if(!$res2)
	{
		die('查询失败'.$mysqli->error);
	}
	else if(is_object($res2))
	{	
		if($res2->num_rows>0)
		{
			$row2=$res2->fetch_all(MYSQLI_ASSOC);
			$res2->free();
		}else { echo "没有结果";}

	}



		/**数据显示模块**/
	echo '<table border="1" cellspacing="0" cellpadding="6">
				<caption>CMS用户管理列表</caption>
			<tr>
				<th>编号</th>
				<th>实际id</th>
				<th>用户名</th>
				<th>密码</th>
				<th>年龄</th>
				<th>性别</th>
				<th>权限</th>
				<th>注册ip地址</th>
				<th>注册时间</th>
				<th>操作</th>
			</tr>';
	if($row1==1)
	{
		echo '<tr><td colspan="10">没有结果!不能显示!</td></tr>';
	}else 
	{
		$i=1;
		foreach($row2 as $key=>$val)
		{
			echo '<tr>';
			echo '<td>'.$i.'</td>';
			echo '<td>'.$val['id'].'</td>';
			echo '<td>'.$val['uname'].'</td>';
			echo '<td>'.$val['psd'].'</td>';
			echo '<td>'.$val['age'].'</td>';
			echo '<td>'.$val['sex'].'</td>';
			echo '<td>'.$val['po'].'</td>';
			echo '<td>'.$val['rip'].'</td>';
			echo '<td>'.$val['rtime'].'</td>';
			echo '<td><a href="'.$val['id'].'">修改</a></td>';
			echo '</tr>';
			$i++;
		}
	}
	echo '</table>';

		/**分页操作模块**/
	echo '<div>';
	if($p<=1){
		$p=1;
	}
	if($p>=$pagecount)
	{
		$p=$pagecount;
	}
	if($p>1)
	{
		echo '<a href="?p=1"> 首页 </a>';
		echo '<a href="?p='.($p-1).'"> <上一页 </a>';
	}

	if($pagecount<=10)
	{
		for($j=1;$j<=10;$j++)
		{
			echo '<a href="?p='.$j.'"> '.$j.' </a>';
		}
	}else
	{
		if($p>=6&&$p<=$pagecount-6)
		{	
			echo '...';
			for($j=$p-4;$j<=$p+5;$j++)
			{	
				echo '<a href="?p='.$j.'"> '.$j.' </a>';	
			}
			echo '...';
		}

		else if($p>$pagecount-6&&$p<=$pagecount)
		{
			echo '...';
			for($j=$pagecount-7;$j<=$pagecount;$j++)
			{
				
				echo '<a href="?p='.$j.'"> '.$j.' </a>';
			}
		}

		else 
			{
				for($j=1;$j<=10;$j++)
				{
					echo '<a href="?p='.$j.'"> '.$j.' </a>';	
				}
				echo '...';
			}
	}
	if($p<$pagecount)
	{
		echo '<a href="?p='.($p+1).'"> 下一页> </a>';
		echo '<a href="?p='.$pagecount.'"> 尾页 </a>';
	}
	echo ' 共'.$pagecount.'页'.'当前第 '.$p.' 页';
	echo '到第<form action="page.php?p='.$p.'" ><input type="number" name="p" size=2 /> <input type="submit" value="跳转" /></form>';
	echo "</div>";
?>

比如我的页数只有20页,然后我输入100,跳转的时候会出错,写的过滤越界代码没有生效,求解为什么?

正在回答

2 回答

我没有细看这样行不行

$p = min($p, $pagecount);

0 回复 有任何疑惑可以回复我~
#1

未_眠 提问者

我试过了,好像还是不行....下面的就是我写的实际过滤代码
2015-07-21 回复 有任何疑惑可以回复我~
#2

未_眠 提问者

我找到原因了,是因为我的判断没有放对位置
2015-07-22 回复 有任何疑惑可以回复我~

我试了

if($p<=1){
		$p=1;
	}
	if($p>=$pagecount)
	{
		$p=min($p,$pagecount);
	}

这样还是不行啊.不知道为什么不走这段代码....我也没有分析工具............

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

页面跳转越界问题,求老师解答

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信