php code สำหรับติดต่อ ldap server

22 ก.ย.54 มีโอกาสเรียนรู้การเขียนโปรแกรมด้วยภาษา PHP ติดต่อกับ LDAP Server โดยมี engineer ติดตั้ง server ตัวนี้ไว้ แล้วผมมีหน้าที่เข้าไปใช้งาน ก็คิดว่าจะใช้ php (ใช้ phpinfo ตรวจแล้วพบว่า php สามารถใช้ ldap ได้) เข้าไปอ่านข้อมูลผู้ใช้ เพื่อทำ authentication ตรวจผู้ใช้งานระบบ และ code ชุดนี้เป็นตัวอย่างที่ผมใช้ติดต่อกับ ldap server การติดต่อนั้นอาจใช้ browser

พิมพ์ ldap://www.domain.com:389
/uid=BURIN_R,ou=CLERK,ou=OFFICE1,dc=domain,dc=com

ก็จะเปิดด้วยโปรแกรม Windows Contact ขึ้นมาอัตโนมัติ

<?
$host = “ldap://www.domain.com“;
$baseDn1 = ‘cn=Manager,dc=domain,dc=com‘;
$baseDn2 = ‘uid=BURIN_R,ou=CLERK,ou=OFFICE1,dc=domain,dc=com‘;
$password = “your password“;
$ldap = ldap_connect($host);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
$b = ldap_bind($ldap,$baseDn1,$password) or die(“bind died”);
echo “<pre>bind :”;
if($b) echo “pass”; else echo “fail”;
$result = ldap_search($ldap, $baseDn2,”(cn=*)”);
$rec = ldap_get_entries($ldap,$result);
echo ldap_count_entries($ldap,$result);
echo $rec[0][“cn”][0];
echo $rec[0][“userpassword”][0];
echo $rec[0][0][0];
print_r($rec);
ldap_unbind($ldap);
?>

เข้ารหัส และถอดรหัส

ciphertext
ciphertext
มีโอกาสสอนนักศึกษาเข้ารหัสข้อมูล (Encryption) และถอดรหัสข้อมูล (Decryption) โดยใช้โปรแกรมของ Kailas Jagtap ที่เขียนด้วยภาษา Assembly ใช้เทคนิคเพิ่มบิทข้อมูลเฉพาะตัวอักษรอย่างง่าย ..
จำลองให้นักศึกษาเขียนจดหมาย (Plain text) แล้วเข้ารหัสข้อมูลด้วยโปรแกรม ก็จะได้แฟ้มจดหมายที่เข้ารหัส (Ciphertext) จากนั้นก็ส่งไปให้เพื่อน ..  หากเพื่อนจะเปิดอ่านต้องถอดรหัสด้วยโปรแกรมเดียวกัน
ขั้นตอนเข้ารหัสและถอดรหัส มีดังนี้
1. สร้างแฟ้มจดหมายด้วย
DOS> echo abc>i.txt
2. ดำเนินการสร้างจดหมายที่เข้ารหัส (encryption)
DOS> secure
e
i.txt
o.txt
3. ส่งจดหมาย o.txt เป็น attach file ไปให้เพื่อนทาง facebook message
4. เพื่อนได้รับ secure.exe และ o.txt ดำเนินการถอดรหัสจดหมาย
DOS> secure
d
o.txt
in.txt
5. เพื่อนเปิด in.txt มาอ่านได้อย่างเข้าใจ
แหล่งข้อมูล

โปรแกรมแก้วสารพัดนึกรุ่น 7.0

thaiabc 7.0
thaiabc 7.0

โปรแกรม thaiabc หรือที่ผมเรียกว่า โปรแกรมแก้วสารพัดนึก ปรับรุ่นเป็น 7.0 แล้ว โดยมีการปรับปรุงที่สำคัญต่อจากรุ่น 6.5 ดังนี้
1. เพิ่ม LDAP และ PDO Extension ใน php.ini
2. upgrade MySQL เป็นรุ่น 5.5.16
3. upgrade phpMyadmin เป็นรุ่น 3.4.5
4. upgrade WordPress เป็นรุ่น 3.2.1
5. upgrade Drupal เป็นรุ่น 7.8
6. เพิ่ม บทความ itinlife เป็น 308 บทความ
7. download บันทึกทั้งหมดจาก thaiall.com/blog

