比如news.php?id=1,我直接在地址栏中输入news.php?id=963333,出现的页面是没有文章内容的,但是页面还是存在,像这样输入不存在id值时,应该直接返回错误404页面,求解?
第1个回答 2014-03-19
if(empty($_GET['id']))
{
die('id为空');
}
或者
if($_GET['id'] == '')
{
die('id空')
}
{
die('id为空');
}
或者
if($_GET['id'] == '')
{
die('id空')
}
第2个回答 推荐于2018-03-19
你是根据id从数据库取数据吧?
if(mysql_num_rows()<=0){
header("HTTP/1.0 404 Not Found");
}else{
//正常
}追问
是的 用户直接在地址栏输入数字 如果输入的数字数据库不存在的时候 页面显示的时空数字,如果像你上面这个写法 那么多数据表,每个数据表id都得查询判断那岂不是很费劲 请问有么有更简洁的办法
追答你不查数据库你能知道id存不存在?另外这只是查new调用的表吧,也不会是全部,如果你知道id的大概范围,可以先过滤id。
select id from table1 where id=$id limit 1追问function num_rows($query) {
return mysql_num_rows($query);
}
function get_select($table){
return $this->query("select * from `$table`");
}这是我封装的一个数据库类 ,请问能不能直接从这判断
......你是怎么根据id用你类库查数据的?
最简单就是根据结果集记录数判断。。。看他num_rows($query)是否大于0
id一般肯定都是.....php?id=10类似这样,然后$_get获取的啊
追答你给我看的分装类也没用id查的啊 ,
有就根据查询结果集判断啊 ,有那么难?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
$sql="select id from $table where id=$id limit 1";
$re=mysql_query($sql);
if($re&&mysql_num_rows()>0){
return true;
}else{
return false;
}
}追问
没有 不过 我感觉那么多表好麻烦
本回答被网友采纳第3个回答 2014-03-19
because ID不存在.所有取不到id为那么多的页面.
第4个回答 2014-03-19
肯定要去数据库查啊,不然你怎么知道输入的这个id是不存在的
第5个回答 2014-03-19
你可以根据id先先查询数据库看数据没!有就发送到页面,没有就输出没数据!!