在網絡開發中,身份驗證是十分重要的一個部分。為了實現身份驗證,很多團隊會考慮使用LDAP(輕量目錄訪問協議)服務器。而對于利用這種技術來進行身份驗證的,一種十分流行的方式就是通過PHP LDAP client。
這種客戶端可能會涉及到如下代碼:
$ldap_conn = ldap_connect($ldap_host, $ldap_port); if (!!$ldap_conn) { if(ldap_bind($ldap_conn, $ldap_username, $ldap_password)){ // 驗證成功 } else { // 驗證失敗 } } else { // 連接LDAP服務器失敗 }
如上所示,要基于PHP訪問LDAP服務器,你需要首先構建一個LDAP連接。這里的主機和端口可以根據自己實際的情況進行調整。使用ldap_bind()函數來試圖實現身份驗證。如果綁定失敗,可能就是因為用戶名或密碼不正確,也可能是由于LDAP服務器不可用導致的。
在代碼中,我們使用了!!的語法,這是因為我們希望這個循環返回一個boolean值。這種語法基本等價于下面的代碼:
$ldap_conn = ldap_connect($ldap_host, $ldap_port); if ($ldap_conn !== false) { if(ldap_bind($ldap_conn, $ldap_username, $ldap_password)){ // 驗證成功 } else { // 驗證失敗 } } else { // 連接LDAP服務器失敗 }
下面再來看一段例子。假設我們需要檢索給定參數下的所有用戶:
$ldap_conn = ldap_connect($ldap_host, $ldap_port); if ($ldap_conn !== false) { if(ldap_bind($ldap_conn, $ldap_username, $ldap_password)){ $result = ldap_search($ldap_conn, $ldap_dn, "(cn=*)"); $data = ldap_get_entries($ldap_conn, $result); for ($i = 0; $i< $data['count']; $i++) { echo "User #" . $i . ": " . $data[$i]['dn'] . "
"; } } else { // 驗證失敗 } } else { // 連接LDAP服務器失敗 }
這段代碼會搜索LDAP服務器,得到所有存在的用戶(cn=*)。ldap_get_entries()會獲取所有的返回并解析它們,ldap_get_entries()返回一個多位數組。我們可以使用這個數組,來查看所有找到的條目。
在這些例子中,我們使用了基本的LDAP操作。當然,它還有很多可以學習的地方,比如如何連接到不同的LDAP服務器,如何建立LDAP連接,如何執行搜索和密碼更改等。你可能會發現,使用LDAP服務器可以大大增強網絡安全,同時也可以大大簡化身份驗證問題。
上一篇php ldap add
下一篇ajax函數如何能先執行