在php中使用“get”时捕获异常

时间:2011-04-10 05:16:37

标签: php exception-handling

我是php的新手,我想知道如何捕获在post参数上使用“get”时发生的错误。

我的页面将包含以下网址:

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 />

3 个答案:

答案 0 :(得分:3)

一般而言,重定向不是处理无效ID的正确方法。

按照标准,应发出404标题。

因此,只需在数据库中查询给定的id,如果没有返回数据,则显示404页面,其中包含相应的标题。但是,后一页可能会使用JS重定向到主页面。

说到例外,一般来说,如果使用得当,任何异常都会引发503错误。

但表中缺少某些id不应引发任何系统级错误。它是程序逻辑级别,应该无异常地处理这些错误。

答案 1 :(得分:1)

对于初学者,您需要有一些方法来检查传递的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

答案 2 :(得分:0)

如果您正在寻找最简单的解决方案,只需在使用之前检查变量是否已设置:

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
}