PHP LDAP di xampp Written by Aldo Expert at 2014-03-09 04:04:36. Show PHP LDAP digunakan untuk melakukanSingle Sign On (SSO) pada pemrograman untuk login ataupun kebutuhan lain, dimana user berada pada server yang berbeda dan disebarkan dengan metode LightWeight Directory Access Control (LDAP), sehingga aplikasi tidak harus melalui register user yang memiliki kelemahan ketika ada banyak aplikasi maka user harus menghafal password tetapi jika menggunakan SSO maka user tidak perlu menghafal username dan password yang berbeda pada setiap aplikasi. Berikut adalah cara untuk mengaktifkan php ldap pada xampp
Numpang nanya cara penggunaan LDAP di PHP. Jadi gini ceritanya, saya punya server Active Directory dan mempunyai aplikasi yang dibuat dengan PHP. Yang ingin saya tanyakan bagaimana cara nya aplikasi PHP ini menggunakan halam login dengan user yang ada di server AD sy. Saya sudah coba google, dan coba" dari salah satu blog Code: http://mazhters.blogspot.com/2011/05/bermain-ldap-dengan-php.html Untuk Loginya sudah berhasil, terkendala nya untuk menampilkan informasi user yang ada di server AD, seperti display name, office dan email Seperti capture salah satu user di sever AD Berikut code php ldap yang saya buat dari salah satu blog : Code:
Output php dari browser Jika user Login berhasil muncul pesan error ; Jika user login gagal, pesan error : Kalau di lihat pesan error di atas, secara umum koneksi ke server sudah berhasil atau script koding yang ldap_connect sudah OK Yang saya bingung kenapa ldap_bind(): ldap_search(): ldap_get_entries() ini error ya ? Mohon solusinya ya gan. Makasih sebelumnya Saya sedang mengembangkan situs web sederhana di PHP sehingga beberapa pengguna dapat melakukan tugas-tugas tertentu. Tujuan saya adalah untuk mendapatkan otorisasi berbasis peran untuk pengguna dan mereka akan melihat halaman yang berbeda sesuai dengan keanggotaan grup LDAP mereka. Ini adalah bagaimana saya mencoba untuk mengimplementasikan IT- 1) menggunakan fungsi library php-ldap untuk terhubung ke server LDAP 2) mengekstrak dn nama grup dan nama pengguna dengan ldapsearch dari dn basis pengguna dan dn basis grup 3) mencari atribut "memberOf" di entri pengguna dan cocokkan dengan grup dn. Mengembalikan nilai true jika cocok 4) Cari atribut "anggota" di entri grup dan cocokkan dengan dn pengguna. Kembalikan true jika cocok. Sejauh ini saya telah menguji ini di server OpenLDAP dan tampaknya berfungsi, tetapi saya ingin skrip berfungsi dengan server direktori lain seperti ApacheDS, direktori aktif, dan 389ds. Karena saya tidak memiliki akses ke beberapa server direktori, saya ingin melaporkan apakah langkah-langkah ini akan berhasil di server direktori lain atau tidak. Bantuan apa pun dalam hal ini akan sangat dihargai. Terima kasih sebelumnya. 0 Filter "Filter kustom saya" terletak di sini (& (| (objectClass = orang) (objectClass = inetOrgPerson)) (| (uid = ($ nama pengguna)) (cn = ($ nama pengguna)) (sAMAccountname = ($ nama pengguna) )) ) "dan filter pencarian grup" (| (objectClass = groupOfNames) (objectClass = posixGroup)) " - Anindya Mukherjee 09 Sep 14 09-09-2014 14:37:05
Penyortiran: Aktivitas 0 Langkah-langkah ini sebagian besar akan berfungsi di server LDAP lainnya. Anda harus dapat mengubah atribut yang Anda gunakan, seperti ActiveDirectory misalnya menggunakan atribut samAccountName di mana skema LDAP default menggunakan uid Lihat https://github.com/heiglandreas/kimai/blob/feature/fixLDAPAuthentication/core/libraries/Kimai/Auth/Ldapadvanced.php yang mungkin berisi beberapa cuplikan berguna. Itu tidak mengatasi masalah di mana keanggotaan grup didefinisikan di usernode! 0 Terima kasih untuk informasi. Filter pencarian pengguna saya mencari atribut objek inetOrgPerson atau "orang" dan atribut "uid" atau "cn" atau "sAMAccountname", jadi itu harus berfungsi untuk AD. Mengenai AD menyimpan informasi grup di catatan input pengguna, saya mengubah alur proses sehingga catatan pengguna diperiksa untuk informasi grup terlebih dahulu, dan jika kembali salah, cari grup di grup ou. Kekhawatiran saya adalah jika ada server direktori lain yang menggunakan cara non-standar dan atribut lain dan / atau kelas objek untuk menyimpan informasi tentang grup. - 16 tahun yang lalu Coba skrip ini jika Anda tidak tahu cara menambahkan pengguna di AD Win2K. $ adduserAD ["cn"] = if (! ($ ldap = ldap_connect ("localhost"))) ( 12 tahun yang lalu Berikut adalah cara menambahkan pengguna dengan kata sandi MD5 hash ke OpenLDAP. Saya menggunakan teknik ini untuk memigrasi akun Drupal ke OpenLDAP untuk solusi sistem masuk tunggal. Triknya adalah memberi tahu OpenLDAP jenis hash (mis. (MD5)) sebelum kata sandi, dan juga ke base64 menyandikan hasil hash BINARY. Anda tidak bisa hanya mengkodekan base64 apa yang dikembalikan oleh fungsi hash PHP "s md5 () atau sha (), karena mereka mengembalikan string teks heksadesimal. Pertama, Anda harus menggunakan paket (" H * ", $ hash_result) untuk menjadikannya string biner , KEMUDIAN kamu bisa base64 menyandikannya. Berikut adalah kode lengkap untuk menghubungkan dan menambahkan pengguna dengan kata sandi hash. Anda tidak harus menggunakan (MD5), Anda dapat memilih hash yang berbeda jika itu yang Anda miliki. Output dari salah satu sandi hash ini akan terlihat seperti ini: (md5) bdwD04RS9xMDGVi1n / H36Q == Akhirnya beberapa peringatan: Teknik ini tidak akan berfungsi jika Anda meng-hash kata sandi menggunakan nilai garam (tetapi Drupal tidak). Teknik ini juga pasti tidak akan bekerja dengan direktori aktif, di mana kata sandi pasti hanya dapat diatur melalui koneksi SSL dan hashing mungkin bekerja secara berbeda. $ ds = ldap_connect ($ serverAddress); 11 tahun yang lalu Saya membuat fungsi sederhana yang dapat dipanggil untuk membuat grup distribusi global di Active Directory: fungsi ldap_createGroup ($ object_name, $ dn, $ anggota, $ ldap_conn) Ldap_add ($ ldap_conn, $ dn, $ addgroup_ad); Jika (ldap_error ($ ldap_conn) == "Berhasil") Anda dapat memanggil fungsi ini menggunakan kode berikut: $ ldap_conn = ldap_bind(); Ldap_createGroup ($ nama_objek, $ dn, $ anggota, $ ldap_conn); Fungsi lain yang saya buat adalah ldap_bind (), dan ini dapat digunakan untuk mengikat ke server LDAP: fungsi ldap_bind() // Mengautentikasi pengguna terhadap pengontrol domain 13 tahun yang lalu Saat menambahkan / mengedit atribut untuk pengguna, perlu diingat bahwa atribut "memberof" adalah kasus khusus. Atribut memberOf bukanlah atribut yang dapat diakses dari skema pengguna. Untuk menambahkan seseorang ke grup, Anda harus menambahkan pengguna di grup, dan bukan grup di pengguna. Anda dapat melakukan ini dengan mengakses atribut grup "anggota": $ nama_kelompok = "CN = Grup Saya, OU = Grup, DC = contoh, DC = com"; ?> 11 tahun yang lalu Solusi ini bekerja untuk kami. ## Dari bentuk $ AD_server = "localhost: 390"; // Stunnel Lokal -> http://www.stunnel.org/ $dn = "CN =". $ CN. ", OU = Brukere, DC = mahasiswa, DC = suatu tempat, DC = com"; ## Buat kata sandi Unicode untuk ($i = 0; $i< $len ; $i ++) { ## HUBUNGKAN KE IKLAN $ ldaprecord ["cn"] = $ CN; $r = ldap_add ($ds, $dn, $ldaprecord); ) lain ( ?> Ini adalah contoh kode membuat pengguna i AD. 11 tahun yang lalu Setelah saya "mengalami masalah untuk menambahkan atribut dengan sintaks boolean (1.3.6.1.4.1.1466.115.121.1.7) $["boolean_attr"] = benar; // beri saya satu peringatan, ldap_add (): Tambahkan: Sintaks tidak valid memecahkan ini dengan menetapkan nilai ini: $["boolean_attr"] = "BENAR"; semoga ini bisa membantu. 16 tahun yang lalu Menanggapi pertanyaan jharnett tentang akun yang dinonaktifkan secara default dari ldap_add, kami telah menemukan solusi. Atribut userAccountControl berisi nilai yang mencakup apakah akun dinonaktifkan atau diaktifkan. Default untuk kami adalah 546; ketika kami mengubahnya menjadi 544 akun menjadi diaktifkan. Mengubah nilai apa pun yang ada di userAccountControl dengan 2 tampaknya mengaktifkan atau menonaktifkan akun. Kode berikut berfungsi bagi kami untuk membuat pengguna baru dengan akun yang diaktifkan: $ adduserAD ["userAccountControl"] = "544"; Kami baru saja menambahkan elemen ini ke contoh di atas "s array. 7 bulan yang lalu Buat Grup di Direktori Aktif $ds = ldap_connect("IP-server / localhost"); Jika ($ds) ( // Tambahkan anggota dalam grup $ entri ["cn"] = "GroupTest"; Ldap_add ($ ds, $ base_dn, $ entri); Ldap_close ($ds); 14 tahun yang lalu Hal menyenangkan lainnya: ldap_add () "tidak suka array dengan anggota kosong: jadi selesaikan ini dengan sepotong kode sederhana: foreach ($ originalobject sebagai $ key => $ value) ( di mana $ originalobject adalah array yang tidak dicentang dan $ object adalah yang tanpa anggota kosong. 19 tahun yang lalu Ldap_add() hanya akan menghormati entri $ ["attribute"] [x] = "value" * jika ada beberapa nilai untuk atribut *. Jika hanya ada satu nilai atribut, * HARUS * dimasukkan sebagai $ entri ["attribute"] = "nilai" atau ldap_add () menetapkan nilai atribut menjadi "Array" alih-alih apa yang Anda masukkan ke dalam $ entri [ "atribut"]. Berikut adalah sedikit rutinitas yang saya tulis untuk melakukan ini secara otomatis. ketika Anda "mengurai input, cukup gunakan multi_add (): If (isset ($ entri [$ atribut])) Bagaimana cara menggunakannya: Saya menggunakan variabel variabel untuk mengisi entri dan melewatkan bagian yang kosong. Membuat sistem entri formulir yang sangat bersih. email saya jika Anda "tertarik dengan itu, karena saya pikir saya" m melebihi ukuran catatan diperbolehkan di sini. :-) 6 tahun yang lalu Saya terus mendapatkan "Pelanggaran Kelas Objek" ketika saya mencoba menambahkan posixAccount dan shadowAccount sebagai kelas objek. Ternyata kelas objek ini memiliki banyak bidang wajib yang tidak saya tambahkan. Anda mungkin perlu mengekspor pengguna yang berfungsi (jika Anda memiliki phpLDAPadmin) dan melihat bidang apa yang mereka miliki, lalu coba salin persis di skrip. Ini juga "tidak ada salahnya jika Anda membuat semuanya menjadi Array pertama kali, Anda dapat memperbaikinya nanti. Drupal dapat dengan mudah disebut sebagai alat universal untuk mengimplementasikan berbagai tugas, serta kompleksitas tertentu dari solusi perusahaan. Jadi, segera saya akan mengatakan bahwa dengan bantuan modul ini Anda dapat memberikan: Karena Saya masih pengguna aktif Drupal 7, maka saya akan memberikan semua instruksi menggunakan contohnya, tetapi sekali lagi, ketika saya memulai Drupal 8 demi kepentingan, Mari kita salin data modul ke diri kita sendiri, serta dependensinya Ctools dan API Entitas... Pada halaman modul, aktifkan modul berikut:
Perlu dicatat bahwa modul tidak akan diinstal jika modul tidak diinstal dalam pengaturan PHP Anda. php_ldap... Oleh karena itu, lakukan pra-instal dan sesuaikan dengan karakteristik lingkungan Anda. Setelah instalasi modul berhasil, buka pengaturannya, yang terletak di sini admin / config / orang / ldap Pengaturan modul dibagi menjadi 4 tab: Pengaturan, Server, Pengguna, Autentikasi, Otorisasi Tab pertama mengonfigurasi metode enkripsi untuk kata sandi akun Direktori Aktif di dalam Drupal. Dalam latihan saya, saya tidak menggunakan ini, jadi saya langsung pergi ke tab kedua Server... Dan di sini kita akan membahas lebih detail. Pengaturan koneksi Nama mesin untuk konfigurasi server ini... - nama mesin sebenarnya dari server yang sedang dibuat. Saya biasanya menelepon direktori_aktif Metode Binnd Metode Pengikatan untuk Pencarian (seperti menemukan objek pengguna atau keanggotaan grup mereka) Hapus kata sandi yang ada dari database. Periksa ini saat beralih dari Pengikatan Akun Layanan- item tidak berlaku untuk metode kami yang dijelaskan di atas, oleh karena itu kami tidak mencentang kotak. Hubungan pengguna LDAP dengan Drupal DN dasar untuk pengguna LDAP, grup, dan entri lainnya- DN dasar tempat semua pengguna berada di Direktori Aktif, dalam kasus saya, saya menempatkan DC = iklan, DC = zv... Dalam pengaturan ini, yang terbaik adalah berkonsultasi dengan administrator sistem server Active Directory Anda. Bekerja dengan AD di PHP Seri Konten:Anda tidak perlu mempelajari Visual Basic atau PowerShell untuk melakukan operasi AD dasar, seperti menambahkan atau menghapus pengguna, mengubah data atau keanggotaan grup, dan terutama untuk operasi massal (misalnya, membuat daftar semua pengguna menurut departemen). pengetahuan tentang PHP sudah cukup (serta kehadiran pengguna dengan hak yang diperlukan). Singkatan yang sering digunakan:
Bagian pertama dari seri ini, yang diterbitkan pada bulan Juni (,,), menunjukkan cara membaca data dari server AD, mengaksesnya seperti server LDAP biasa menggunakan program ldapsearch standar dan skrip yang ditulis dalam bahasa Bourne Shell. Saya harus mengatakan bahwa Bourne Shell tidak terlalu cocok untuk pekerjaan seperti itu: bahkan untuk operasi yang cukup sederhana dalam membentuk file teks dari dua kolom, Anda harus melakukan gerakan yang sangat tidak sepele. Oleh karena itu, sangat wajar untuk mencoba menulis ulang dalam bahasa tingkat tinggi, misalnya, di PHP. File konfigurasiFile konfigurasi yang hampir sama digunakan agar skrip berfungsi. Isinya ditunjukkan pada Listing 1. Listing 1. File konfigurasi script phpldapread.php#LDAP server untuk menghubungkan ldap_server = 10.54.200.1 #Base DN untuk menghubungkan ldap_basedn = "dc = shelton, dc = int" #Bind DN untuk menghubungkan [dilindungi email]# Kata sandi untuk pengguna yang atas namanya koneksi akan dibuat ldap_password = "cXdlcnR5YXNkZgo 1" # Filter untuk menyaring catatan. Artinya: pilih objek bertipe Pengguna, # yang tidak memiliki kumpulan properti "Block account" ldap_common_filter = "(& (! (UserAccountControl: 1.2.840.113556.1.4.803: = 2)) (sAMAccountType = 805306368))" # Abaikan pengguna yang terdaftar adalah objek sistem abaikan_list = "SQLAgentCmdExec, SMSService, SMSServer_001, wsus" # Direktori tempat file akan disimpan etcdir = / tmp # Nama file dengan daftar sarglist = sargusersScript akan membutuhkan komponen tambahan pear-Config dan pear-Console_Getopt, serta ekstensi bahasa php-ldap. Pear-Config diperlukan untuk membaca file konfigurasi, pear-Console_Getopt untuk mengurai parameter baris perintah. Saya harus mengatakan, tidak seluruh skrip dipertimbangkan: masalah seperti membaca file konfigurasi, menampilkan bantuan, atau menguraikan baris perintah adalah masalah yang sudah dijelaskan dengan baik, sehingga fungsi yang sesuai akan dihilangkan, versi lengkap skrip dapat diunduh dari. Kami hanya akan mempertimbangkan apa yang terkait langsung dengan membaca data dari AD, sebagai server LDAP, dan beberapa fungsi tambahan non-standar. Fungsi konversi kata sandi terbalik ditunjukkan pada Daftar 2. Seluruh peran yang disebut "perlindungan" adalah untuk mencegah kebocoran yang tidak disengaja (yang disebut pipet) dan tidak lebih. Daftar 2. Fungsi konversi kata sandi terbalik./ * * Konversi kata sandi terbalik * @param string $ kata sandi yang dikonversi * @return string $ passwd kata sandi teks biasa * / function demux_passwd ($ dikonversi) ($ _conved = meledak ("", $ dikonversi); $ _passwd = "" ; jika ($ _conved! = 0) for (; $ _conved! = 0; $ _conved--) ($ _conved = $ _conved. "=";) $ _passwd = base64_decode ($ _conved); return rtrim ($ _ passwd ) ;)Tentu saja, tidak ada yang menarik di sini: seperti yang telah disebutkan di bagian sebelumnya, kata sandi disimpan dalam file konfigurasi yang dikonversi ke base64, placeholder dibuang dan diganti dengan angka. Fungsi ini melakukan transformasi terbalik. Fungsi konversi dari UTF-8 ke KOI8-R ditunjukkan pada Listing 3. Fungsi ini diperlukan karena konsol FreeBSD tidak menggunakan UTF-8. Listing 3. Fungsi untuk mengubah string dari UTF-8 ke KOI8-R/ * * Mengonversi string dari UTF-8 ke KOI8-R * @param string $ string sumber dalam penyandian UTF-8 * @return string $ string tujuan dalam penyandian KOI8-R * / function _from_utf8 ($ sumber) ($ dikonversi = iconv ("UTF-8", "KOI8-R", $ sumber); kembali ($ dikonversi);)Selain itu, fungsi safe_logger yang sama sekali tidak menarik digunakan, yang tugasnya adalah mengeluarkan pesan ke log atau ke konsol dengan atau tanpa menghentikan skrip. Semua fungsi ini disimpan dalam file utils.php. Menghubungkan ke ADFungsi ldap_server_connect yang ditunjukkan pada Daftar 4 digunakan untuk menghubungkan ke AD. Fungsi ini melakukan semua operasi koneksi dan mengembalikan pengenal koneksi untuk bekerja dengan server. Fungsi ini disimpan dalam file terpisah ldapquery.php Listing 4. Fungsi untuk terhubung ke server ADrequire_once $ PATH_LIB. "/ utils.php"; / * * Hubungkan ke server LDAP * @param array $ _config array parameter konfigurasi * @return resource $ ldapconn ID koneksi ke server LDAP * / function ldap_server_connect ($ _ config) (// Dapatkan kata sandi dalam teks biasa $ _ldap_pwd = demux_passwd ($ _config ["root"] ["ldap_password"]); // Buat koneksi ke server jika (! $ ldapconn = ldap_connect ($ _ config ["root"] ["ldap_server"])) safe_logger (sprintf ( "Tidak dapat terhubung ke LDAP -server% s ", $ _config [" root "] [" ldap_server "])," DIE "); // Untuk terhubung ke AD Windows 2003 dan lebih tinggi, Anda perlu mengatur opsi ini ldap_set_option ( $ ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option ($ ldapconn, LDAP_OPT_REFERRALS, 0); // Masuk ke server ldap_bind ($ ldapconn, $ _config ["root"] ["ldap_binddndap"], $ _ldapconn; ;)Apa yang saya ingin menarik perhatian Anda di sini. Pertama, opsi LDAP_OPT_PROTOCOL_VERSION ("versi protokol") dan LDAP_OPT_REFERRALS ("nonaktifkan tautan rujukan") harus disetel masing-masing ke 3 dan 0 - tanpanya, Anda dapat melihat yang aneh: otorisasi pada server akan berlalu, tetapi pencarian apa pun akan kembali benar-benar nol catatan ... Kedua, DN Bind harus ditentukan persis seperti dalam file konfigurasi dan tidak dengan cara lain. DN lengkap juga tidak valid. Meminta data dari ADFungsi ldap_data_query terpisah telah dikembangkan untuk meminta data dari AD. Hal ini dilakukan terutama karena data yang berisi karakter non-ASCII (dan sebagian besar dalam AD normal) disimpan dalam pengkodean UTF-8. Karena konsol FreeBSD memiliki dukungan terbatas untuk UTF-8, beberapa konversi harus dilakukan. Pemilihan data dari AD dilakukan oleh fungsi ldap_search, yang menerima, di antara parameter lainnya, array satu dimensi dengan atribut yang harus diperoleh. Tetapi untuk menunjukkan apakah nilai atribut ini harus dikodekan ulang, fungsi menerima array dua dimensi, di mana setiap elemen itu sendiri adalah array yang terdiri dari elemen dengan nama indeks dan kode ulang. Jenis larik atribut yang diterima fungsi sebagai input ditunjukkan pada Daftar 5 (sebagian). Listing 5. Array parameter yang diteruskan ke fungsi permintaan data.array (2) (=> array (2) (["name"] => string (2) "cn" ["recode"] => string (4) "true") ...)Fungsi kueri data aktual ditampilkan di Listing 6. Listing 6. Sebuah fungsi untuk query data dari AD.require_once $ PATH_LIB. "/ utils.php"; require_once $ PATH_LIB. "/ ldapconnect.php"; / * * Meminta data dari server LDAP * @param array $ _config Array dengan data konfigurasi * @param resource $ ldapconn ID koneksi ke server LDAP * @param array $ attribute Array atribut untuk query dari LDAP * @return array $ ldapdata Data dari server LDAP * / function ldap_data_query ($ _ config, $ ldapconn, $ atribut) ($ oneadd = array (); $ myrecode = array (); $ myattrs = array (); // Untuk query data, kami membuat array satu dimensi foreach ($ atribut sebagai $ oneattr) $ myattrs = $ oneattr ["name"]; // Meminta data menggunakan filter umum dari file konfigurasi $ result = ldap_search ($ ldapconn, $ _config ["root"] ["ldap_basedn"], $ _config ["root"] ["ldap_common_filter"], $ myattrs); // Baca semua record yang dipilih $ info = ldap_get_entries ($ ldapconn, $ result); // Cetak nomornya ke log safe_logger (sprintf ("Baca% d catatan dari server% s ", $ info [" count "], $ _config [" root "] [" ldap_server "])," "); // Buat array dua dimensi dengan keluaran // Setiap elemen array adalah array, di mana elemen kuncinya adalah nama atributnya, // dan datanya adalah nilai atributnya; dikodekan ulang jika perlu untuk ($ i = 0; $ i< $info["count"]; $i++) { for ($j = 0, $k = count($attribute); $j < $k; $j++) { $myattr = $attribute[$j]["name"]; if (isset($info[$i][$myattr])) { if ($attribute[$j]["recode"] == "true") $myrecode[$myattr] = _from_utf8($info[$i][$myattr]); else $myrecode[$myattr] = $info[$i][$myattr]; } else $myrecode[$myattr] = ""; $oneadd[$i] = $myrecode; } } return $oneadd; }Dari array parameter dua dimensi, satu dimensi untuk fungsi ldap_search dibentuk, kemudian data diminta. Data dikembalikan sebagai array, dengan setiap elemen dalam bentuk yang ditunjukkan pada Listing 7. Daftar 7. Satu elemen dari larik data yang dikembalikan oleh fungsi ldap_get_entries.=> array (6) (["cn"] => array (2) (["count"] => int (1) => string (13) "Administrator") => string (2) "cn" [ "samaccountname"] => array (2) (["count"] => int (1) => string (13) "Administrator") => string (14) "samaccountname" ["count"] => int ( 2) ["dn"] => string (43) "CN = Administrator, CN = Pengguna, DC = shelton, DC = net")Seperti yang Anda lihat, ini bahkan bukan array dua dimensi, tetapi array tiga dimensi. Pada tingkat pertama - data yang diminta, pada tingkat kedua - atribut dari satu objek, pada tingkat ketiga - string dari atribut multi-baris, yang, untuk berjaga-jaga, semuanya adalah atribut string. Juga, di setiap elemen tingkat pertama ada elemen dn tingkat kedua, yang berisi DN lengkap dari objek ini - ini akan sangat berguna bagi kami di masa mendatang. Array keluaran jauh lebih sederhana, satu elemen ditampilkan di Listing 8. Di sini, saya sengaja menggunakan objek data non-ASCII untuk menunjukkan bahwa data telah dikodekan ulang. Listing 8. Sebuah elemen dari larik keluaran.=> array (2) (["cn"] => string (11) "Hanya Pengguna" ["samaccountname"] => string (10) "prostouser")Mengapa input dan output dari fungsi ini begitu detail? Karena sebenarnya, semua pekerjaan skrip utama (yang akan dibahas di bagian artikel selanjutnya) akan dikurangi untuk mempersiapkan panggilannya dan pemrosesan selanjutnya dari array yang dibentuk olehnya. KesimpulanSeperti yang Anda lihat dari artikel ini, PHP sangat menyederhanakan pekerjaan dengan server LDAP, memungkinkan Anda untuk meninggalkan konstruksi marah yang terkait dengan penyimpanan data dalam file sementara, menggantinya dengan representasi array yang jauh lebih nyaman di memori, memungkinkan Anda untuk mengode ulang ke halaman kode lain dengan cepat, dan membuatnya lebih mudah untuk men-debug skrip. Di bagian ini, Anda "akan mempelajari cara mencari dan mengambil data dari server direktori, serta menambah, mengubah, dan menghapus entri. ldap_search ()resource ldap_search (pengidentifikasi link_sumber daya, string base_dn, filter string [, atribut array [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]]) ";) ldap_unbind ($ iklan);?> Contoh hasil mengikuti: Gilmore, Jason (Columbus) Shoberg, Jon (Columbus) Streicher, Martin (San Francisco) Wade, Matt (Orlando) Sebagian besar kemungkinannya mudah, kecuali cara yang berpotensi aneh di mana nilai atribut direferensikan. Semua baris atribut pada akhirnya adalah array multi-dimensi, dengan setiap nilai atribut direferensikan oleh kombinasi nomor baris, nama atribut, dan indeks array atribut. Jadi, misalnya, bahkan atribut seperti "sn", nama atribut untuk nama belakang pengguna "s, adalah array yang diindeks. ldap_mod_add()boolean ldap_mod_add (sumber link_id, string dn, entri array) Seperti halnya semua tugas server direktori, pastikan bahwa pengguna yang mengikat memiliki izin yang tepat untuk menambahkan data target; jika tidak, kesalahan akan terjadi. ldap_mod_replace()boolean ldap_mod_replace (resource link_id, string dn, entri array) Seperti halnya dengan semua tugas server direktori, pastikan bahwa pengguna yang mengikat memiliki izin yang tepat untuk mengubah data target; jika tidak, kesalahan tak terduga akan terjadi. ldap_hapus ()boolean ldap_delete (sumber link_id, string dn) Seperti halnya dengan semua tugas server direktori, pastikan bahwa pengguna yang mengikat memiliki izin yang tepat untuk menghapus data target; jika tidak, kesalahan tak terduga akan terjadi. Mencari Direktori Aktif melalui WebSaya selalu ingin melengkapi tutorial dengan contoh yang dapat diterapkan sehingga pembaca dapat segera beradaptasi dengan kebutuhan mereka sendiri. Dalam tutorial ini, saya "akan menunjukkan cara membuat antarmuka pencarian yang mampu mencari berdasarkan nama, lokasi, atau nomor telepon. Yang perlu Anda lakukan hanyalah memodifikasi variabel koneksi dan DN dasar. Untuk memulai, mari "s membuat antarmuka pencarian, yang akan disimpan sebagai" search.html ": Kriteria pencarian:Saring: Gambar 1 menawarkan contoh seperti apa bentuk pencarian ini di browser. Gambar 1. Formulir Pencarian Direktori Aktif Selanjutnya, kita "harus membuat logika yang mempengaruhi pencarian. Kode singkat ini ditampilkan di sini: 0) (untuk ($ i = 0; $ i<$entries["count"]; $i++) { echo " Nama: ". $ Entri [$ i] [" nama tampilan "]." Tidak ada hasil yang ditemukan! ";) ldap_unbind ($ iklan);?>Anda dapat mengubah tujuan tindakan yang ditentukan dalam antarmuka pencarian, mengarahkannya ke file yang terdiri dari skrip di atas, atau Anda dapat menggabungkannya ke dalam file yang sama dengan antarmuka pencarian, dan menggunakan isset () dan kondisi if untuk memicu eksekusi jika tombol kirim pencarian ditekan. Tentu saja, Anda ingin menambahkan beberapa kriteria validasi data tambahan sebelum menerapkan skrip semacam itu. Gambar 2 menawarkan contoh hasil pencarian. Gambar 2. Hasil Pencarian KesimpulanMeskipun PHP telah lama menjadi bahasa utama saya untuk mengembangkan aplikasi Web, saya "telah menemukan Perl menjadi bagian integral dari toolkit programmer saya". Saat bekerja dengan server direktori, sentimen ini tidak berbeda. Oleh karena itu, artikel selanjutnya dikhususkan untuk dasar-dasar Perl/LDAP. Seperti halnya dengan artikel ini, semua contoh khusus untuk Microsoft "s Active Directory, meskipun Anda harus dapat dengan mudah menerapkannya ke implementasi server direktori mana pun. Kami akan melengkapi artikel itu dengan contoh yang menunjukkan cara membuat cache statis Direktori pengguna berbasis web menggunakan skrip Perl dan CRON (atau Penjadwal Tugas Windows). Saya menyambut pertanyaan dan komentar! Email saya di [dilindungi email]... Saya juga ingin mendengar lebih banyak tentang pengalaman Anda mengintegrasikan teknologi Microsoft dan Open Source! tentang PenulisW. Jason Gilmore (http://www.wjgilmore.com/) adalah pengembang aplikasi Internet untuk Fisher College of Business. Dia "penulis buku yang akan datang, PHP 5 dan MySQL: Novice to Pro, yang diterbitkan oleh Apress pada tahun 2004. Karyanya telah ditampilkan dalam banyak publikasi terkemuka industri komputasi, termasuk Majalah Linux, O "Reillynet, Devshed, Zend.com, dan Webreview. Jason juga penulis Pengantar PHP 4.0 (453pp., Apress). Bersama rekannya Jon Shoberg, dia "rekan penulis" Out in the Open, "kolom bulanan yang diterbitkan dalam majalah Linux. |