2016-04-12 6 views
2

Ich versuche, auf die Abmeldeseite umzuschalten, wenn die Datenbankverbindung fehlschlägt. Wie mache ich es? Es zeigt immer die Fehlermeldung an, aber nicht die, die ich angegeben habe. Hilfe geschätzt, danke im Voraus.Verbindung fehlgeschlagen. Zum Abmelden fortfahren.

Richard

Code:

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

} 

es nicht zeigen "Verbindung konnte ..."

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

Sie müssen PHP-Warnungen verstecken. Die Kopfzeile kann keine Änderungen mehr vornehmen, nachdem Text auf dem Bildschirm angezeigt wurde. – jjonesdesign

+0

Wie verstecken Sie sie? –

+0

Hinzufügen "error_reporting (0);" zu Beginn Ihrer PHP-Datei – jjonesdesign

Antwort

0

Die Warnung Sie sehen, wird durch die odbc_connect Funktion ausgelöst, während es seltsam, dass die Zeichenfolge exit nicht gedruckt wird, ist es nicht seltsam, dass Ihre Weiterleitung nicht funktioniert, da der Exit verhindert, dass es ausgeführt wird.

Versuchen:

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

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

Sie können die Warnung ignorieren (und sollten) durch die Verbindung mit dem @ -Zeichen vor der Verbindungsfunktion. (Das ist eleganter als alle Fehler zu ignorieren).

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

bearbeiten: Ein schöner Weg, es zu tun und noch eine Nachricht an den Benutzer anzeigen und umleiten html Meta verwendet Umleitungen:

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

Dies wird geben Header bereits senden Fehler :) Sie können keine HTML-Header vor :) Funktionen, die senden/ändern HTTP-Header müssen aufgerufen werden, bevor eine Ausgabe gemacht wird. –

+0

@MartinAndreev Sie haben Recht, habe nicht darüber gedacht, danke. Der Code wurde geändert. –

+0

ok, wird immer noch nicht funktionieren. Lassen Sie mich umformulieren, der Benutzer meldet sich erfolgreich an (eine Sitzung wird erstellt, wird an page.php umgeleitet, wo die Funktion aufgerufen wird. gibt den Fehler zurück, bleibt mit dem Fehler auf page.php stehen. versucht, den Benutzer bei einem Problem mit der Verbindung abzumelden. funktioniert die Umleitung auf diese Weise? –

1

Sie machen einen Ausgang, der das Skript vor der Umleitung beenden wird . Sie können Ihre Fehlermeldung als Get-Parameter übergeben und auf Ihrer Seite anzeigen, wenn Sie benötigen.

Der Code sollte wie folgt aussehen:

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

Auch wenn Sie die Warnung nur hinzufügen, ausblenden möchten:

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