【问题标题】:PHP: die or check results?PHP:死掉还是检查结果?
【发布时间】:2011-08-17 17:09:14
【问题描述】:

我必须说,我正在使用 PHP 实现 LDAP,这相当容易。但是我有一个关于使用die() 或检查函数返回的问题。从下面的代码 (taken from here),如果您使用 die()ldap_connect,检查 $ldapconn 的意义何在?如果ldap_connect 出现问题,PHP 不应该以die() 退出吗?

// 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...";
    }

}

【问题讨论】:

    标签: php ldap exit die


    【解决方案1】:

    它没有任何用途。 ldap_connect 如果失败则返回 false 从而死掉,因此您可以删除 2 个中的一个。

    我建议删除模具并添加一些良好的错误处理。

    来源:PHP ldap_connect

    您应该小心在 PHP5.3 中测试 ldap_connect 我可以成功连接到 ldap_connect 始终返回 true 的任何服务器(现有或不存在)。链接类型始终为 ldap_connection 但实际上可能无法正常工作/成功。我建议使用@ldap_bind 验证连接是否有效,然后检查错误。

    【讨论】:

      【解决方案2】:

      你说得对,这太多余了。

      顺便说一句,您应该只在模型原型或非常简单的 CLI 脚本中使用 die。对于“真实”网站,您应该更优雅地处理错误并输出正确的错误页面,而不仅仅是dieing。

      【讨论】:

      • if ($ldapconn) {} 语句下面可能有代码,这些代码将在没有 die() 的情况下执行。但你是对的,die() 不是正确的错误处理。
      【解决方案3】:

      如果连接失败,ldap_connect() 将返回 false。在这种情况下,脚本由 die() 停止并返回一条消息。此行以下的其他代码不会被执行。

      【讨论】:

        【解决方案4】:

        ldap_connect 出错时返回 false。模具在那里很有用,因为有了它,您将能够设置一个可读的错误/警告供开发人员查看。

        【讨论】:

          猜你喜欢
          • 2016-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-30
          相关资源
          最近更新 更多