2011-05-03 68 views
2

我正在用PHP實現LDAP,這很容易,我必須說。不過,我有一個關於使用die()或檢查函數返回值的問題。從下面的代碼(taken from here),如果使用die()ldap_connect,檢查$ldapconn有什麼意義?無論如何,如果ldap_connect出現問題,PHP應該不會退出die()PHP:死或檢查結果?

// connect to ldap server 
$ldapconn = ldap_connect("ldap.example.com") 
    or die("Could not connect to LDAP server."); 

if ($ldapconn) { 

    // binding to ldap server 
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass); 

    // verify binding 
    if ($ldapbind) { 
     echo "LDAP bind successful..."; 
    } else { 
     echo "LDAP bind failed..."; 
    } 

} 

回答

3

它不起任何作用。如果失敗,ldap_connect將返回false,因此您可以刪除其中的一個。2.我建議刪除die並添加一些好的錯誤處理。

來源:PHP ldap_connect

你應該小心在PHP5.3測試ldap_connect我可以成功連接到任何服務器(現有的或沒有),其中ldap_connect總是返回true。鏈接類型始終是ldap_connection,但實際上可能不會工作/成功。我建議驗證連接對@ldap_bind有效,然後檢查錯誤。

+0

+1和很好的答案:在這裏做一些慈善:) – Max 2011-05-03 13:35:22

+0

非常感謝:) – RJD22 2011-05-03 13:35:45

2

你是對的,這是相當多餘的。

順便說一下,您應該只在模型原型或真正簡單的CLI腳本中使用die。對於「真實」網站,您應該更加優雅地處理錯誤並輸出適當的錯誤頁面,而不是僅輸入die

+0

可能會有代碼在_if($ ldapconn){} _語句下面執行,而不會死()。但是你是對的,die()不是一個適當的錯誤處理。 – DanielB 2011-05-03 13:15:42

0

如果連接失敗,則ldap_connect()返回false。在這種情況下,腳本被die()停止並返回一條消息。該行下面的其他代碼不會被執行。

0

ldap_connect在出錯時返回false。死在那裏很好用,因爲有了它你就可以設置一個可讀的錯誤/警告讓開發者看到。