สิ่งที่คาดหวัง
1. ช่วยให้ คนไทย เรียนรู้ Web Server, Database, Programming, e-Commerce, e-Learning, CMS, Blog และระบบต่าง ๆ จากในเครื่องคอมพิวเตอร์ของตนเอง ทั้งแบบ Online และ Offline
2. ช่วยให้ ครู นักเรียน และนักพัฒนา สามารถติดตั้ง หรือสร้างตัวติดตั้งโปรแกรมของตนเอง และใช้งานได้ในเวลาที่รวดเร็ว ใช้งานจริงได้ทั้งใน Stand Alone, Intranet และ Internet

โปรแกรมเผยแพร่ไว้ 2 site
http://www.4shared.com/file/-GUaqgqy/thaiabc70.html
http://www.4shared.com/file/izAeFHam/thaiabc70.html

ldap client admin

ldap admin
ldap admin
มีโอกาสได้ใช้โปรแกรม ldapadmin-4.6.11111.0-x86-eng ซึ่ง download ได้จาก http://www.ldapadministrator.com เกี่ยวกับการบริหาร account ใน LDAP Server มีผลจากการเรียนรู้ ดังนี้
1. การ export data สามารถทำได้ครั้งละไม่เกิน 50 ระเบียน (รุ่นทดลอง)
2. เมื่อ export data ออกไปเป็นแบบ csv หากแก้ไขแล้ว ต้องลบ 2 บรรทัดแรกก่อน import
3. ถ้า import ทับข้อมูลเพิ่ม ก็ต้องลบข้อมูลเดิมก่อนที่จะ import
4. สามารถเลือกระเบียนที่ต้องการ export data ได้ตามที่ต้องการ แต่ไม่เกินครั้งละ 50 ระเบียน
5. ค่าที่ export เป็นแบบ csv ออกไปสามารถแก้ไขด้วย notepad หรือ excel ก็ได้
6. ถ้าเชื่อมต่อ ldap server พร้อมกัน 2 เครื่อง สามารถสำรองข้อมูลด้วยการกดปุ่ม ctrl-c แล้ว ctrl-v ได้เลย โดยไม่ต้องใช้เทคนิค import + export และไม่จำกัดจำนวนระเบียน
$ldaphost = “x500.bund.de”;
$ldapconn = ldap_connect($ldaphost,”389″) or die(“Could not connect to yn1″); // {$ldaphost}
if ($ldapconn) {
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
$ldapbind = ldap_bind($ldapconn,”o=Bund,c=DE”);
if ($ldapbind) {
echo “anonymous successful…”;
} else {
echo “anonymous failed…”;
}
} else {
echo “connect fail”;
}
// ldapsearch -h localhost -b “dc=domain,dc=com” -s sub “objectclass=*” -x
// add libeay32.dll, ssleay32.dll in system32 and checking by phpinfo()
// http://www.keutel.de/directory/public_ldap_servers.html
// http://www.emailman.com/ldap/public.html

ซะป๊ะกับคำอธิบายรายวิชา

course description
course description

11 ก.ย.54 มีอะไรเกี่ยวพันกันไปหมดกับคำว่า คำอธิบายรายวิชา มีขั้นตอนที่ทำให้เกิดการเกี่ยวพันกันดังนี้
1. เริ่มต้นด้วยการ download แฟ้ม .doc ที่บีบอัดไว้
จาก http://www.thaiall.com/tqf/tqf2_cs_kmutt.zip
ซึ่งเป็นร่าง มคอ.2 สาขาวิทยาการคอมพิวเตอร์ ที่ยกร่างโดย มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี
2. นำมาตัดให้เหลือ ข้อมูลเฉพาะคำอธิบายรายวิชา และเป็นวิชาทางสาขาที่ขึ้นต้นด้วย CSC โดยมีรูปแบบวิชาละ 7 บรรทัด ประกอบด้วย 1) รหัสวิชา 2) ชื่อภาษาไทย 3) ชื่อภาษาอังกฤษ 4)หน่วยกิต 5)อธิบายภาษาไทย 6)อธิบายภาษาอังกฤษ 7)บรรทัดว่าง
อยู่ใน http://www.thaiall.com/tqf/tqf2_cs_kmutt.txt
3. เขียน code อ่านแฟ้ม .txt ไปแสดงผลในตาราง และใส่สี ตามแบบที่ต้องการ
http://www.thaiall.com/tqf/tqf2_cs_kmutt.php
ในโปรแกรม tqf2_cs_kmutt.php ออกแบบให้ถูกดูดแล้วแก้ไขแบบออนไลน์ได้ง่าย
4. เขียน code อ่านแฟ้ม .php ไปแสดงผลร่วมกับ template ที่เตรียมไว้
http://www.thaiall.com/computer/cskmutt.php
จะดูด tqf2_cs_kmutt.php มาปรับรูปแบบเพิ่มเติม เพื่อส่งเข้า template คือ index.php
5. ใช้ .htaccess และ redirect.php แก้ปัญหาการส่งข้อมูลแบบ get ให้รองรับการส่งข้อมูลด้วย /
ทำให้ผลของ /xxx กับ /file=xxx มีผลเหมือนกัน

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /computer/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /computer/redirect.php [L]
</IfModule>

