การเตรียมแฟ้มข้อสอบนั้นมี 9 ขั้นตอน

ก่อนหน้านี้ได้พัฒนาระบบข้อสอบแบบออนไลน์ และเตรียมโค้ดสำหรับเผยแพร่ พร้อมกับอธิบายผ่าน comment ในโค้ด และเผยแพร่เป็นรุ่น 2.0 บน github ตามลิงก์ ซึ่งพบว่าการใช้งานโค้ดในโรงเรียน คุณครูจำเป็นต้องมีแฟ้มข้อสอบของตนเองบนเครื่องบริการ เพื่อให้ถูกเรียกใช้ได้ตรงตามเนื้อหาและแผนการสอน เช่น สอนวิชาภาษาอังกฤษก็จะมีข้อสอบเรื่องกริยา สอนวิชาภาษาไทยก็จะมีข้อสอบเรื่องคำที่มักเขียนผิด เป็นต้น ดังนั้น จึงได้เขียนแนะนำขั้นตอนการเตรียมแฟ้มข้อสอบไว้ ดังนี้

การเตรียมแฟ้มข้อสอบนั้นมี 9 ขั้นตอน สำหรับ แบบทดสอบเตรียมสู่อุดมศึกษา
https://github.com/thaiall/code/blob/main/test3.php
มีดังนี้

1. นำแฟ้มข้อสอบตัวอย่าง ไปเปิดบนโปรแกรม Excel ซึ่งง่ายที่สุดสำหรับการใช้เครื่องมือพื้นฐาน
แล้วเลือก Get External Data: From Text และเลือกประเภทแฟ้มเป็น All Files (.)
2. ข้อสอบ ตัวเลือก และเฉลยแต่ละข้อจะอยู่รวมกันใน 1 บรรทัด ซึ่งแยกด้วย Delimited: Tab
แฟ้มข้อสอบโดยปกติมีการ Encoding แบบ UTF-8 ถ้าอ่านไม่ออกให้เปลี่ยนเป็นแบบ 874 : Thai (Windows)
3. ผลการใช้ Delimited จะทำให้แต่ละคอลัม แยกออกจากกันชัดเจน
สามารถตรวจสอบผลการแบ่งคอลัมในส่วนของ Data preview ได้
4. ผลการนำเข้าแฟ้มข้อสอบตัวอย่าง ลงในโปรแกรม Excel สำเร็จด้วยดี
ต่อจากนี้คือการป้อนข้อสอบชุดใหม่ ทั้งคำถาม เฉลย และตัวเลือกจนแล้วเสร็จ
5. บันทึกแฟ้มข้อสอบด้วย Save as และเปลี่ยนชื่อแฟ้ม และ Extension เป็น .php
แล้วกดปุ่ม Save ซึ่งชื่อแฟ้ม และการเปลี่ยน Extension สามารถทำได้บน Explorer
6. เปิดแฟ้มข้อสอบที่บันทึกแล้ว ด้วยการกด Right click บนชื่อแฟ้มใน Explorer
ในเบื้องต้นสามารถเปิดด้วย Notepad เพื่อสำรวจว่ามีข้อสอบชุดที่ได้ปรับปรุงแล้ว
7. ถ้าแฟ้มข้อสอบมีรหัสตัดบรรทัด คือ 13 และ 10 ก็จะเห็นข้อสอบเรียงข้ออ่านง่าย
แต่ถ้าแฟ้มข้อสอบมีรหัสตัดบรรทัด คือ 10 ก็จะเห็นข้อมูลทั้งหมดอยู่ในบรรทัดเดียวบน notepad
ซึ่งโปรแกรม test3.php สามารถนำแฟ้มข้อสอบมาใช้ได้ทั้ง 2 กรณี
8. ถ้าแฟ้มข้อสอบมีรูปแบบที่ถูกต้อง มีชื่อแฟ้ม และ extension ตามที่กำหนด
และเมื่อทดสอบบนเครื่องบริการร่วมกับ test3.php ก็จะปรากฎตัวเลือกมาให้ฝึกทำ
9. เมื่อได้ทำข้อสอบแล้วเสร็จ ระบบจะเก็บผลสอบจำนวน 100 รายการล่าสุด
และสามารถเปลี่ยน URL จาก top=10 เป็น top=100 เพื่อขยายรายการแสดงผลได้
ระบบนี้ผู้สอบทุกคนสามารถเปิดรายงานได้ ดังนั้นการนำไปใช้ในระบบปิดจะปลอดภัยกว่า

โค้ดชุดนี้ถูกใช้งานที่ http://www.thainame.net/quiz/test3.php

เวิร์ดเพรสจอดำ แก้ไขอย่างไร

ความเป็นมา .. มีอยู่วันหนึ่ง ในระหว่างเสนอผลการสำรวจคนไทยให้นิสิตของผมได้รู้ถึงสถานการณ์ ว่าทักษะที่แรงงานไทยขาดแคลนมากที่สุดคืออะไร จากข้อมูลที่เคยอ่านพบจากเอกสารในหัวข้อ Productivity and investment climate survey ซึ่ง Boonlert Theeratrakul บอกว่า คนทำงานไทยขาดทักษะสำคัญ 3 เรื่องคือ 1) ภาษาอังกฤษ 2) ทักษะด้านไอที และ 3) ทักษะเชิงตัวเลข จึงจะเปิดเอกสารที่เคยโพสต์ไว้ในบล็อก “IT Blog เทคโนโลยีสารสนเทศ” ซึ่งใช้ระบบ wordpress ให้บริการ Blog เมื่อคลิกเปิด post ตามลิงค์ที่แชร์ไว้ พบว่า จอดำ (Black Screen) บนทั้ง 2 Blog sites ที่เปิดให้บริการไว้

3 เรื่องที่คนไทยขาดแคลน

หลังการสืบค้น .. เข้าไปดูในระบบ administrator พบ fatal error จากโค้ด /legacy /class-jetpack-signature . php on line 218 และแจ้งว่า Call to undefined function ctype_digit() ซึ่งปัญหานี้เกิดขึ้นกับ Blog site ทั้ง 2 ระบบบน server ตัวนี้ เมื่อนึกย้อนไปว่าก่อนหน้านี้เกิดอะไรขึ้นบ้าง พบว่า ผมได้ทำการ upgrade จากรุ่นของ php 7.3 เป็น 7.4 นั่นคือ 7.4 บนเครื่องบริการนี้ ไม่สนับสนุน ctype_digit จึงต้องหาวิธีแก้ไขต่อไป

