2016-04-12 37 views
2

我試圖在數據庫連接失敗時重定向到註銷頁面。我該怎麼做?它總是顯示錯誤信息,但不是我指定的那個。幫助感謝,提前感謝。連接失敗繼續登出

理查德

代碼:

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"); 
     } 

} 

它不顯示 「連接可能......」

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 
+0

你需要隱藏PHP警告。一旦文字被放置在屏幕上,標題就不能進行更改。 – jjonesdesign

+0

你如何隱藏它們? –

+0

Add 「error_reporting(0);」在你的PHP文件的開頭 – jjonesdesign

回答

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(); 
    } 
+0

這將使頭已經發送錯誤:)你不能有任何HTML之前標題:) 發送/修改HTTP頭函數必須在任何輸出之前調用。 –

+0

@MartinAndreev你是對的,沒有想到那個謝謝。更改了代碼。 –

+0

好的,仍然不行。讓我改述一下,用戶成功登錄(創建一個會話,重定向到調用該函數的page.php,返回錯誤,停留在page.php上,並返回錯誤,如果有連接問題,嘗試登錄用戶。 –

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');