使用"get"捕获异常;在php中


Catching exceptions while using "get" in php

我是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
}