วิธีแก้ปัญหาที่ 1
พบคำแนะนำให้ลบ folder jetpack ออกจาก plugins แล้วใช้ ftp upload เข้ามาใหม่ ซึ่งคำแนะนำนี้ใช้ได้กับ jetpack ที่หยุดการทำงาน แล้วไม่สามารถสั่ง Activate ขึ้นมาได้ ซึ่งเป็นปัญหาที่เกิดขึ้นกับ shared server ที่เป็น windows ตัวหนึ่งของผม ที่แก้ไขได้ด้วยการอัพโหลดผ่าน FTP แทนการติดตั้งผ่านระบบ admin ของ wordpress โดยตรง แต่กรณี ctype_digit นี้ ไม่สามารถแก้ไขด้วยการเปลี่ยนแฟ้มบนเครื่องบริการ

วิธีแก้ปัญหาที่ 2
พบคำแนะนำให้แก้ไข php.ini โดยมีขั้นตอนดังนี้

  1. เพิ่ม extension=ctype.so เข้า php.ini
  2. สั่ง Activate : jetpack ที่ติดตั้งอยู่ ถ้ามีปัญหา ให้ลบ folder แล้วอัพโหลดใหม่ หรือเปลี่ยนชื่อเป็นชื่ออื่น ซึ่งผมเลือกการเปลี่ยนชื่อ ทำให้เกิดการตรวจสอบในรายการ plugins ใหม่
  3. เมื่อใช้งาน jetpack ได้แล้ว อาจต้อง setup ใหม่ โดยเชื่อมกับ wordpress.com แล้วคลิก Approve
  4. บริการเบื้องต้น คือ Jetpack Stats ซึ่งยังไม่มีค่าใช้จ่าย

ปัญหานี้ เกิดจาก server ที่ให้บริการ webhosting ได้กำหนดค่า default ของ php 7.4 ว่า disabled ctype เป็นแบบ default ส่วนรุ่น 7.3 ไม่พบปัญหา เพราะ enabled เป็น default จึงต้องแก้ไขด้วยการเข้าไปแก้ไข php.ini เพื่อสั่งเรียก extension ที่ชื่อ ctype

ctype_digit function in php 7.4

#เล่าสู่กันฟัง 63-053 ทำ linebot กับ groupchat

มีที่มาจากนิสิต สนใจทำ linebot
จึงอ่านพบว่าต้องทำอย่างไร
บัญชี linebot ตัวนี้ ที่สร้างมา
ชื่อ thaiallbot ถือว่าเป็นบัญชีแยก
ถ้าคุยด้วย เค้าก็จะคุยด้วย
แต่คุยไม่เก่ง พูดกับเค้าว่า hi hello สวัสดี
เค้าก็จะตอบได้ มากกว่านี้เค้าจะเงียบ
ที่สำคัญผมจะไม่เห็ว่าเค้าคุยกับใคร
เพราะไม่ได้ทำส่วนเก็บ userId ไว้
และไม่เก็บบทสนทนาไว้เลย
https://line.me/R/ti/p/%40362lmjyg

แล้วไปสร้างกลุ่มขึ้นใหม่
ชื่อ groupchat เหมือนกลุ่มทั่วไปใน line
แต่ดึง thaiallbot เข้ากลุ่มอีกคนหนึ่ง
เคยทำให้ bot ทักคนเก่ง ทุกข้อความ
มีกลุ่มหนึ่งรำคาญ ดีด bot ออกกลุ่มเฉย
จึงต้องให้เค้าพูดคุย เฉพาะที่เค้าเข้าใจ
ตอนนี้พาเข้ากลุ่ม groupchat
เวลาใครคุยกับ thaiallbot
ผมก็จะเห็นด้วย สนใจเข้ากลุ่มนี้
เชิญเข้าผ่านลิงค์นี้ได้
https://line.me/R/ti/g/zWRplgVoIG

ถ้าคุยตัวต่อตัวกับ bot
ไม่มีใครรู้ใครเห็นครับ เพราะผมไม่เก็บ
ถ้าคุยว่า id เค้าจะตอบเป็น id ของท่าน
อย่าไปคุยที่อื่นนะครับ
เช่น ใน groupchat เพราะ bot
จะตอบเป็น userid ยาว ๆ
ที่คนเขียนโปรแกรมสามารถส่งข้อความถึงท่านได้
หากเขาทราบ userid
มีแต่เพื่อนที่เชค้าเขียน bot
ที่สนใจ id ดังนั้นอย่าพิมพ์ในกลุ่ม
เพราะ bot จะตอบเป็น id ของท่าน

#เล่าสู่กันฟัง 63-032 ฐานข้อมูลต่างรุ่น

ผู้ให้บริการแต่ละราย ให้บริการเครื่องโฮส
ที่มีภาษา และฐานข้อมูลต่างรุ่นกันไป
บางเครื่องมีภาษาให้เลือกเปลี่ยนได้ง่าย
บางเครื่องมีฐานให้เลือกติดตั้ง
แต่เปลี่ยนหลังติดตั้งไปมาไม่ได้

ภาพตัวอย่างพูดถึงรุ่นของ mysql
ระหว่าง 5.5.30 และ 5.6
ที่บางระบบกำหนดฐาน รุ่น 5 ไว้ให้
ปัจจุบันพัฒนาไปถึง Mariadb 10.5 กับ Mysql 8
แต่เครื่องที่ผมมีใช้ 5.0.12 กับ php7
ที่ http://www.thaiall.com/moodle

เครื่องที่ใช้คือแชร์เครื่อง
ไม่ใช่เครื่องที่ติดตั้ง xampp หรือ appserv

มีโปรแกรมเก่า wp ที่ถูกบังคับเปลี่ยน
ให้ใช้ภาษารุ่น 7 ทำงานกับฐานรุ่น 5 ได้
แต่กับ moodle ไม่ได้ออกแบบให้ทำกับ
ฐานรุ่น 5 ต้องแก้ไข code
ทั้ง deprecated และ constructor
แล้วก็ไปเล่าเรื่องการเปลี่ยน script
ที่ http://www.thaiall.com/php/php7.htm

ถ้ามีโอกาสก็จะเล่าเรื่อง glossary
บน moodle
ใน http://www.thaiall.com/e-learning

พูดคุยแลกเปลี่ยนใน github

อ้างอิง
https://en.m.wikipedia.org/wiki/MySQL

https://en.m.wikipedia.org/wiki/MariaDB

https://www.000webhost.com/forum/t/mysql-version-with-pro-and-free-hosting/61652

ทดสอบ Free web hosting ที่บริการ PHP กับ MySQL มาหนึ่งโหล

