0

我正在为我的公司开发一个需要用户登录的应用程序。为了自动化登录过程,我尝试将 ldap id 和密码身份验证与此应用程序集成。下面是我为此集成编写的代码。我在网上查了一下,找不到任何人面临这个问题。

我有这个代码->

function isAuthenticated($u,$p) {
        $ldap_host = 'my_host';
        $ldap = ldap_connect($ldap_host);
        ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
        if($ldap) {
                if($bind = ldap_bind($ldap,$u,$p)) {
                    ldap_unbind($ldap);
                    return 'Authenticated';
                } else {
                        return 'Invalid Credentials';
                    }
            } else {
                    return 'Not able to connect';
                }
    }

$username = 'preventAnonymousLogin';
$password = 'preventAnonymousLogin';

if(isset($_REQUEST['uname'])) {
        $username = $_REQUEST['uname'];
    }

if(isset($_REQUEST['password'])) {
        $password = $_REQUEST['password'];
    }

$auth = isAuthenticated($username,$password);

这在大多数情况下都有效,但有时它不会并给出此错误->

Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\avrs\htdocs\ldap.php on line 12

我不知道为什么这有时会起作用,而有时却不起作用。请建议。提前致谢。

相同的代码间歇性地工作。我试图清除 cookie 和所有这些似乎在一段时间内有效,但不是今天。因此,除非我确定问题是什么,否则我认为我将无法永久解决此问题。

4

3 回答 3

1

确保为 ldap_host 提供完整的 DNS 名称,例如 myhost.mydomain.com。

于 2013-08-31T01:09:39.183 回答
0

根据错误,您可以尝试将 C:\xampp\htdocs\avrs\htdocs\ldap.php 中的最大脚本执行时间设置为 60 秒或大于 30 秒。从您上面的代码来看,它看起来像

function isAuthenticated($u,$p) {
        set_time_limit(60);
       // Rest of your code from above
    }

set_time_limit 文档

于 2013-08-28T21:47:42.640 回答
0

看看这些例子。第一个是一个非常简单的 LDAP/活动目录登录脚本。第二个实际上是为 Yii 框架构建的,但更健壮,因为它可以处理使用多个服务器,以防其中一个服务器出现故障。

简单的 LDAP / Active Directory 表单

Yii Active Directory 用户身份

于 2014-04-22T12:52:34.090 回答