2013-08-28 67 views
0

我正在爲我公司開發一個需要用戶登錄的應用程序。 要自動執行登錄過程,我試圖將ldap id和密碼驗證與此應用程序集成。以下是我爲此集成編寫的代碼。我在網上查過,找不到任何人面臨這個問題。PHP LDAP綁定間歇性問題

我有這樣的代碼 - >

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 

我不知道爲什麼這會工作有時甚至有些時候它不會。請建議。提前致謝。

這個相同的代碼間歇地工作。我試圖清除餅乾和所有似乎工作一段時間,但它不是今天。所以,除非我確切知道問題是什麼,我想我無法解決這個問題。

回答

1

確保您的ldap_host,例如提供完整的DNS名稱myhost.mydomain.com。

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 documentation