อันที่จริงชีวิตคนไอทีเช่นผม ก็เริ่มต้นจากการใช้บริการ Free web hosting นี่หละ
เริ่มแรกเลยก็ geocities.com จากนั้นก็ขยับขึ้นไปบน Server
ที่บริการ Server-Side Script ไม่ใช่ Static web page อีกต่อไป
ไปใช้ บริการ Database Server บริการ PHP บ้าง ASP บ้าง
แล้วแต่อารมณ์จะพาไปหาในแต่ละช่วงชีวิต
ขอสารภาพเลยว่า ตัวหนึ่งที่เช่าใช้อยู่ทุกวันนี้ ก็เริ่มต้นจากการใช้ของเขาฟรี
แล้วติดใจ จึงยอมจ่ายตังมาจนถึงทุกวันนี้

เข้าเรื่องเลย เหตุเกิดว่าผมต้องคุยกับ น.ศ. เรื่องการเขียน Server-Side Script
พอยกกรณีศึกษา หรือ Sample code ก็ต้องหาที่ให้เค้าลอง
ต้องบริการ PHP + MySQL + Free + No Domain
จะให้ใช้ XAMPP่, Appserv, Thaiabc หรือ Localhost อยู่บ้าน นั่นต้องทำอยู่แล้ว
แต่ให้ดีต้อง Online
ครั้งจะ Upload ไป Run ที่เครื่องของผมที่เปิดรอท่า ก็ดูกะไรอยู่
จึงให้ไปสมัครใช้ฟรีกับเหล่า Free web hosting ผมตั้งเงื่อนไขให้เค้าสมัครใช้คนละ 2 ตัว

ปีนี้ 2017 หากจะให้เล่าถึง Server สมัยผม ก็คงล้มหายตายจากกันไปหมดแล้ว
ไปค้นเน็ตเจอที่ Desire Athow เขียนเมื่อ June 18, 2017
ว่ามี Free hosting สำหรับ Business ที่เป็น Best ถึง 10 sites
ผมก็ไม่รอช้า มี Reference แล้วก็หยิบมาเลย ทดสอบเรียงตัวเลย
http://www.techradar.com/…/top-free-hosting-for-businesses

ตัวแรก ueuo.com
ตัวนี้ไม่ได้อยู่ใน 10 Best นะครับ
แต่เป็นตัวที่ผมวาง Sample code เมื่อหลายปีก่อน และ Active อยู่
กลับไปทดสอบสมัคร เพราะผมใช้อยู่ก็จะแนะนำให้ น.ศ. ไปสมัครด้วย
ที่หน้าสมัครพบประกาศว่า
บริการ php 5.4 และ mysql 5.5 สำหรับ All free account
ใน ueuo.com หากจะ create an account
ต้องเข้าไปที่ freewebhostingarea.com
เข้าไปตาม Link เค้าก็ให้สมัคร
ไปจนถึงสร้าง account แบบ Free subdomain Hosting
เช่น www.thaiabc.ueuo.com แล้วกด proceed ก็จบเลยครับ
จบตรงข้อความที่ว่า
Public registration was temporarily disabled!
If you need an account, please contact us using register@freewha.com
ต่อจากนี้ก็จะทดสอบ 10 sites ตามข้อมูลที่ Desire Athow แนะนำ

ของฟรี ของดี มีในโลกไซเบอร์
ของฟรี ของดี มีในโลกไซเบอร์

1) http://www.000webhost.com/
สรุปว่าสามารถสมัครได้ มีบัญชี คือ https://thaiabc.000webhostapp.com
เริ่มจากเข้าไปแล้วพบอะไรน่าคลิ๊กไปหมด
สมัครเสร็จก็ต้องไปรอ Email confirmation required
หลัง Verify email แล้วกดปุ่ม Manage website “thaiabc”
พบบริการ 6 รายการ 1) Build website 2) Set web address 3) File manager 4) Manage database 5) Manage emails 6) Settings
เริ่มต้นก็กด Build website
พบบริการ 3 รายการ 1) Build a website easily 2) build WordPress website 3) Upload Own Website
เนื่องจากผมมีแฟ้ม .php ที่เตรียมทำงานกับ mysql จึงเลือกข้อ 3) Upload Own Website
เข้าหน้า files ที่คล้ายกับ Windows Explorer ที่แสดง Folder ด้านซ้าย มีรายการแฟ้มด้านขวา
พบห้อง /public_html เลือก Upload files แล้วก็ upload แฟ้ม .php ที่เตรียมไว้
แต่ยังทดสอบไม่ได้ เพราะต้องกำหนดเรื่อง Database ในแฟ้ม .php ก่อน
กลับไปเข้า 4) Manage database พบว่าเค้าให้ได้สูงสุด 2 Database
มี Default database engine: InnoDB on MariaDB 10.1
เข้าจัดการผ่าน database.000webhost.com และใช้ localhost เป็น hostname
แล้วสั่ง New Database
กรอก Database name, Database username, Password
หลังจัดการ Database เสร็จก็นำข้อมูลไปกรอกในแฟ้ม .php
แล้ว upload แฟ้ม .php เข้าไปใหม่
ผลการทดสอบ Sample code ผ่านด้วยดี
หลังปรับแก้การเชื่อมต่อ MySQL แบบเดิม เป็น MySQLi
เพราะ Server บริการ PHP 7.1.7 และทุกตัวที่บริการก็ให้บริการ PHP 7 ขึ้นไปกันหมด

2) http://www.freehostia.com/
หน้าตาเรียบง่ายดี มุมบนขวาเห็นคำว่า SIGN UP NOW FOR FREE ???
ในขั้นตอนต่อไป จำเป็นต้องมี Domain Name ติดตัวไปสมัครด้วย ถ้าไม่มีก็ไม่ได้ไปต่อ
สรุปว่า ต้องมี Domain name จึงจะสมัครได้

3) http://www.5gbfree.com/hosting-plans/
คลิ๊ก Signup Now จากนั้นก็กรอกข้อมูล แล้วกด Create Accout
แล้วไปทำ Verification ผ่าน link ใน email
พบรหัสผ่านใน email และข้อมูลต่าง ๆ
สำหรับ email จากที่นี่ ถ้าไม่พบใน inbox อาจไปอยู่ใน spam ได้นะครับ
วิธีเข้า cPanel เช่น http://thaiabc.5gbfree.com:xxxx/
มองหา Database พบ MySQL Databases ก็คลิ๊กเข้าไป
จากนั้นกด New Database, Add New User
จากนั้นกด Add ในหัวข้อ Add User to Database
แล้ว Manage User Privileges เลือก ALL PRIVILEGES แล้ว Make Changes
กลับออกไป cPanel เข้า File Manger
เข้า public_html แล้วคลิ๊ก Upload ส่งแฟ้ม .php ที่กำหนด DB แล้วเข้าไป
ขณะทดสอบพบปัญหาการไม่บริการ iconv ก็ตรวจสอบ แล้วปรับ code ใหม่
ผลการทดสอบ Sample code ผ่านด้วยดี

4) http://www.freehosting.com/client/cart.php
เข้าไปก็เลือกแบบ Free Hosting กด Order Now
เค้าว่าจะได้พื้นที่ 10 GB กับ 1 MySQL database แต่พบปัญหา
สรุปว่า ต้องมี Domain name จึงจะสมัครได้

5) http://www.zymic.com/
วันนี้เข้าแล้ว too long to respond ครับ
มีข้อมูลล่าสุดใน archive.org เมื่อมกราคม 2017
https://web.archive.org/web/20170111154733/http://www.zymic.com/

6) http://byet.host/free-hosting
กดปุ่ม Sign up for a plan ที่อยู่ด้านล่าง
กรอกข้อมูลแล้วกด Register แล้วไปกด activate ใน email
ไปตรวจใน Spam box ก็จะพบอีเมลจากผู้ให้บริการ
หลัง activate ระบบจะสร้าง user เพื่อเข้า control panel, mysql, ftp
ใน Control Panel คลิ๊ก MySQL Database แล้วสร้าง Database
เค้าระบุ Hostname จะใช้ localhost ไม่ได้ และมี phpmyadmin ให้ใช้
ได้ข้อมูลเข้าไปปรับแฟ้ม .php
กลับมาเลือก Online File Manager แล้วเข้า htdocs
กดปุ่ม upload, choose file แล้วคลิ๊กที่เครื่องหมายถูก เพื่อ submit
ผลการทดสอบ Sample code ผ่านด้วยดี

7) https://www.awardspace.com/free-hosting/
เข้าไปก็กรอก e-mail และ password แล้วกด Join Awardspace
แล้วไป click link to confirmation ใน email
จากนั้นเข้า Dashboard มีทุกอย่างที่ต้องการ
คลิ๊ก Database Manager
กรอก Database name และ password แล้วกด Create database
ส่วน DB user name เค้าให้เป็นชื่อเดียวกกับ Database name
แล้วให้ Host name มาด้วย ต้องใช้ของเค้า
กลับไปที่ Dashboard ครั้งนี้คลิก Domain Manager
คลิ๊ก Create a Free Subdomain พิมพ์ thaiabc หน้า atwebpages.com
แล้วกด Create พอสร้างเสร็จก็กด Open Website
http://thaiabc.atwebpages.com/
กลับไปที่ Dashboard คลิ๊ก File Manager
ก่อนหน้านี้เข้าไปแล้วว่าง ตอนนี้เข้าไปพบ Folder : thaiabc.atwebpages.com
ไป double click เพื่อเข้าไป
กด Upload เลือกแฟ้ม .php แล้วกด Upload เป็นอันเรียบร้อย
ผลการทดสอบ Sample code ผ่านด้วยดี

8) http://www.freehostingeu.com/web-hosting-page.php
ใน column Free plan กด Sign up
พบ New signups are temporarily disabled
สรุปว่าปิดบริการสำหรับผู้ใช้บริการรายใหม่ชั่วคราว

9) http://www.uhostfull.com/free-hosting.php
มีปุ่ม Sign Up! อยู่ข้างล่าง คลิ๊กเลย
มีให้กรอกเพียบ นับได้ 13 ช่อง รวม captcha
แล้วก็เข้า email จะไปทำ Activation แต่ไม่พบอีเมล
ทำ Resend Activation Email ใน http://cpanel.uhostfull.com/profile
กดแล้วก็ยังไม่ได้รับอีเมล รอแล้วก็ยังไม่เห็นมาเลย

10) http://freehostingnoads.net/webhosting.php
มีปุ่ม Signup Now อยู่ข้างล่าง คลิ๊กเลย
แล้วคลิ๊กปุ่ม If you want free limited hosting, please click here…
ตอนกรอกข้อมูลหน้าตาเหมือน http://www.uhostfull.com
และปัญหาเหมือนกันเลยด้วย
คือเข้า email จะไปทำ Activation แต่ไม่พบอีเมล
ทำ Resend Activation Email
กดแล้วก็ยังไม่ได้รับอีเมล รอแล้วก็ยังไม่เห็นมาเลย

สรุปว่าผลการทดสอบสมัครใช้ host ฟรี ตามคำแนะนำ
ของ Desire Athow ใน techradar.com เรื่อง Best free hosting
ได้มาหลังทดสอบจำนวน 4 host ตามรายละเอียดด้านบน
มองใกล้ตัวหน่อยก็เห็น Smart phone ของผมเป็น android
จึงติดตั้ง App: Palapa web server แล้ว Start service
จากนั้นก็ไปคัดลอก code จาก
http://www.thaiall.com/perlphpasp/source.pl?9116
วางไปบน App: DroidEdit Free แล้ว save as .php
เข้าห้อง /sdcard/pws/www
แล้วเรียกผ่าน chrome ว่า http://127.0.0.1:8080/hello.php
สรุปว่า Palapa web server เป็น host ตัวที่ 12 ที่ทดสอบครับ

ขอจบการเล่าเรื่อง 12 host แต่เพียงเท่านี้

#windows ตอนที่ 1 ใช้ Web Platform Installer ติดตั้ง PHP + MySQL บน IIS ง่ายล่ะชีวิต

#windows ตอนที่ 1 การแสดงคำว่า Hello World ใน Windows
จากข้อมูลใน MySQL บน IIS

การติดตั้ง IIS 8.5 + Web Platform Installer 5.0 +
PHP5.6.31 + MySQL 5.1 + PHPMyAdmin 4.0.10.20

<introduction>
สวัสดีชาวโลก หรือ Hello World!” ซึ่งผมมีโจทย์ว่า “ต้องการแสดงข้อมูลที่เก็บไว้ใน Database บน Windows ผ่านบริการของ Web Server ต้องทำอย่างไร” ก็มีหลายทางเลือก และต้องใช้กันหลายโปรแกรมเข้ามาช่วยทำให้บริการเหล่านี้เป็นจริืงได้ การทดสอบของผมใช้ Remote Desktop และ VNC ในการเข้า Web Server ก็ได้ความช่วยเหลือจาก คุณเบนซ์ ช่วยดูเรื่องเครือข่าย เปิดให้ผมเข้าจากที่บ้านได้ แล้ว คุณเปรม ก็ช่วยทำให้มี IP จริง เชื่อมกับ Intranet IP ในที่ทำงาน ผ่านการ config ใน Firewall ขอขอบคุณฝ่ายไอทีทั้งสองท่าน น้าาาา

เดี๋ยวนี้ เทคโนโลยีพัฒนาไปเร็วมาก การจะติดตั้ง Web Server (Port 80) และ Database (Port 3306) ก็ไม่ยากที่จะทำแล้ว จะเข้าถึงบริการเหล่านี้ได้ง่าย เพียง click หรือ double click ไม่กี่ที สิ่งสำคัญคือ ผู้สนใจก็เพียงแต่หาอ่าน (read) สิ่งที่ Windows เค้ามีมาให้ (Services) ไม่มีในเครื่อง ก็ไปหา Download แล้วก็ไซร้ (Search) เข้าไปตามความสนใจ ลงลึกไปเรื่อย ๆ ถ้าสนใจซะอย่าง อะไรอะไร ก็ไม่ยาก เพราะอยู่ตรงหน้า หรือหา download ได้อยู่แล้ว

โปรแกรมบน Windows ที่ใช้ ประกอบด้วยดังนี้

  1. IIS 8.5 on Microsoft Windows
  2. Web Platform Installer 5.0
  3. PHP 5.6.31
  4. MySQL 5.1
  5. PHPMyAdmin 4.0.10.20 [4.7.3]
  6. Chrome Browser

</introduction>

<process>
มีขั้นตอนการติดตั้ง และเขียนโปรแกรม ดังนี้

  1. โปรแกรม Remote Desktop เป็นบริการที่มากับ Windows
    ทำให้เราเข้าไปควบคุมจากระยะไกล เป็นที่นิยมกว่าโปรแกรมอื่น (สำหรับผมนะ)
    เพราะโปรแกรมนี้เป็นของ Windows อยู่แล้ว ใช้งานง่าย ไม่ซับซ้อน

    00_remote_desktop.png
    
  2. โปรแกรม VNC เป็นบริการที่ คุณเบนซ์ แนะนำ
    ว่าใช้งานแทน Remote Desktop ทำให้เข้าเครื่องที่ทำงาน
    ขณะนั่งอยู่ที่บ้าน (Work at Home) ความสามารถคล้ายกัน แต่ตัวนี้มีรุ่นทดลอง 30 วัน

    00_vnc.png
    
  3. เราตรวจสอบข้อมูลได้ว่าในเครื่องคอมพิวเตอร์ของเรา
    ปัจจุบันใช้ OS : Windows รุ่นอะไร
    มี RAM เท่าไร ดูใน System เมื่อเข้าผ่าน Control Panel
    นับว่าสิ่งที่ผู้ใช้ Windows ทุกคนคุ้นเคย เพราะอะไรอะไร ก็ต้องเข้าแผงควบคุม

    00_win81_64.png
    
  4. การคลิ๊กที่ปุ่ม Windows หรือปุ่ม Start เดิม
    ถ้า Click ก็จะแสดง Metro UI (User Interface)
    ถ้า Right Click ก็จะแสดงรายการ ที่ต้องใช้บ่อย เริ่มจาก Program and Features

    01_start_by_click.png
    
  5. การเข้า Control Panel
    สามารถเข้าผ่าน Right click ที่ปุ่ม Windows หรือ Windows-X แล้วมองขึ้นไป
    หรือพิมพ์ Control Panel ในช่อง Run หลังกด Windows-R

    02_control_panel.png
    
  6. เครื่องมือบริหาร ก็จะมีอะไรให้บริหารมากมาย
    ผมทราบมาว่าในนี้ต้องมี IIS คือ Web Server ของ Windows
    แต่ไม่พบ ก็ไม่แปลก เพราะเค้าไม่ได้ติดตั้งมาให้แต่แรก
    จึงต้องไปหามาลงแล้ว มีแหล่งเก็บของ Windows ที่มี แต่ยังไม่ได้ลง

    03_administrative_tools.png
  7. ใน Control Panel จะมี Program and Features
    และด้านซ้ายจะพบ Turn Windows Features on or off
    ให้คลิ๊กเข้าไป เพื่อเปิด Feature IIS ให้ทำงาน

    04_program_and_features.png
  8. ไม่เห็นคำว่า IIS แต่เห็น Internet Information Services
    ก็คลิ๊ก Check เพื่อบอกว่าขอให้ติดตั้ง IIS ให้ด้วย
    ก็จะมีรายละเอียดโปรแกรมอีกมา ที่เราจะได้มากับ IIS หรือไม่ได้มาด้วย
    ถ้าไม่คลิ๊กบริการย่อย เค้าก็ติดตั้งเฉพาะ Web Server ซึ่งเป็นบริการที่ผมมองหา
    แต่บริการ FTP Server จะไม่มาด้วย อยากได้ต้องคลิ๊ก Check นะครับ
    เห็นใช่ไหมว่า FTP Server ยังไม่ถูกคลิ๊ก

    05_windows_feature_iis.png
  9. เมื่อติดตั้งโปรแกรม IIS เสร็จแล้ว
    เมื่อเข้า Administrative Tools อีกครั้ง
    จะพบกับ Internet Information Services (IIS) Manager

    06_administrative_tools_iis.png
  10. เมื่อเข้าไปคลิ๊กถึง Default Web Site
    จะพบว่าบริการถูก Start คือ พร้อมให้บริการ เป็น Web Server

    07_iis_start.png
  11. กลับไปที่ Desktop หา Web Browser
    แล้วเปิด http://localhost

    08_localhost.png
  12. ในเครื่องคอมพิวเตอร์ของเราน่าจะลง Web Browser ไว้หลายตัว
    ชื่อเรียกเครื่องก็มีหลายแบบ อาจเรียกว่า localhost
    เป็น local ip ก็ 127.0.0.1 หรือ ip จริงของเครื่องก็ได้ หรือชื่อ host ก็ได้อีก
    ลองเรียกว่า http://127.0.0.1 ก็ได้ครับ

    09_127001.png
  13. ถ้าใช้ Winddows อยู่แล้ว Microsoft มีโปรแกรม Web Platform Installer
    แต่เตรียมโปรแกรมไว้มากทีเดียว ทำให้เราสั่งติดตั้งโปรแกรมในรายการ
    แล้วใช้งานได้ทันที ไม่ต้องไปทำ configuration เอง แบบ manual
    เริ่มต้นก็ไปดาวน์โหลดมาติดตั้งในเครื่องของเราก่อน ฟรีครับ

    10_web_platform_installer.png
  14. ขณะดาวน์โหลด หรือติดตั้งก็รอแป๊ปนึง
    โปรแกรมไม่ใหญ่มาก แต่จะไปช้าอีกครั้งตอนติดตั้ง
    โปรแกรมย่อยที่เราเลือกในภายหลัง

    11_install_web_platform_5.png
  15. มองหาคำว่า Products ด้านบน
    แล้วก็เลื่อนหาโปรแกรมที่เราสนใจ กรณีนี้ ผมสนใจภาษา PHP
    ซึ่งเป็น Server Sided Script ทำงานร่วมกับ IIS
    เมื่อเจอ PHP 5.6.31 ก็คลิ๊ก Add และ Install ด้านล่าง

    12_install_php5631.png
  16. แม้จะเลือก PHP มาตัวเดียว แต่ระบบตรวจสอบว่าต้องลงโปรแกรมใดเพิ่ม
    เค้าเรียก Prerequisites เหมือนตอนเรียนหนังสือ
    จะลงวิชา Project ของปี 4 ต้องลงวิชาของปี 1 ก่อน เป็น pre กันอยู่

    13_download_php5631.png
  17. จากนั้นก็รอ มี 2 progress bar คือ Download กับ Install
    โปรแกรมไม่ใหญ่ก็รอแป๊ปเดียว ขึ้นกับความเร็วเน็ตด้วย

    14_download_and_install_php5631.png
  18. พอลงโปรแกรมเสร็จแล้ว
    ก็จะมีรายงานว่าลงโปรแกรมอะไรไปแล้วบ้าง
    อย่างที่เห็นผมเลือก PHP 5.6.31 ตัวเดียว แต่ชวนเพื่อนมาเพียบเลย

    15_iis_php_finish.png
  19. โปรแกรม IIS มี Root Directory อยู่ที่ C:\Inetpub\wwwroot
    จะเขียนอะไรลงไป ก็เปิดให้เพื่อนมา Download หรือเข้าถึงได้
    แต่ Winddows 8 อาจกำหนด Permission  ว่า User ห้ามเขียน
    แล้วเราก็เป็น User หนึ่ง (บางกรณีเราก็เป็นเพียง User ของเครื่อง)
    ต้องเข้าไปแก้ Security ให้ User เป็นแบบ Full Control

    16_folder_permission.png
  20. เปิดโปรแกรม Notepad แล้วพิมพ์ hello world
    เพราะคิดจะทำให้ใคร ๆ เข้าเครื่องของเรา และเห็นข้อมูลที่เราสร้างไว้

    17_notepad.png
  21. สร้างแฟ้มชื่อ helloworld.php
    แล้วทดสอบเปิดด้วย Web Browser ในเครื่องของเรา
    ยังไม่ต้องไปลองที่ไหนไกลนัก

    18_local_hello.png
  22. ลองเรียกใช้ function phpinfo() เพื่อแสดงข้อมูลของเครื่อง
    ที่ฟังก์ชันนี้พอจะแสดงออกมาได้ ก็เยอะครับ
    แล้ว save as เป็น “phpinfo.php”

    19_notepad_phpinfo_helloworld.png
  23. หากเรียบร้อยแล้ว ผมอยากมี Database ไว้ใช้
    ก็เข้า Microsoft Web Platform Installer ผ่าน Metro UI
    ด้วยการคลิ๊กที่ปุ่ม Windows แล้วมองหาโปรแกรมนี้

    20_metro_screen.png
  24. พบ MySQL Windows 5.1 ผมก็เลือก Add และ Install
    โปรแกรมจะถามให้เราใส่รหัสผ่านของ root
    ก็พิมพ์เข้าไปครับ เช่น “Song:letitbe” หรือ อะไรที่ชอบ

    21_mysql_51.png
  25. หลังติดตั้งเสร็จก็จะรายงานว่า were successfully installed
    MySQL จะไม่ถูกติดตั้งลอย ๆ แต่เชื่อมกับ IIS และ PHP เรียกใช้กันได้เลย
    เพราะเป็นหน้าที่ของ Installer ที่ทำหน้าที่ config ให้อัตโนมัติ

    22_mysql_finish.png
  26. MySQL จะเปิดบริการผ่าน port 3306
    ลองใช้ DOS ตรวจการเปิด port ด้วย
    DOS>netstat -na | find “:3306”

    23_netstat_3306.png
  27. การบริหาร MySQL ผมมักใช้ phpmyadmin
    ใน xampp หรือ appserv เค้าก็ลงมาให้เลย แต่มองหาใน installer ไม่พบ
    จึงต้องหาดาวน์โหลดมาลงเองผ่านเว็บไซต์ของ phpmyadmin.net
    ได้ phpmyadmin รุ่น 4.7.3 ไม่ได้อ่านรายละเอียด
    เห็นเป็นรุ่นใหม่ ผมก็ Download มาเลย

    24_download_phpmyadmin.png
  28. ทำการ unzip ลองห้อง c:\inetpub\wwwroot
    แล้วคาดว่าจะเรียกใช้งานผ่าน Web Server ได้ทันที

    25_phpmyadmin_unzip.png
  29. ลองเปิดจากในเครื่อง มีหน้าจอเปิดรอรับ User และ Password
    ตามที่เคยตั้งว่า User = root Password = Song:letitbe หรือะไรที่ชอบ
    เปิดในเครื่องตนเอง เปิดจากเครื่องอื่นเรียก http://localhost ไม่ได้นะ

    26_phpmyadmin_login.png
  30. ชมพูเต็มจอเลย เข้า google ใช้เลข 574 ไปช่วยหาสาเหตุ ก็ไม่พบ
    มีความเป็นไปได้หลายเรื่องที่เกิดปัญหา
    สิ่งที่ฉุกขึ้นมาในความคิดคือ รุ่นของ phpmyadmin ไม่ลงรอยกับที่อยู่ในเครื่อง
    ไปอ่านเงื่อนไขก็จริงครับ phpmyadmin 4.7.3 ต้องใช้กับ mysql 5.5
    แต่ของผมใช้รุ่น MySQL 5.1 เอง

    27_phpmyadmin_473_error.png
  31. ไปสำหรวจในห้อง phpmyadmin พบแฟ้มเพียบเลย
    ในอดีตต้องมาแก้ไข config เดี๋ยวนี้ไม่ต้องล่ะครับ
    การแก้ไขก็ไม่ยากเลย ไปหา phpmyadmin รุ่นเก่า แล้วลบห้องนี้ทิ้ง

    28_phpmyadmin_folder.png
  32. หลังติดตั้ง phpmyadmin 4.0.10.20 แล้ว
    ผมเรียกจากเครื่องที่บ้านผ่าน IP Address เพราะเครื่องที่ลงโปรแกรมอยู่ที่ทำงาน
    ก็ใช้งานได้ปกติ ไม่ใช่เรียกผ่าน localhost หรือ 127.0.0.1 นะครับ

    29_phpmyadmin_40.png
  33. เริ่มงานจากการสร้างตาราง (Table) ในฐานข้อมูล Test
    มี 1 Field ชื่อว่า Test เป็นแบบ Integer

    30_phpmyadmin_create_table.png
  34. ใส่ข้อมูลที่เป็นตัวเลขเข้าไป 1 ระเบียน
    มีค่าเท่ากับ 5

    31_phpmyadmin_insert_5.png
  35. หากจะให้สมบูรณ์ต้องมีอย่างน้อย 2 Fields
    ตัวอย่างนี้สร้าง ID เป็น Auto_Increment และ Test เป็น Varchar ขนาด 50 ตัวอักษร

    32_phpmyadmin_varcha_2_fields.png
  36. เขียนโปรแกรมด้วยภาษา PHP เพื่อเรียกข้อมูลจากตาราง Test มาแสดง
    โปรแกรมนี้เขียนแบบง่าย ๆ ไม่ซับซ้อน
    ผมแชร์เป็น ต.ย.23 ใน http://www.thaiall.com/php

    33_select_in_wwwroot.png
  37. ผลลัพธ์กรณีเรียกข้อมูลที่มี 1 Field แต่มี 2 Records
    ผ่าน IP Address จริงจากที่บ้าน เข้าที่ทำงาน

    34_select_in_browser.png
  38. ทำการ Insert ข้อมูลเข้าตารางที่มี 2 ระเบียน
    เป็นคำว่า สวัสดีชาวโลก กับ Hello world!

    35_phpmyadmin_insert.png
  39. ข้อมูลเก็บแบบ UTF-8 สามารถอ่านได้ปกติ
    จากใน phpmyadmin ไม่พบปัญหาภาษาไทย
    เดี๋ยวนี้ใคร ๆ ก็ใช้ UTF-8

    36_phpmyadmin_browse.png
  40. เขียนโปรแกรม และเตรียม code ให้รับกับ UTF-8
    ทั้ง charset หรือ set names หรือ encoding ของ source code

    37_select_with_utf8.png
  41. ผลลัพธ์ก็ได้เห็นคำว่า สวัสดีชาวโลก สมดังมุ่งหมาย
    นี่ก็เป็นทั้งหมดที่อยากเล่าให้ฟังครับ .. ชาวโลก

    38_helloworld_in_browser.png

</process>

อัพเกรดจาก php5.2.6 เป็น 5.4.45 ของ appserv

appserv version
appserv version

1. วันนี้ (1 ก.พ.59) อ.ตุ้ย แจ้งว่าเครื่องบริการเครื่องหนึ่ง
ลง appserv 2.5.10 ที่มีรุ่นของ php เป็น 5.2.6
ซึ่งเป็น appserv รุ่นล่าสุด ที่มี php รุ่น 5
แต่รุ่นถัดมาคือ appserv 8.0 ใช้ php รุ่น 5.6.17 กับ 7.0.2
ซึ่งผมไม่เลือกการลง appserv รุ่นใหม่ เพราะ php ใหม่เกินไป

https://www.appservnetwork.com/en/

appserv 2.5.10 to 8.0.0
appserv 2.5.10 to 8.0.0

2. จุดเริ่มต้น เกิดจากคุณเปรม พบปัญหาในการพัฒนาระบบ
ต้องการส่งอีเมลเป็นภาษาจีนพร้อมภาษาไทย พบปัญหา
โดยฟังก์ชัน mail ส่งข้อมูลไปแล้ว
มีปัญหาไม่แสดงผลภาษาจีนร่วมกับภาษาไทยใน gmail คือ ภาษาจีนหายไปเฉย ๆ
วิธีหนึ่งที่แก้ไขได้คือแปลภาษาจีนที่เป็น unicode เป็น html entities
http://unicode.online-toolz.com/tools/unicode-html-entities-convertor.php

services.msc on WinXP
services.msc on WinXP

3. การแปลง unicode เป็น html entities ใช้ฟังก์ชันง่าย ๆ ได้เลย
โดยใช้ preg_replace_callback แล้วสร้างฟังก์ชันภายในฟังก์ชัน
แต่ php 5.2 ไม่ยอมรับฟังก์ชันแบบนี้
http://stackoverflow.com/questions/13280200/convert-unicode-to-html-entities-hex
คุณซันก็แนะนำ create_function ซึ่งก็น่าสนใจ
ที่ http://php.net/manual/en/function.create-function.php

sha1 คือ ค่า checksum ของแฟ้มที่ download มา
sha1 คือ ค่า checksum ของแฟ้มที่ download มา

4. วิธีที่ผมเลือกแก้ปัญหานี้ คือการ upgrade php จาก 5.2.6 เป็น 5.4.45
ซึ่งความต่างของรุ่น น่าจะกระทบ code ทั้งระบบน้อยกว่าการลง 5.6.17 กับ 7.0.2

– download php 5.4.45 ที่เป็น thread safe for windows มาแตก zip
– stop service ของ apache
– backup php ไว้ก่อน
– copy แฟ้มที่แตกไว้ เข้าห้อง php
– start service ของ apache
– ใช้ phpinfo() ตรวจรุ่นของ php
– ทดสอบ script ใน server ทั้งหมด
– ถ้ามีปัญหา ก็ copy php ที่ backup ไว้ กลับมาทับห้องเดิม
– กลับไปแก้ script ใน server ทั้งหมดให้ทำงานกับ php version ใหม่
– แล้วค่อยย้อนขั้นตอนข้างบนอีกครั้ง
* script ในเครื่องมี programer สัก 4 คนได้มังครับ

5. เลขรุ่นของ appserv ขยับจาก 2.5.10 มาเป็น 8.0.0 ข้ามเลขไปหลายตัว
คาดว่า เพราะเวลาในการพัฒนามีน้อย และมีงานประจำต้องทำ
ผมเองก็พัฒนา thaiabc.com ก็มีแนวคิดคล้าย appserv
นี่ก็หยุดอัพเวอร์ชั่น ไปหลายปีแล้วเหมือนกัน
http://www.thaiabc.com

https://www.facebook.com/media/set/?set=a.10153893646492272.1073741911.350024507271

การเข้า ssh บน google cloud เพื่อจัดการเครื่องบริการ

php-fpm
php-fpm

เมื่อ sign in เข้าไปแล้วก็จะพบกับคำว่า My console
ซึ่งจะต้องเลือกว่าเข้า Project ไหนที่เรากำลังจัดการอยู่ เมื่อเลือกแล้วก็จะมีตัวเลือก

Overview
Permissions
APIs & auth
Monitoring
Source Code
Deploy & Manage
[Compute]
Networking
Storage
Big Data

ในการเข้าจัดการเครื่องที่เลือกได้
เข้า Compute จะพบ App Engine, Compute Engine และ Container Engine
ซึ่งกรณีนี้เลือก Compute Engine ก็จะพบอีกมาก ผมเลือก VM instances ที่สร้างไว้
ก็จะเป็นการสร้าง instance ที่กำหนดว่าใช้ server แบบไหน ภาษาอะไร
งานที่ผมเข้าไปจัดการ Linux :Debian บน AMD64 + Nginx ก็จะใช้ SSH ที่อยู่หลัง instance ตัวที่สร้างขึ้น

$sudo su
#cd /opt/bitnami/nginx/conf/bitnami

พบว่า index ใน location ไม่ได้กำหนด index.php ก็ต้องเพิ่มเข้าไป
เพราะที่มีนั้น มีแต่ index.html กับ index.htm ไม่ใส่จะเป็นปัญหากับ wordpress

พบปัญหา 502 bad gateway แล้วก็พบคำแนะนำ
ใน http://serverfault.com/questions/457911/nginx-php-fpm-502-bad-gateway
จากการตรวจสอบ พบว่าไม่สอดคล้องกับสิ่งที่พบใน google cloud และไม่ใช่วิธีแก้ปัญหา
จึงไม่ได้ปรับแฟ้ม bitnami.conf ที่อยู่ใน google cloud

ตรวจสอบว่า php-fpm ทำงานอยู่ด้วย #ps -aux|grep php พบว่าทำงานอยู่
ตรวจสอบด้วย phpinfo() ก็บพว่า php-fpm ทำงานอยู่
ใน #tail /opt/bitnami/nginx/logs/access.log แต่ไม่ได้แสดงว่า php-fpm ทำงานด้วยรึเปล่า
พบว่า /opt/bitnami/nginx/conf/bitnami/phpfastcgi.conf มีการ config การทำงานของ php-fpm เรียบร้อย
และ bitnami.conf ก็ include แฟ้ม phpfastcgi.conf มาเรียบร้อย
สรุปว่า nginx เรียกใช้ phpfastcgi หรือ php-fpm แน่นอน
เพราะเวลามีปัญหากับ php ใน error.log จะมีข้อความ
เช่น FastCGI send in stderr: “PHP Message: WordPress database error Table ‘xxx’ does’t exist for query SELECT …

โปรแกรมทดสอบการจัดการข้อมูลใน MySQL บน Smartphone [3]

script to manage mysql
script to manage mysql

ได้สมาร์ทโฟน Android ราคา 2900 บาทมาเครื่องหนึ่ง
ติดตั้ง App: Palapa Web Server
ที่ให้บริการ Web Server, PHP และ MySQL ซึ่งซอฟท์แวร์นี้ใช้งานได้ฟรีไม่จำกัด
พบว่าเปิดบริการ Web server ได้ตามปกติ
แล้วติดตั้ง FTP server
กำหนดห้องเป็น /sdcard/pws/www/ ทำให้สามารถเขียนโปรแกรมบน PC
แล้วส่งไปประมวลผลที่ Smart Phone ในฐานะ Web Server
มีประเด็นเล่าสู่กันฟังดังนี้
1. Smart Phone จะมี IP ในวง Wifi เช่น 192.168.2.2 ดังนั้นจะใช้ 3G ไม่ได้
เพราะถ้าใช้ 3G เครื่องในวง Wifi ก็จะไม่รู้จัก SmartPhone ในฐานะ Web Server
2. ทดสอบเปิดดูว่าติดต่อได้หรือไม่โดยใช้ Browser ไปที่ http://127.0.0.1:8080
3. สามารถใช้ระบบบริหารจาก http://127.0.0.1:9999
4. ถ้า install Phpmyadmin จาก Smartphone
แล้วก็จะเปิด http://127.0.0.1:9999/phpmyadmin
5. download mysqlworking.php จาก
http://www.thaiall.com/perlphpasp/source.pl?key=9116
แล้วกำหนด user & password เป็น root กับ adminadmin
แล้ว save as กำหนด type เป็น UTF8 ด้วย Editplus3
6. ส่ง mysqlworking.php เข้าห้อง /sdcard/pws/www/
แล้วเปิด http://127.0.0.1:8080/mysqlworking.php

phpmyadmin บน Palapa
phpmyadmin บน Palapa

สำหรับบทเรียนเรื่อง FTP Server บน Smart Phone
อยู่ที่ http://www.thaiall.com/learn/useftp.htm

web admin on palapa
web admin on palapa

Palapa Web Server
http://alfanla.com/palapa-web-server/
แพคเกจประกอบด้วย
1. Lighttpd 1.4.35
2. PHP 5.5.15
3. MySQL 5.1.69
4. MSMTP 1.4.32
5. Web Admin 2.1.0

ข้อมูลอื่น ๆ ที่จำเป็นต้องทราบ
Default Document Root (htdocs) คือ Path : /sdcard/pws/www/
Default URL คือ Address : http://127.0.0.1:8080
Web Admin Informations
Address : http://127.0.0.1:9999
Username : admin
Password : admin
MySQL Informations
Host : localhost (127.0.0.1)
Port : 3306
Username : root
Password : adminadmin
phpMyAdmin (ถ้าใช้ก็ต้องกดปุ่มติดตั้งเพิ่มเติม)
Address : http://127.0.0.1:9999/phpmyadmin
Username : root
Password : adminadmin

ทีแรกคิดว่าจะเรียบเรียงเรื่อง LAMP ไว้ที่เว็บไซต์เกี่ยวกับการพัฒนา Android APP
แต่ดูแล้ว น่าจะมีอะไรอีกมากในการใช้งาน Smart Phone จึงฝากไว้กับ Blog ก่อน
http://www.thaiall.com/android/

ระบบรับข้อมูลหนึ่ง ถูก แ+ฮ+ก ด้วย script

process of solution
process of solution

วันนี้ได้รับแจ้งว่าระบบเก่า ถูก post h-a-c-k_e-d
จึงเข้าไปแกะ script แบบค่อย ๆ ไล่ไปทีละแฟ้ม
เพราะเขียนไว้นาน และหลายคน จำอะไรไม่ได้เลย

1. ดู source ซึ่งเป็นผลลัพธ์ พบว่า
script ไม่ได้เสียหาย แต่มีการ post script เข้ามาเป็นข้อมูล

2. ในข้อมูลมี script จริง แสดงว่าไม่มีการ convert ข้อมูลก่อน insert

3. เข้าไปดูระบบรับข้อมูลพบว่าติด captcha แต่เป็น plain text แบบง่าย
แสดงว่า script ที่เข้ามาในระบบเป็นขั้นเทพ ถึงแกะ captcha ออกได้

4. เพิ่มการป้องกันใน form รับข้อมูล
โดยกำหนดเงื่อนไขว่า form ต้องถูกเรียกจาก script ที่กำหนด
ถ้าเรียกจากที่ไหน ๆ ก็จะไม่เปิดฟอร์ม

5. อันที่จริงควรเปลี่ยนข้อมูลด้วย stripslashes เข้าฐานข้อมูล
เพื่อล้าง script แต่นั่นเป็นการแก้ปลายเหตุ
จึงแก้ต้นเหตุ คือ ไม่ให้ข้อมูลเข้า จากขั้นตอนที่ 4
หรือเพิ่มการตรวจสอบก่อน insert ซึ่งมีอีกหลายวิธี