繁体   English   中英

PHP LDAP绑定间歇性问题

[英]PHP LDAP bind intermittent issue

我正在为我的公司开发一个需要用户登录的应用程序。为了使登录过程自动化,我尝试将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,并且所有这些似乎都可以在一段时间内正常工作,但现在不是。 因此,除非我确切知道问题出在哪里,否则我认为我将永远无法解决此问题。

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

根据错误,您可以尝试将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文档

看一下这些例子。 第一个是一个非常简单的LDAP /活动目录登录脚本。 第二个实际上是为Yii框架构建的,但是更强大,因为它可以在多个服务器之一发生故障的情况下使用多个服务器。

简单的LDAP / Active Directory表单

Yii Active Directory用户身份

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM