2016-04-12 10 views
2

çıkış geçin. Nasıl yaparım? Her zaman hata mesajını gösterir, ancak belirttiğim değil. Yardımı şükredin, şimdiden teşekkürler.başarısız bağlantı ben veritabanı bağlantısı başarısız olduğunda çıkış sayfasına yönlendirme çalışıyorum

Richard

kodu:

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

} 

göstermiyor "Bağlantı olabilir ..."

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

Sen php uyarıları gizlemek gerekir. Metin ekrana getirildikten sonra üstbilgi değişiklik yapamaz. – jjonesdesign

+0

Onları nasıl saklıyorsun? –

+0

Add "error_reporting (0);" php dosyasının – jjonesdesign

cevap

0

Eğer odbc_connect işlevi tarafından tetiklenir bkz uyarı, öyle ise exit dizesinin basılmaması garip, çıkışınızın çalıştırılmasını engellediğinden yönlendirmenin çalışmadığı garip değil.

Dene:

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

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

bağlantı fonksiyonun önünde '@' işaretini kullanarak bağlantı ile bu uyarıyı yok sayabilirsiniz (ve gerektiği). (tüm hataları görmezden daha zarif olan).

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

düzenlemek: bunu ve hala kullanıcıya mesaj göstermek artı html metaetiketinin yönlendirmesinin için güzel bir yolu yönlendirir:

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

başında Bu, herhangi bir çıkış yapılmadan önce başlıkları :) Fonksiyonlar HTTP başlıklarını değiştirmek göndermek/çağrılması gerekir önce, herhangi bir html sahip olamaz :) başlıklar zaten hata göndermek verecektir. –

+0

@MartinAndreev haklısınız, bu konuda hiç düşünmediniz. Kodu değiştirdi. –

+0

tamam, hala çalışmayacak. yeniden ifade edeyim, kullanıcı başarıyla giriş yapar, (bir oturum oluşturulur, işlevin çağrıldığı yerde page.php'ye yönlendirilir. hata verir, page.php hatasıyla kalır. Bağlantı ile ilgili herhangi bir sorun olduğunda kullanıcı oturumunu kapatmaya çalışır. eserler bu şekilde yönlendiriyor? –

1

Sen yönlendirme önce komut dosyasını sona erer bir çıkış, yapıyoruz . Hata mesajınızı get parametresi olarak iletebilir ve ihtiyacınız varsa sayfanızda gösterebilirsiniz.

Kodunuz gibi görünmelidir:

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

Ayrıca sadece eklemek uyarıyı gizlemek istiyorsanız:

error_reporting(0); 
ini_set('display_errors', 'Off'); 
İlgili konular