2011-05-03 118 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。死在那里很好用,因为有了它你就可以设置一个可读的错误/警告让开发者看到。