สวัสดีครับ
ผมได้มาจาก http://drupal.org/files/issues/ldaptest.php__1.txt ของคุณ netkeeper นำมาแก้ไขครับ ผมลองเขียนเองแต่ก็ไม่เข้าใจทั้งหมดเลยเอาของเขามาทดลองบ้าง เพราะไม่เชื่อใจตัวเอง
แต่ก็เกิด error ครับผม หรือผมต้องตั้งค่าอะไรที่ AD หรือเปล่าครับ AD เป็น windows 2003 ครับผม
รบกวนพี่ๆน้องๆแนะนำส่งเสริมด้วยครับผม
LDAP query test
Connecting ... connect result is Resource id #2
Binding ... Starting TLS...
Warning: ldap_start_tls() [function.ldap-start-tls]: Unable to start TLS: Server is unavailable in C:\xampp\htdocs\Joomla\php_script\a.php on line 30
Cannot start TLS Bind result is 1
Searching for sAMAccountName=* ...
Warning: ldap_search() [function.ldap-search]: Search: Invalid DN syntax in C:\xampp\htdocs\Joomla\php_script\a.php on line 38
Search result is
Warning: ldap_count_entries(): supplied argument is not a valid ldap result resource in C:\xampp\htdocs\Joomla\php_script\a.php on line 41
Number of entires returned is
Getting entries ...
Warning: ldap_get_entries(): supplied argument is not a valid ldap result resource in C:\xampp\htdocs\Joomla\php_script\a.php on line 44
Data for items returned:
Closing connection
จาก source นะครับ
Code (PHP)
<?php
$host = "testad.com"; //อันนี้ผมเปลี่ยนใช้ชื่อ Active Directory ครับ
$port = "389";
$tls = true;
$dn = 'rattapong'; //User ผมเอง
$pass = '123456789'; // password ผม
$base = "basedn";
$scope = "sub";
$filter = "sAMAccountName=*";
echo "<h3>LDAP query test</h3>\n";
echo "Connecting ...\n";
$ds=ldap_connect($host, $port);
echo "connect result is " . $ds . "<br />\n";
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION,3);
ldap_set_option($ds, LDAP_OPT_REFERRALS,0);
if ($ds) {
echo "Binding ...\n";
if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) {
echo "Failed to setup LDAP protocol to 3 - Start TLS not support\n";
exit;
}
echo "Starting TLS...\n";
if (!ldap_start_tls($ds)) {
echo "Cannot start TLS\n";
}
$r=ldap_bind($ds, $dn."@".$host, $pass);
echo "Bind result is " . $r . "<br />\n";
echo "Searching for $filter ...";
$sr=ldap_search($ds, $base, "($filter)");
echo "Search result is " . $sr . "<br />\n";
echo "Number of entires returned is " . ldap_count_entries($ds, $sr) . "<br />\n";
echo "Getting entries ...<p>\n";
$info = ldap_get_entries($ds, $sr);
echo "Data for " . $info["count"] . " items returned:<p>\n";
for ($i=0; $i<$info["count"]; $i++) {
echo "dn is: " . $info[$i]["dn"] . "<br />\n";
//echo "first cn entry is: " . $info[$i]["cn"][0] . "<br />\n";
//echo "first email entry is: " . $info[$i]["mail"][0] . "<br /><hr />\n\n";
}
echo "Closing connection\n";
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>";
}
?>
เท่าที่ทราบนะครับ
LDAP เป็น Function ที่มีมากับ php แล้ว เราแค่ Enable มันเท่านั้นหละครับ
ประโยชน์คือใช้ติดต่อกับ Active Directory หรือ AD เพื่อเช็ค User ต่างๆครับ
เช่นผมเขียนเว็บภายใน ต้องการให้ User ที่ใช้ต้องเป็น User จาก AD ด้วยก็น่าจะใช้
ตัวนี้เช็คเอาน่ะครับ
Date :
2010-03-29 08:38:29
By :
boyachi
No. 3
Guest
เข้ามาช่วยเสริิมอีกคนนะครับ
<?php
$host = "192.168.0.1"; //ip server
$user = "[email protected]"; //username admin of server
$pswd = "12345"; //password server
$ad = ldap_connect($host) or die("Could not connect!");
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3) or die ("Could not set ldap protocol");
$bd = ldap_bind($ad, $user, $pswd) or die ("Could not bind");
$dn = "DC=test,DC=com"; //มาตาม server คือ test.com หากมีมากกว่านี้ก็ใช้ DC เพิ่มเข้าไปอีก เช่น crop.test.com จะได้ "DC=crop,DC=test,DC=com"
$filter = "cn=*";
$search = ldap_search($ad, $dn, $filter) or die ("Search failed");
$entries = ldap_get_entries($ad, $search);
echo "<strong>FINE NUMBER : ".$entries["count"]." USER</strong><br><br>";
for ($i=0; $i<$entries["count"]; $i++) {
echo "dn is: ". $entries[$i]["dn"] ."<br>";
echo "first cn entry is: ". $entries[$i]["cn"][0] ."<br>";
echo "first email entry is: ". $entries[$i]["mail"][0] ."<br>";
echo "Title entry is: ". $entries[$i]["title"][0] ."<br>";
echo "Username is: ". $entries[$i]["samaccountname"][0] ."<br>";
echo "====================================================<br>";
}
?>
// จุดสำคัญคือส่วนของ ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3) or die ("Could not set ldap protocol") คือการบอกให้รู้ว่าเราใช้ protocal ระดับใหน
// หากไม่ใช่ฟังชั่นนี้อาจเกิด Warning: ldap_search() [function.ldap-search]: Search: Can't contact LDAP server in... ได้ครับ