连接失败继续注销

时间:2016-04-12 08:29:29

标签: php odbc

我正在尝试在数据库连接失败时重定向到注销页面。我该怎么做?它始终显示错误消息,但不显示我指定的错误消息。感谢提前感谢。

理查德

代码:

function ms_connect() {
// Create connection
// Microsoft Access
$db_source = DB_SERVER;
$db_system = DB_SYSTEM_SEC; 
$odbc_driver = "driver={microsoft access driver (*.mdb)};dbq=" . $db_source . ";systemdb=" . $db_system; 


$conn = odbc_connect($odbc_driver, DB_SERVER_USERNAME,DB_SERVER_PASSWORD); // Error returned here! 

        if ($conn) {
            return $conn;
        } else{
                exit("Connection could not be established.");
            header ("Location: /logout.php");
        }

}

它没有显示“Connection can ......”

error shown 
PHP Warning:  odbc_connect(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Not a valid account name or password., SQL state 08004 in SQLConnect in C:\inetpub\wwwroot\functions\functions.php on line 11

2 个答案:

答案 0 :(得分:1)

您正在退出,这将在重定向之前终止脚本。 您可以将错误消息作为get参数传递,并在需要时将其显示在页面上。

您的代码应如下所示:

if ($conn) {
        return $conn;
    } else{
        header ("Location: /logout.php?error=Connection+could+not+be+established.");
    }

此外,如果您想隐藏警告,请添加:

error_reporting(0);
ini_set('display_errors', 'Off');

答案 1 :(得分:0)

您看到的警告是由odbc_connect函数触发的,虽然奇怪的是exit字符串未打印,但您的重定向不起作用并不奇怪,因为退出会阻止它被执行。

尝试:

    if ($conn !== false) {
        return $conn;
    } else{

        header ("Location: /logout.php");
        exit();//just in case
    }

您可以使用连接功能前面的“@”符号通过连接忽略警告(并且您应该)。 (这比忽略所有错误更优雅。)

$conn = @odbc_connect($odbc_driver, DB_SERVER_USERNAME,DB_SERVER_PASSWORD); // Error returned here! 

修改: 一个很好的方法,仍然向用户显示消息加上重定向是使用html元重定向:

    if ($conn !== false) {
        return $conn;
    } else{

        echo '<html><head><meta http-equiv="refresh" content="5;url=/logout.php" /></head><body>Could not create a connection, redirecting in 5 seconds.</body></html>';
        exit();
    }