<?
$r = split(“/”,$_SERVER[“REQUEST_URI”]);
$ar = file(“http://www.thaiall.com/computer/?file=”. $r[2]);
foreach($ar as $v) echo $v;
?>

http://www.thaiall.com/computer/?file=cskmutt
http://www.thaiall.com/computer/cskmutt

กรณีศึกษาการย้ายโดเมนเนม

เล่าสู่กันฟังเรื่องการย้ายโดเมนเนมหนึ่งที่เคยจดไว้เมื่อ 20-Dec-1998 (ปีที่แล้วเกือบหลุดไป) เดิมฝากไว้กับ networksolutions.com ไปไว้กับ godaddy.com มีการดำเนินการดังนี้
1. ตรวจค่าใช้จ่าย พบว่า promotion ของ godaddy.com
Transfer Your Domain
From only $7.49/yr* & Free 1-yr extension.

2. เข้า godaddy.com แล้ว login แล้วคลิ๊กที่ Domains, Transfer Domain, [put domain name] , Proceed to Checkout
3. ตัวเลือก Nameservers ของผมเลื่อก change มาที่ godaddy.com ซึ่งอยู่ในขั้นตอนที่ 2/4
4. จ่าย $15.34 สำหรับ 2 ปี
5. มีอีเมลถึงของเจ้าของโดเมนเนม พบรหัสผ่านสำหรับยืนยัน ให้กดลิงค์นั้น ก็จะมีรายละเอียดให้ดำเนินการ หัวข้ออีเมลคือ Transfer of [domain name] – Action Required‏
6. เข้า My Products ของ godaddy.com แล้วคลิ๊ก Domain Manager

7. เข้า nsi.com แล้ว login แล้วคลิ๊ก MANAGE ACCOUNT แล้วคลิ๊ก My Domain Names
8. หัวข้อ Details for [domain name] พบคำว่า Domain Protect : on (Turn Off or Request Authorization Code)
9. ทำเครื่องหมายหน้า Leave Domain Protect off และ Request Authorization Code แล้ว Authorization Code จะส่งไปทางอีเมลใน 15 นาที
10. networksolutions.com ส่งอีเมลมาให้มีหัวข้อว่า Your Authorization Code Request‏ จากนั้นก็คัดลอก Authorization code ไว้

11. กลับเข้า godaddy.com เพื่อทำขั้นตอนที่ 2
12. เข้า Domains menu, select Pending Transfers. แล้วคลิ๊ก  Authorization,  Begin Transfer Authorization แล้วนำ Transaction ID และ Security Code ในอีเมล มากรอกใน 2 ช่องนี้
13. กรอก Authorization Code ที่ได้มาจาก networksolutions.com

14. เข้า mailbox เพื่อทำขั้นตอนที่ 3
15. รออีเมลจาก networksolutions.com แล้วเข้าไปเลือก Transfer Status : Confirm หรือ Reject

การติดตั้ง php5.2.12 บน iis7 ใน win7

วิธีที่ 1 : เรียกใช้ .php ผ่าน localhost ได้
1. ติดตั้ง iis7 ใน win7 ผ่าน Control Panel, programs and features แล้ว Turn Windows Features on or off แล้วเลือกลงโปรแกรมให้ครบ อาทิ Internet Information Services, World Wide Web Services, Application Development Features, CGI และอื่น ๆ
2. download โปรแกรมจาก
3. คลาย php-5.2.12-Win32-VC6-x86.zip ลงใน c:\php
4. เข้าห้อง c:\php แล้วเปลี่ยนชื่อแฟ้ม php.ini-recommended เป็น php.ini
แล้วเพิ่ม cgi.force_redirect=0
แล้วเปลี่ยน extension_dir = “c:\php\ext”
5. เข้า Control Panel, Administrative Tools, Internet Information Services (IIS) Manager ในหัวข้อ IIS ให้เลือก double click บน Handler Mappings แล้วเลือก Add Module Mapping เพิ่ม Request path เป็น *.php แล้ว Executable เป็น c:\php\php5isapi.dll แล้ว Name เป็น PHP
6. กลับไปคลิ๊ก Sites, Default Web Site แล้ว double click ISAPI Filters แล้วคลิ๊ก Add ให้ Filter name = php และ Executable = c:\php\php5isapi.dll
7. ลองเขียน x.php ใน c:\inetpub\wwwroot ได้ครับ
วิธีที่ 2 แต่ก็ไม่ ok
ทดสอบกับ php-5.3.8-nts-Win32-VC9-x86.zip แล้วใช้ไม่ได้
เพราะคลาย .zip แล้วไม่พบ php5isapi.dll พบแต่ php5.dll
เมื่อลองใช้แทน php5isapi.dll ก็พบว่า iis7 ไม่ยอมรับ
หลังติดตั้ง ก็ยังไม่ run .php เห็น source code ครับ
วิธีที่ 3 แต่ก็ไม่ ok
ติดตั้งโปรแกรมของ Microsoft
หลังติดตั้ง ก็ยังไม่ run .php เห็น source code ครับ

แก้ปัญหาโดนตัด session อัตโนมัติ

web browser
web browser

8 ก.ย.54 วันนี้ใช้บริการอินเทอร์เน็ต ภายใต้นโยบายของ fortigate firewall ที่กำหนดว่าถ้า idle time หรือไม่ใช้งานเกินกว่า 5 นาที ให้ตัดการเชื่อมต่อกับอินเทอร์เน็ต ถ้าจะใช้ก็ให้ login ใหม่ ซึ่งสภาวะการใช้งานบางลักษณะจะไม่สะดวกกับนโยบายนี้ ประกอบกับลูกศิษย์คนหนึ่งโทรมาถามว่า เครื่องบริการที่ทำไว้ log off อัตโนมัติ ทำให้ app บางตัวหยุดทำงานไปด้วย จึงเขียนโปรแกรมด้วย vb6 สั่ง request google.com ด้วย keyword ที่แตกต่างกันทุก 60 วินาที ก็จะแก้ปัญหาการตัดการเชื่อมต่ออัตโนมัติทั้ง 2 กรณีได้
http://www.thaiall.com/vb/connect_google.zip

เปิดหนัง youtube.com ทิ้งไว้

bandwidth
bandwidth

ทดสอบดูหนัง youtube.com ความละเอียด 360p พร้อมกัน 2 เรื่อง พบว่าใช้ bandwidth ประมาณ 96,999Bps = 758 Kbps แสดงผลผ่าน Resource Monitor on win7 .. ถ้าในบริษัทมีคนดูหนังคนละเรื่องพร้อมกัน 30 คน ก็จะใช้ bandwidth 22 Mbps ดังนั้นองค์กรที่มี bandwidth 20 Mbps ก็จะไม่สามารถรองรับบริการอื่นจากผู้ใช้คนอื่นได้ ..

ที่คิดเรื่องนี้ เพราะมีเพื่อนบ่นให้ฟังว่าเห็นผู้ใช้เปิดคลิ๊ปใน youtube.com ค้างไว้ แล้วก็ไปประชุมข้างนอก หากเป็นเช่นนี้ก็จะกระทบ bandwidth ในภาพรวมของบริษัทแน่นอน

telnet client on win7

telnet client
telnet client
2 ก.ย.54 เดิมใช้ hub ซึ่งถือเป็นอุปกรณ์ที่ทำงานใน layer 1 physical layer ของ OSI แต่วันนี้ทดสอบ connect เข้า switch พบปัญหาก็มีเพื่อนบอกว่าต้องเปิด telnet client จากนั้นก็ไปอ่านเรื่อง switch พบว่า  switch layer 2 : data-link layer มีการตรวจ Mac Address และส่งจาก port-to-port ข้อมูลเป็น frame  ไม่ส่ง broadcast แบบ hub ถ้าเป็น switch layer 3 : network layer จะส่งข้อมูลเป็น package หรือ IP Address ปัญหาคือ win7 ไม่สามารถใช้ telnet ได้ ถ้าจะใช้ต้องเข้า control panel, program and features, turn windows feature on แล้วเลือก telnet client ก็จะ install แล้วใช้ microsoft telnet ได้ตามปกติ