簡體   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