我是php的新手,我想知道如何捕获在post参数上使用"get"时发生的错误。
我的页面将有以下url:
http://www.mysite.com/page.php?id=5然而,我希望能够重定向用户到主页,如果id不存在于网站上。如何在php中做到这一点?
当到达这一行时,页面崩溃:
$ID = $_GET['id'];
它给了我这个错误:
<b>Notice</b>: Undefined index: id in <b>//test.php</b> on line <b>36</b><br />
一般来说,重定向不是处理无效id的正确方法。
按照标准,应该发出404报头。
因此,只需在数据库中查询给定的id,如果没有返回数据,则显示带有适当标题的404页面。但是,后一页可能会使用JS重定向到主页面。
说到异常,一般来说,任何异常,如果使用得当,都应该引发503错误。
但是表中缺少某个id不应该引发任何系统级错误。这是程序逻辑级别,这样的错误应该在没有异常的情况下处理。
对于初学者,您需要有一些方法来检查传递的id是否对您的站点有效。最好的方法可能是编写一个为您检查的函数,然后根据其结果进行重定向。
function valid_id( $id ){
// Talk to your database and check the ID, then return TRUE or FALSE
}
if( !valid_id( $_GET["id"] ) ){
// Redirect to a 404 page or the site index
}
// Normal page loading goes here
如果您正在寻找最简单的解决方案,只需检查变量在使用它之前是否已设置:
if (isset($_GET['id']) {
// 'id' exists, do anything you want with it
}else {
// 'id' wasn't provided, redirect with header() or call a 404 page
}