ตอนแรกต้องทดสอบก่อนว่า Server เราสามารถใช้ LDAP extension ได้ไหม
วิธีทดสอบมี 3 วิธีคือ
1. สร้างแฟ้มสำหรับแสดงรายละเอียดของ php สมมุติชื่อ phpinfo.php
Code (PHP)
1.phpinfo();สร้างเสร็จแล้ว ก้เรียกใช้ ผ่าน Browser อะไรก็ได้ มองหาตารางคล้ายๆกับตารางนี้
ldap
LDAP Support enabled
RCS Version $Id: ldap.c,v 1.154.2.7 2005/07/09 01:00:11 sniper Exp $
Total Links 0/unlimited
API Version 2004
Vendor Name OpenLDAP
Vendor Version 20129
RCS Version $Id: ldap.c,v 1.154.2.7 2005/07/09 01:00:11 sniper Exp $
Total Links 0/unlimited
API Version 2004
Vendor Name OpenLDAP
Vendor Version 20129
ถ้าสามารถหาเจอ และตรง LDAP Support เขียนว่า enabled ก็แปลว่า Server คุณสามารถใช้ ldap ได้
2. สร้างแฟ้มสำหรับเรียกใชโดยตรง เช่น test1.php
Code (PHP)
1.ldap_connect(?localhost?);ถ้ามันขึ้นแบบนี้
Code
Fatal error: Call to undefined function: ldap_connect () in /XXXX/i.php on line 2
ก็แปลว่าเครื่องคุณไม่สามารถใช้ ldap ได้
3. สร้างแฟ้มสำหรับทดสอบ function โดยเฉพาะ เช่น test_function.php
Code (PHP)
01.alert('สามารถใช้ Function $function ได้');02. 03.$function=$_POST["function"];04.if($function){05.if(function_exists($function)){06.echo"Funtion นี้ใช้ได้";07.}else{08.echo"Funtion นี้ใช้ไม่ได้";09.}10.}คราวนี้สมมุติว่าเครื่องคุณใช้ ldap ไม่ได้ ก็ต้องคอมไพล์ php กันใหม่ครับ ให้ใช้ ?with-ldap ด้วยนะครับ
คราวนี้สมมุติว่าเครื่องคุณใช้ ldap ได้
ขั้นตอนมันก็ไม่มีอะไรมาก
จะสามารถแบ่งได้ 3 ขั้นตอนคือ (อันนี้ผมแบ่งเองนะครับ)
1. ติดต่อกับ LDAP Server
ตอนแรกก็ติดต่อกับ LDAP Server ก่อนนะครับ
Code (PHP)
1.$ds=ldap_connect(?localhost?,?389?)ตรง localhost ให้เปลี่ยนเป็น ip หรือชื่อเครื่อง Server ถ้า LAP Server เป็นเครื่องอื่น และ port ปกติ
ของ LDAP คือ 389 ครับ ตรงนี้ไม่ต้องใสก็ได้ ก็เป็น
Code (PHP)
1.ldap_connect(?localhost?)หลังจากติดต่อได้แล้วก็ต้องแสดงว่าใครคือผู้ติดต่อโดยใช้คำสั่งนี้ครับ
ldapbind = ldap_bind($ds, $binddn, $password);
ส่วนนี้อาจจะพูดได้ว่าเป็นการ Login หรือการ ตรวจสอบการ Login ก็ได้ครับ ซึ่งผมเองได้เขียน
Function สำหรับการตรวจสอบ Login ดังตัวอย่างครับ
Code (PHP)
01.function ldap_login($ds,$username,$password,$ou,$suffix){02.$i=0;03.while(1){04.$binddn = "uid=$username,ou=".$ou[$i].",".$suffix;05.@$ldapbind = ldap_bind($ds, $binddn, $password);06.if ($ldapbind){07.return true;08.break;09.}else{10.if($i==3){11.ldap_close($ds);12.return false;13.break;14.}15.}16.$i++;17.}18.}เวลาจะใช้ก็
Code (PHP)
1.$ou = array("student","staff","unistaff");2.$suffix_string = "dc=psu,dc=pn";3.if(ldap_login($ds,$USER,$PASSWORD,$ou,$suffix_string)){4.echo?สวัสดีครับ?;5.}else{6.echo?User หรือ Password ผิด?;7.}2. การทำงาน คราวนี้คุณจะทำอะไรก็ได้แล้วแต่คุณนะครับ
แต่ที่ผมจะแนะนำก็มี 4 อย่าง คือ การ เพิ่ม การ ลบ การแก้ไข และการค้นหา User
2.1 การ เพิ่ม User ใช้คำสั่ง ldap_add ครับ ดังตัวอย่าง
Code (PHP)
01.$info["cn"]=?Mr.Patt Emmawat?;02.$info["sn"]=Patt;03.$info["ou"]="student";04.$info["mail"]=s4145217@remove.mor-or.pn.psu.ac.th";05.$info["objectclass"][0]="top";06.$info["objectclass"][1]="person";07.$info["objectclass"][2]="inetOrgPerson";08.$info["objectclass"][3]="organizationalPerson";09.$info["objectclass"][4]="posixAccount";10.$info["objectclass"][5]="shadowAccount";11.$info["uidNumber"]=1000;// ใน linux คือ uid หรือ หมายเลขประจำตัวของ user12.$info["uid"]=?s4145217?;// คือ ส่วนของ User Name13.$info["gidNumber"]="1000"; // ใน linux คือ gid หรือ หมายเลขประจำตัวของ group14.$info["homeDirectory"]="/home/s4145217;15.$info["loginShell"]="/bin/sh";16.$pwd=md5(?s4145217?);17.info["userPassword"]=$pwd[rand(0,31)].$pwd[rand(0,31)].$pwd[rand(0,31)].$pwd[rand(0,31)].$pwd[rand(0,31)];// Password ของ User18.$r=ldap_add($ds, "uid=s4145217,ou=student,dc=oasitzone,dc=pn", $info);2.2 การค้นหา User ที่ต้องพุดก่อน เพราะว่า มันใช้การ ลบ และแก้ไข User ด้วยครับ (อำนวยความสะดวก เพราะ ผมเองก็ไม่จำหรอกครับ ว่า มี Ou กะ DN อะไรบ้าง จำแต่ว่ามี User อะไรบ้างก็พอ)
การ เพิ่ม การลบ การแก้ไข User เวลาใช้ ldap_bind ต้องใช้ User พิเศษ ครับ ให้ดูใช้ /slapd.conf
ส่วนของ rootdn และ rootpw
แต่การ ค้นหา ให้ใช้ แค่ dn ก็พอครับ (user+ou+suffix)
Code (PHP)
1.$sr=ldap_search($ds, "dc=oasitzone,dc=pn", "uid=".$login."",$justthese);2.$info = ldap_get_entries($ds, $sr);3.print_r($info[0])Code (PHP)
1.$justthese = array("dn","cn","uid"); //ต้องการอะไรก็ใส่เข้าไป2.$sr=ldap_search($ds, "dc=oasitzone,dc=pn", "uid=s4145217",$justthese);3.$info1 = ldap_get_entries($ds, $sr);4.print_r($info[0])Code (PHP)
1.$sr=ldap_search($ds, "dc=oasitzone,dc=pn", "uid=s4145217");2.$info = ldap_get_entries($ds, $sr);3.$r=ldap_delete($ds,$info1[0]["dn"]);Code (PHP)
1.$sr=ldap_search($ds, "dc=oasitzone,dc=pn", "uid="s4145217"?);2.$info1 = ldap_get_entries($ds, $sr);3.$info["userPassword"]=$_POST['userPassword'];4.ldap_modify($ds, $info1[0]["dn"], $info);อ้างอิง http://www.thaicreate.com/community/ldap2.html
No comments:
Post a Comment