วันจันทร์ที่ 1 ตุลาคม พ.ศ. 2555
วันจันทร์ที่ 4 มิถุนายน พ.ศ. 2555
บทที่ 1 การติดตั้ง appserv
PHP Install for Windows All Version (With Apache) ในสมัยแรก ๆ ผมยังจำได้ตอนที่ผมหัดเขียนโปรแกรมใหม่ ๆ ซึ่งในตอนนั้นWeb Server ค่อนข้างจะมีน้อยและข้อจำกัด รวมทั้งการ Config ก็ยากครับ บางครั้ง Config เสร็จแล้วก็ไม่สามารถใช้งานได้ จะต้องทำการ Remove และ Install เข้าไปใหม่ ซึ่งในตอนนั้นผมยังใช้กับ PWS ของ Windows 98 อยู่และค่อนข้างจะมีปัญหาเมื่อทำการ Config ให้สามารถใช้ PHP แต่ช่วงหลัง ๆ ผมก็ได้หันเหความสนใจ กับ Apache ซึ่งในตอนนั้นกำลังมาแรง แซงทางโค้ง ก็ว่าได้ เพราะการ Config ก็ง่ายกว่าเยอะ และคนก็เริ่มใช้กันเยอะมาก หาข้อมูลและคำปรึกษาได้เยอะกว่า แต่ก็ยังติดปัญหาอยู่ที่ว่า จะต้องทำการติดตั้งApache,PHP และ MySQL แยกในส่วนของแต่ล่ะโปรแกรม แต่ในปัจจุบันเราไม่ต้องมาเสียเวลากับการ Config อีกแล้วครับ เพราะมีPackage ที่ชื่อว่า Appserv ได้ออกมาให้ใช้กันทั่วบ้าน ทั่วเมือง หรือทั่วโลกก็ว่าได้ครับ เพราะ Appserv ได้ทำการรวบรวมApache,PHP และ MySQL ไว้พร้อมแล้วครับ และยังไม่ต้อง Config อะไรเพิ่มเลยครับ
Appserv Package
ดาวน์โหลด Version ล่าสุดได้ที่ http://www.appservnetwork.com
เลือก Next
เลือก I Agree
เลือก Next
เลือก Next
เลือก Install
รอการติดตั้ง
เลือก Finish
รอการ Start ของ Apache
ทดสอบเปิด http://localhost ถ้าได้ผลดังรูปแสดงว่าการติดตั้งสมบูรณ์
ทดสอบ phpMyAdmin ด้วยการเปิด http://localhost/phpMyAdmin กรอก User/Password ที่ได้กำหนดค่าลงไป
ถ้าเปิด phpMyAdmin ขึ้นดังรูปแสดงว่าการติดตั้งสมบูรณ์และสามารถใช้ PHP & MySQL ได้แล้วครับ
สำหรับ Path Root ของ Server จะถูกจัดเก็บไว้ที่ C:\Appserv\www โดยการเขียน Script ทุกครั้งจะต้องทำการเก็บไว้ใน Path ดังกล่าว และการ Run โปรแกรมจะ Run ด้วย
ทดสอบการเขียน PHP
ในที่นี้ผมจะสร้าง Sub Folder ชื่อ myphp ไว้ที่ C:\AppServ\www\myphp
welcome.php สร้างไฟล์ชื่อ welcome และนามสกุลเป็น .php
Run โดยเปิด URL นี้ http://localhost/myphp/welcome.php
Screenshot
ขณะนี้พร้อมที่จะลุยกับ PHP กันเลยครับ
Appserv Package
- PHP
- Apache
- MySQL
- Apache
- MySQL
ดาวน์โหลด Version ล่าสุดได้ที่ http://www.appservnetwork.com
เลือก Next
เลือก I Agree
เลือก Next
เลือก Next
เลือก Install
รอการติดตั้ง
เลือก Finish
รอการ Start ของ Apache
ทดสอบเปิด http://localhost ถ้าได้ผลดังรูปแสดงว่าการติดตั้งสมบูรณ์
ทดสอบ phpMyAdmin ด้วยการเปิด http://localhost/phpMyAdmin กรอก User/Password ที่ได้กำหนดค่าลงไป
ถ้าเปิด phpMyAdmin ขึ้นดังรูปแสดงว่าการติดตั้งสมบูรณ์และสามารถใช้ PHP & MySQL ได้แล้วครับ
สำหรับ Path Root ของ Server จะถูกจัดเก็บไว้ที่ C:\Appserv\www โดยการเขียน Script ทุกครั้งจะต้องทำการเก็บไว้ใน Path ดังกล่าว และการ Run โปรแกรมจะ Run ด้วย
http://localhost/file-name.php
และกรณีมี Sub Folder ก็จะต้องระบุ Sub Folder ด้วยครับ
เช่น
http://localhost/sub-folder/file-name.php
และกรณีมี Sub Folder ก็จะต้องระบุ Sub Folder ด้วยครับ
เช่น
http://localhost/sub-folder/file-name.php
ทดสอบการเขียน PHP
ในที่นี้ผมจะสร้าง Sub Folder ชื่อ myphp ไว้ที่ C:\AppServ\www\myphp
welcome.php สร้างไฟล์ชื่อ welcome และนามสกุลเป็น .php
1.
<?
2.
echo
"Welcome to PHP"
;
3.
?>
Run โดยเปิด URL นี้ http://localhost/myphp/welcome.php
Screenshot
ขณะนี้พร้อมที่จะลุยกับ PHP กันเลยครับ
เว็บสอน php basic&advance
1. http://www.thaicreate.com/
2. http://www.rongrean.com/
3. http://www.bcoms.net/php/index.asp
4. http://www.mindphp.com/
5. http://www.webthaidd.com/php/
6. http://www.w3schools.com/
7. http://www.tizag.com/
8. http://www.webub.com/
9. http://www.iyouuu.com/
10. http://www.thainextstep.com/php/php_article.php
11. http://www.ban-goi.com/php-tutorial-begin.html
12. http://www.cmssociety.com/category/php
2. http://www.rongrean.com/
3. http://www.bcoms.net/php/index.asp
4. http://www.mindphp.com/
5. http://www.webthaidd.com/php/
6. http://www.w3schools.com/
7. http://www.tizag.com/
8. http://www.webub.com/
9. http://www.iyouuu.com/
10. http://www.thainextstep.com/php/php_article.php
11. http://www.ban-goi.com/php-tutorial-begin.html
12. http://www.cmssociety.com/category/php
วันศุกร์ที่ 1 มิถุนายน พ.ศ. 2555
Delete
ในบทเรียนนี้ จะแสดงการลบแถวข้อมูลในตาราง มี syntax ดังนี้ | |||||||||
| |||||||||
ตัวอย่างการแก้ไขข้อมูลในตาราง "Customers" ข้อมูลดั้งเดิม จะเป็นดังนี้
| |||||||||
เขียนสคริปต์ลบข้อมูล โดยจะลบข้อมูลของ Tony
| |||||||||
หลังจากลบข้อมูลแล้ว จะเป็นดังนี้
| |||||||||
Update
ในบทเรียนนี้ จะแสดงการแก้ไขข้อมูลในตาราง มี syntax ดังนี้ | |||||||||
| |||||||||
ตัวอย่างการแก้ไขข้อมูลในตาราง "Customers" ข้อมูลดั้งเดิม จะเป็นดังนี้
| |||||||||
เขียนสคริปต์แก้ไขข้อมูล โดยเปลี่ยนข้อมูลอายุของ Tony ให้เป็น 35
| |||||||||
หลังจากแก้ไขข้อมูลแล้ว จะเป็นดังนี้
| |||||||||
Order By
ในบทเรียนนี้ จะแสดงการเรียกข้อมูลมา โดยมีการเรียงลำดับตามคอลัมน์ที่เราต้องการ มี syntax ดังนี้ | ||||||||||
| ||||||||||
ตัวอย่างการเรียงลำดับข้อมูล จากตาราง "Customers" เรียงโดย Age
| ||||||||||
ผลลัพธ์ที่ได้จะแสดง ดังนี้
| ||||||||||
Ascending or Descending คุณสามารถเรียงลำดับได้มากกว่า 1 คอลัมน์ หรือ ถ้าต้องการเรียงจากน้อยไปหามาก หรือ จากมากไปหาน้อยก็ได้ การเรียงมากกว่า 1 คอลัมน์ การเรียงที่มีเงื่อนไขมากกว่า 1 คอลัมน์ ในคอลัมน์ที่ 2 จะถูกใช้ก็ต่อเมื่อ คอลัมน์แรกมีค่าเหมือนกัน
| ||||||||||
การเรียงจากน้อยไปหามาก และจากมากไปหาน้อย
| ||||||||||
การแสดงผลในรูปแบบตาราง
| ||||||||||
ผลลัพธ์ที่ได้จะแสดง ดังนี้
| ||||||||||
Where
ในบทเรียนนี้ จะแสดงการเรียกข้อมูลที่ต้องการเท่านั้นจากฐานข้อมูล โดยใช้เงื่อนไข WHERE เพิ่มต่อเข้าไปในคำสั่ง SELECT ซึ่งมี syntax ดังนี้ | ||||||||||||||||||||
| ||||||||||||||||||||
ด้วยเงื่อนไข WHERE โอเปอร์เรเตอร์ตามนี้จะถูกใช้
| ||||||||||||||||||||
ตัวอย่างการเลือกแถวทั้งหมดของตาราง "Customers" ที่มีเงื่อนไขว่า FirstName เป็น Tony เราใช้เครื่องหมาย * แทนที่ชื่อคอลัมน์ทั้งหมด เพราะว่าเราต้องการตรวจสอบข้อมูลในตารางทั้งหมด
| ||||||||||||||||||||
ผลลัพธ์ที่ได้จะแสดง ดังนี้
| ||||||||||||||||||||
การเลือกข้อมูลด้วยเงื่อนไข LIKE คำสั่ง "LIKE" มีประโยชน์มากกว่าเครื่องหมายเท่ากับ "=" ถ้าคุณต้องการค้นหาคำที่มีรูปแบบตรงตามที่ต้องการเพียงบางส่วน คุณสามารถใช้เครื่อง "_" (underscore) แทนอักษรใดๆ เพียง 1 ตัว และ เครื่องหมายเปอร์เซ็นต์ "%" แทนอักษรใดๆ กี่ตัวก็ได้หรือไม่มีอักษรใดเลยก็ได้ ตามตัวอย่าง:
| ||||||||||||||||||||
ผลลัพธ์ที่ได้จะแสดง ดังนี้
| ||||||||||||||||||||
Select
ในบทเรียนนี้ จะทำการดึงข้อมูลจากตารางในฐานข้อมูลออกมาแสดง | |
การเลือกข้อมูลจากฐานข้อมูล การเลือกข้อมูลจากฐานข้อมูลใน MySQL มี syntax ดังนี้
| |
ตัวอย่างการเลือกข้อมูลที่เก็บอยู่ในตาราง "Customers" มาแสดง ในที่นี้เราจะใช้เครื่องหมายดอกจันทร์ * แทนที่ชื่อคอลัมน์ ในกรณีที่ต้องการเลือกคอลัมน์ทั้งหมด
| |
ผลลัพธ์ที่ได้จะแสดง ดังนี้
| |
เราจะใช้ฟังก์ชั่น mysql_query() ส่งคำสั่งไปเรียกข้อมูลมาเก็บไว้ที่ตัวแปร $result ก่อน แล้วใช้ฟังก์ชั่น mysql_fetch_array เรียกข้อมูลทีละแถว ในอะเรย์จากตัวแปร $result เราใช้วิธีวนลูป (while) เพื่อเรียกข้อมูลถัดไปเรื่อยๆ จนกระทั่งสิ้นสุด ในลูปจะแสดงข้อมูลแต่ละแถวออกมา โดยใช้ตัวแปร $row['FirstName'] และ $row['LastName'] | |
Insert
ในบทเรียนนี้ จะนำเสนอเกี่ยวกับการป้อนข้อมูลเข้าไปในตารางที่สร้างขึ้น แสดงการป้อนข้อมูลผ่านฟอร์มอีกด้วย และเหมือนกับการสร้างตาราง จะใช้ฟังก์ชั่น mysql_query() เพื่อส่งคำสั่งไปยังเซิร์ปเวอร์ | |
การป้อนข้อมูลเข้าฐานข้อมูล ในบทนี้เป็นการสร้างตารางชื่อว่า "Customers" ฐานข้อมูลชื่อเดียวกันกับบทที่แล้ว แต่มีเพียง 3 คอลัมน์ FirstName, LastName, Age การป้อนข้อมูลเข้าฐานข้อมูลใน MySQL มี syntax ดังนี้
| |
ในกรณีที่ต้องการป้อนข้อมูลไม่ครบทุกฟิลด์ คุณสามารถระบุคอลัมน์ที่ต้องการป้อนข้อมูลเท่านั้นเพิ่มไปด้วยได้ตาม syntax ข้างล่างนี้
| |
ตอนนี้ ก็ต้องใช้ฟังก์ชั่น mysql_query() ควบคู่กัน มาดูตัวอย่างกัน
| |
การป้อนข้อมูลผ่านฟอร์มเข้าฐานข้อมูล เริ่มแรก ต้องสร้างแบบฟอร์มก่อน
| |
แล้วสร้างไฟล์ชื่อว่า "insert_data.php"
| |
จากตัวอย่างข้างบน แบบฟอร์มจะส่งข้อมูลไปที่ไฟล์ "insert_data.php" ด้วยวิธี POST เมื่อคลิ้ก submit ไฟล์ "insert_data.php" จะติดต่อฐานข้อมูล แล้วรับค่าตัวแปร POST จากฟอร์ม แล้วใช้ฟังก์ชั่น mysql_query() เพื่อใช้คำสั่งป้อนข้อมูลเข้าฐานข้อมูล | |
Create
ในบทเรียนนี้ จะนำเสนอเกี่ยวกับการสร้างฐานข้อมูล และตาราง โดยฟังก์ชั่นที่สำคัญ คือ mysql_query() | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
การสร้างฐานข้อมูล การสร้างฐานข้อมูลใน MySQL มี syntax ดังนี้
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
คุณต้องใช้ MySQL syntax ข้างบนนี้ ควบคู่ไปกับฟังก์ชั่น mysql_query() มาดูตัวอย่างกัน ในที่นี้จะสร้างฐานข้อมูลชื่อว่า "my_data"
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
การสร้างตาราง การสร้างตารางใน MySQL มี syntax ดังนี้
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ตัวอย่างการสร้างตารางข้างล่างนี้จะแสดงการสร้างตารางชื่อว่า "Customers" ที่มี 3 คอลัมน์ คือ FirstName, LastName และ Age
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
จากตัวอย่าง ต้องทำการเลือกฐานข้อมูลซะก่อนในบรรทัดที่หนึ่ง แล้วจึงจะทำการสร้างตารางได้ ถ้า data type เป็น varchar จะต้องระบุค่าพารามิเตอร์ลงไปด้วย ในที่นี้ คือ 15 ตัวอักษร | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ตารางของชนิดข้อมูล (Data Type) ชนิดของข้อมูลอาจแบ่งได้ 3 กลุ่มหลักๆ คือ ตัวเลข, วันที่และเวลา และ ข้อความ (String) สำหรับค่าตัวเลขสามารถกำหนดความยาวของตัวเลขและจำนวนหลังจุดทศนิยมได้ ขึ้นอยู่กับเป็นข้อมูลชนิดใด ในที่นี้ค่าความยาวของตัวเลขและข้อความ รวมจุดทศนิยมจะแทนด้วยตัว M และจำนวนตัวเลขหลังจุดทศนิยมจะแทนด้วยตัว D ข้อมูลชนิดตัวเลข (Numeric)
ข้อมูลชนิดวันที่และเวลา (Date and Time)
ข้อมูลชนิดสตริง (String)
ข้อมูลชนิด SET และ ENUM
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Primary Key และ Auto increment แต่ละตารางควรจะมีค่าที่ไม่ซ้ำกันในแต่ละเรคอร์ด เพื่อแยกข้อมูลได้ชัดเจน ฟิลด์แบบนี้เรียกว่า primary key ส่วนใหญ่จะเป็นฟิลด์ที่ระบุค่า ID และมักจะใช้ AUTO_INCREMENT เพื่อให้ตัวเลขรันเรียงไปเรื่อยๆ ทีละหนึ่ง เพื่อไม่ให้ฟิลด์นั้นไม่ซ้ำกันเลย และเพื่อไม่ให้เป็นค่าว่าง ต้องเพิ่ม NOT NULL ลงไปด้วย ตัวอย่างข้างล่างนี้จะเพิ่มฟิลด์ id เป็น primary key ซึ่งจะไม่มีค่าซ้ำกันได้เลย
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Connect
การติดต่อฐานข้อมูล MySQL ก่อนจะเข้าถึงฐานข้อมูล MySQL คุณต้องทำการติดต่อฐานข้อมูลซะก่อน ด้วยฟังก์ชั่น mysql_connect() ซึ่งมี syntax ดังนี้
| |||||||
ยังมีอีกฟังก์ชั่นหนึ่งในการเชื่อมต่อฐานข้อมูล คือ mysql_pconnect() ซึ่งจะต่างจากอันแรก ตรงที่การเชื่อมต่อนี้ จะไม่ปิดการเชื่อมต่อลง เมื่อใช้งานสคริปต์เสร็จแล้วในหน้านั้นๆ โดยยังสามารถนำไปใช้ได้ต่อเมื่อเปิดหน้าเว็บเพ็จอื่นขึ้นมาได้อีก ข้อดีของการเชื่อมต่อแบบนี้ คือ จะเร็วขึ้นมาอีกนิดหน่อย เพราะไม่ต้องไปเปิดการเชื่อมต่ออีก แต่ข้อเสียก็มี คือ จะทำให้เครื่องรันหนักขึ้น ถ้าหากมีการใช้มาก เพื่อให้ใช้ฟังก์ชั่นนี้ได้ ต้องแก้ไขไฟล์ php.ini ก่อนดังนี้ (-1 หมายถึง ไม่จำกัด)
| |||||||
ตัวอย่าง ตัวอย่างนี้ จะทำการเชื่อมต่อฐานข้อมูล ถ้าเชื่อมต่อไม่ได้ จะใช้คำสั่ง die เพื่อแสดงข้อความที่กำหนดไว้แทน และจะแสดงข้อความ error ว่าเกิดจากอะไรอีกด้วย เนื่องจากมีคำสั่ง mysql_error() ต่อท้าย
| |||||||
การปิดการเชื่อมต่อฐานข้อมูล การเชื่อมต่อฐานข้อมูลจะปิดเมื่อสคริปต์รันจบ แต่จะปิดก่อนได้ ด้วยฟังก์ชั่น mysql_close() | |||||||
Introduction
MySQL เป็นโปรแกรมฐานข้อมูล Open Source ที่นิยมมากที่สุด ในฐานข้อมูล จะแบ่งเป็นหลายกลุ่ม แต่ละกลุ่มจะเรียกว่าตาราง และในตารางจะมี แถว (rows), คอลัมน์ (columns) และเซลล์ (cells) เมื่อต้องการนำระบบจัดการฐานข้อมูลมาใช้ในเว็บไซท์ที่เขียนขึ้นด้วย PHP ระบบฐานข้อมูลที่มักจะถูกเลือกใช้เป็นระดับต้นๆ คือ MySQL ด้วยคุณสมบัติเด่นหลายประการ เช่น ฟรี ไม่ต้องเสียค่าลิขสิทธิ์ มีเสถียรภาพสูง ใช้ได้กับหลายระบบปฎิบัติการ เปิดเผยซอร์สโค้ดอีกตะหาก ในบทเรียนของเราจะสอนการใช้หลักๆ เท่านั้น ท่านควรหาหนังสือเกี่ยวกับคำสั่ง SQL มาศึกษาเพิ่มเติมอีก | ||||||||||||||||
ตารางฐานข้อมูล (Database Tables) ในหนึ่งฐานข้อมูลอาจจะมีหนึ่ง หรือมากกว่าหนึ่งตารางก็ได้ แต่ละตารางจะมีข้อมูลอยู่ ข้อมูล 1 เรคอร์ด ก็คือ 1 แถว (rows) ข้างล่างนี้เป็นตัวอย่างของตารางชื่อว่า "Customers" ซึ่งบรรจุ 3 เรคอร์ด กับ 4 คอลัมน์
| ||||||||||||||||
คิวรี่ (Queries) คิวรี่ คือการสอบถาม หรือสืบค้นข้อมูลในระบบการจัดการฐานข้อมูลขึ้นมาแสดง เช่น แสดงเรคอร์ดเฉพาะนามสกุลเท่านั้น การสืบค้นข้อมูลต้องสืบค้นด้วยประโยคดังนี้
ผลที่ได้รับจะแสดงแบบนี้
| ||||||||||||||||
Secure Mail
การอัดส่งอีเมล์ (Email Injections) มาดูที่โค้ดส่งเมล์จากบทก่อน:
| |
ปัญหาจากโค้ดข้างบนคือ ผู้ใช้ที่ไม่มีสิทธิ์สามารถใส่ชื่ออีเมล์ไปไว้ที่ส่วนของ headers ผ่านแบบฟอร์มนี้ได้ จะเกิดอะไรขึ้น ถ้าผู้ใช้ใส่ข้อมูลรายชื่ออีเมล์เข้าไปในฟอร์ม
| |
เมื่อผู้ใช้ใส่ข้อมูลเหล่านี้ลงไปแล้วคลิ้ก submit ล่ะ อีเมล์จะถูกส่งไปตามอีเมล์เหล่านี้ทั้งหมด | |
การหยุดอัดส่งอีเมล์ ทางที่ดีที่สุดในการหยุดอัดส่งอีเมล์ คือ พิสูจน์ค่าที่ส่งมาจากฟอร์ม โค้ดข้างล่างนี้ เหมือนกับโค้ดก่อน แต่จะเพิ่มส่วนที่พิสูจน์ค่าที่ส่งมาจากฟอร์ม ในฟิลด์อีเมล์
|
คุณสามารถส่งเมล์โดยตรง ผ่านสคริปต์ PHP ได้เลย ด้วยฟังก์ชั่นข้างล่างนี้
| |||||||||
การส่งอีเมล์แบบง่ายๆ วิธีการส่งเมล์ที่ง่ายที่สุด คือส่งแบบ text ธรรมดา ดูตัวอย่างข้างล่างนี้
| |||||||||
ฟอร์มเมล์ มาสร้างแบบฟอร์มส่งเมล์กัน โดยใช้ฟอร์ม html ทั่วไปคู่กับ PHP ตัวอย่างนี้จะสร้างแบบฟอร์มส่งค่าที่สำคัญไปเพื่อส่งเมล์ที่ไฟล์เดียวกัน ถ้ามีค่าจากฟอร์มส่งมา สคริปต์จะเช็คก่อนว่ามีค่าอีเมล์หรือไม่ ถ้ามี สคริปต์จะทำการส่งเมล์ให้ทันที แต่ถ้าไม่มีจะแสดงหน้าแบบฟอร์มแทน
| |||||||||
TIP: ป้องกันความผิดพลาด เพื่อไม่ให้โชว์ข้อความ error ให้ใส่เครื่องหมาย "@" ไว้ที่หน้าบรรทัดนั้นๆ | |||||||||
Sessions
ตัวแปร sessions ตัวแปร sessions ถูกใช้สำหรับเก็บข้อมูลของหนึ่งผู้ใช้ และจะคงอยู่ทุกหน้าเว็ปเพจที่เราใช้ session มันเหมือนกับคุณใช้ application ตัวหนึ่งอยู่คุณเปิด แก้ไข และปิด แต่เพราะว่าเว็ปเซิร์ปเวอร์ในอินเตอร์เน็ตไม่เหมือนกับคอมพิวเตอร์ที่จะรู้ว่าคุณกำลังทำอะไรอยู่ ดังนั้นคุณจึงต้องสร้างตัวแปร sessions ขึ้นมาแก้ไขปัญหานี้ อย่างไรก็ตาม ข้อมูลในตัวแปร sessions มีระยะเวลาชั่วคราวเท่านั้น และจะถูกลบทิ้งหลังจากเราออกจากเว็ปไซต์ ถ้าคุณต้องการเก็บข้อมูลเพื่อใช้ต่อไป คุณอาจต้องเก็บในฐานข้อมูล เช่น mysql Sessions จะทำงานโดยการสร้าง unique id (UID) สำหรับแต่ละผู้ใช้ และเก็บข้อมูลไว้ใน UID นี้ | |
การเริ่มใช้ sessions ก่อนที่คุณจะใช้ตัวแปร sessions ได้นั้น คุณต้องใส่ฟังก์ชั่น session_start() ไว้ก่อนแท็ก HTML
| |
การเก็บค่าตัวแปร sessions คุณสามารถเก็บและเรียกข้อมูลของตัวแปร sessions มาใช้ได้ดังตัวอย่าง:
| |
ผลลัพธ์ที่ได้:
| |
มาดูตัวอย่างกันอีกแบบ เราจะสร้าง counter เรียกจำนวนหน้าของผู้ใช้นั้น ฟังก์ชั่น isset() จะตรวจสอบว่าตัวแปร views มีการถูกเซ็ทแล้วหรือยัง ถ้าถูกเซ็ทแล้วจะทำการเพิ่ม counter ขึ้นมาหนึ่ง แต่ถ้าตัวแปรยังไม่คงอยู่ก็จะเซ็ทใหม่และตั้งค่าไว้ที่ 1
| |
การทำลายตัวแปร sessions ถ้าคุณอยากทำลายข้อมูลตัวแปร sessions คุณอาจจะใช้ฟังก์ชั่น unset() หรือ session_destroy() ก็ได้ ฟังก์ชั่น unset() ถูกใช้ลบตัวแปร sessions บางตัวเท่านั้น
| |
ถ้าคุณต้องการทำลายตัวแปร sessions ทั้งหมดทุกตัวไม่เหลือเลยให้ใช้ฟังก์ชั่น session_destroy() ข้อมูลทั้งหมดจะสูญหายทันที
| |
Cookies
คุ๊กกี้ (cookie) คืออะไร ? cookie คือ ข้อมูลขนาดเล็กที่สคริปต์สามารถนำมาเก็บไว้บนเครื่องผู้ใช้ฝั่งไคลเอ็นต์ได้ cookie มีประโยชน์มาก โดยเมื่อผู้ใช้กลับมาใช้งานที่เว็ปเพจหน้านั้นอีกครั้ง จะสามารถดึงข้อมูลบนเครื่องผู้ใช้มาใช้งานได้ คุณสามารถสร้าง cookie ได้ด้วยฟังก์ชั่น setcookie() จำไว้ด้วยว่า ฟังก์ชั่นนี้ต้องใช้ก่อนแท็กเปิด <HTML> มาดูรูปแบบกัน | ||||||||||
| ||||||||||
| ||||||||||
มาดูตัวอย่างกัน ในที่นี้ ชื่อ cookie คือ ck มีค่าคือ "hello" มีอายุใช้งาน 1 ชั่วโมง หรือ 3600 วินาที
| ||||||||||
การเรียก cookie มาใช้งาน เมื่อ cookie ถูกเซ็ทแล้ว คุณสามารถเรียก cookie มาใช้งานได้ เหมือนเป็นตัวแปร มาดูตัวอย่างกัน Tip: ใช้ฟังก์ชั่น isset() ตรวจสอบว่า cookie มีการเซ็ทแล้วหรือยัง | ||||||||||
| ||||||||||
การลบ cookie เมื่อไรที่คุณจะทำการลบ cookies คุณต้องแน่ใจก่อนว่าเวลาหมดอายุต้องน้อยกว่าเวลาที่เซ็ทใหม่
| ||||||||||
File Upload
การสร้างแบบฟอร์มส่งไฟล์ เราจะสร้างแบบฟอร์ม HTML ง่ายๆ ตามนี้: | ||||||||||
| ||||||||||
จากแบบฟอร์ม HTML ข้างบนนี้อธิบายได้ว่า:
| ||||||||||
Note: การปล่อยให้ใครก็ตามสามารถอัพโหลดไฟล์ได้เป็นความเสี่ยงในด้านความปลอดภัยอย่างมาก ดังนั้นควรอนุญาติให้คนที่ไว้ใจได้เท่านั้นทำการอัพโหลดไฟล์ | ||||||||||
การสร้างสคริปต์อัพโหลด ไฟล์ชื่อ upload_file.php เขียนสคริปต์เพื่ออัพโหลดไฟล์ตามนี้: | ||||||||||
| ||||||||||
ใช้ $_FILES array แยกแยะค่าพารามิเตอร์ต่างๆ ของไฟล์ ดังนี้:
| ||||||||||
นี่เป็นแค่การแสดงข้อมูลไฟล์ที่อัพโหลดเท่านั้น เพื่อเพิ่มความปลอดภัยแก่เซิร์ปเวอร์ คุณต้องเพิ่มเงื่อนไขเข้าไปอีก | ||||||||||
ข้อจำกัดในการอัพโหลด ในสคริปต์นี้ เราจะจำกัดผู้ใช้ให้อัพโหลดได้เฉพาะไฟล์รูปภาพ .gif กับ .jpeg เท่านั้น และขนาดไฟล์ต้องไม่เกิน 20 kb ด้วย:
| ||||||||||
การเซฟไฟล์ จากสคริปต์ข้างบน ไฟล์ได้ถูกส่งไปเก็บไว้ที่โฟลเดอร์ชั่วคราวบนเซิร์ปเวอร์แล้ว แต่ไฟล์ชั่วคราวนั้นจะถูกลบทิ้งหลังจากสคริปต์สิ้นสุด ดังนั้นเราต้องก็อปปี้ไฟล์ชั่วคราวนั้นไปเก็บไว้ที่เราต้องการ
| ||||||||||
สคริปต์ข้างบนจะตรวจสอบว่ามีไฟล์ชื่อนี้อยู่แล้วหรือไม่ ด้วยฟังก์ชั่น file_exists() ถ้าไฟล์ชื่อนี้ไม่มีอยู่ก็จะก็อปปี้ไฟล์ ไปไว้โฟลเดอร์ที่ระบุในที่นี้คือโฟลเดอร์ชื่อ "Upload/" ด้วยฟังก์ชั่น move_uploaded_file() คุณสามารถตั้งชื่อไฟล์ได้เอง โดยการเปลี่ยน "upload/" , $_FILES["file"]["name"] ในฟังก์ชั่น move_uploaded_file() ไปเป็น "upload/ชื่อไฟล์พร้อมนามสกุล" |
File
บทเรียนนี้จะอธิบายคร่าวๆ เกี่ยวกับการใช้ฟังก์ชั่นหลักๆ ของไฟล์เท่านั้น | ||||||||||||||||||
การเปิดไฟล์ ในการอ่านข้อมูลจากไฟล์ หรือบันทึกข้อมูลลงไฟล์ ต้องเริ่มจากการเปิดไฟล์ขึ้นมาก่อน โดยใช้ฟังก์ชั่น fopen() ฟังก์ชั่นนี้บรรจุพารามิเตอร์ 2 ตัว ตัวแรก คือ ชื่อไฟล์ ส่วนตัวที่สอง คือ โหมดที่ใช้ในการเปิดไฟล์ | ||||||||||||||||||
| ||||||||||||||||||
ไฟล์สามารถเปิดได้หลายโหมด ดังนี้
| ||||||||||||||||||
ถ้าฟังก์ชั่น fopen() ไม่สามารถเปิดไฟล์ที่ต้องการขึ้นมากได้ มันจะให้ค่ากลับมาเป็น 0 หรือ false ดูตัวอย่างเพื่อป้องกันการเกิดข้อผิดพลาด | ||||||||||||||||||
| ||||||||||||||||||
การปิดไฟล์ | ||||||||||||||||||
การปิดไฟล์จะใช้ฟังก์ชั้น fclose() จะมีพารามิเตอร์เดียว คือ ชื่อไฟล์
| ||||||||||||||||||
การอ่านไฟล์ | ||||||||||||||||||
หลังจากเปิดไฟล์ขึ้นมาแล้ว เรามักจะใช้ฟังก์ชั่น feof() เพื่อตรวจสอบข้อมูลในไฟล์ที่จะอ่านว่าหมดแล้วหรือยัง ฟังก์ชั่นนี้ไม่สามารถใช้ได้กับโหมด w, a และ x
| ||||||||||||||||||
การอ่านไฟล์ทีละตัวอักษร | ||||||||||||||||||
ฟังก์ชั่น fgetc() จะใช้อ่านทีละตัวอักษรจากไฟล์ หลังจากเรียกใช้ฟังก์ชั่นนี้ ตัวชี้จะเลื่อนตัวอักษรไปตัวถัดไป มาดูตัวอย่างกัน
| ||||||||||||||||||
Include File
Server Side Includes (SSI) เป็นการใช้ไฟล์แทรกไฟล์ เพื่อประหยัดเวลาในการเขียนสคริปต์ที่ซ้ำๆกัน คุณสามารถแทรกเนื้อหาของไฟล์เข้าไปในไฟล์อื่นๆ ก่อนที่เซิร์ปเวอร์จะประมวลผลด้วยฟังก์ชั่น include() หรือ require() ทั้ง 2 ฟังก์ชั่นนี้ใช้เหมือนกันทุกอย่าง ยกเว้นอย่างเดียว เมื่อมีความผิดพลาดเกิดขึ้น โดยฟังก์ชั่น include() จะแสดงคำเตือนแต่สคริปต์อื่นๆ ยังดำเนินการต่อไป ขณะที่ฟังก์ชั่น require() จะเกิด fatal error และจะหยุดสคริปต์ทำงานทันที ฟังก์ชั่นนี้ถูกใช้สร้างทั้งฟังก์ชั่น, headers, footers, อีลิเมนต์ ที่จะใช้เหมือนกันหลายๆ หน้า นี่จะช่วยผู้พัฒนาเว็ปไซต์ลดเวลาได้มาก ถ้าหน้าเว็ปมีเนื้อหาที่เหมือนกัน เมื่อคุณต้องการแก้ไขสคริปต์ คุณเพียงแค่แก้ไขเพียงไฟล์เดียวเท่านั้น ตัวอย่างข้างล่างนี้ สมมุติคุณมีไฟล์ส่วนของ header ชื่อว่า header.htm ที่จะรวมไฟล์ส่วนของ header ที่เหมือนกัน ที่ใช้กับทุกๆ หน้ากับไฟล์หน้าหลัก | |
| |
ในกรณีที่เกิดข้อผิดพลาดขึ้น เนื่องจากไม่มีไฟล์ที่รวมเข้าไป หรือพิมพ์ path ผิด จะแสดง error ดังนี้ สำหรับฟังก์ชั่น include()
| |
สำหรับฟังก์ชั่น require()
| |
ถ้าคุณไม่ต้องการให้สคริปต์รันต่อไปก็ใช้ฟังก์ชั่น require() แทนที่ฟังก์ชั่น include() เพราะว่าถ้ารันต่อไปอาจจะมี error เกิดขึ้นอีกตามมา | |
Date
ฟังก์ชั่น Date() ถูกใช้จัดรูปแบบเวลา หรือวันที่ จากค่า Timestamp ซึ่มี syntax ดังนี้ | ||||||
| ||||||
รูปแบบของ Date() ค่าแรกของฟังก์ชั่น date() มีรูปแบบต่างๆ มากมาย เราจะแสดงให้ดูตัวอย่างบางตัว:
| ||||||
ค่าในรูปแบบต่างๆ สามารถดูได้จาก php date function ส่วนตัวอักขระ เช่น "/" , "." , "-" สามารถจะเพิ่มเข้าไประหว่างตัวอักษรของรูปแบบเวลาได้ | ||||||
| ||||||
ค่าที่ได้จะเป็น
| ||||||
การสร้าง timestamp การสร้าง timestamp เป็นเวลาปัจจุบันจะใช้ฟังก์ชั่น time() จะได้ค่าตัวเลข 10 หลักแบบนี้ 1338560231 ซึ่งถ้าเราไม่ใส่ค่า timestamp จะได้ค่าเดียวกันกับ time() ค่า timestamp เป็นค่าที่จะใส่หรือไม่ก็ได้ในฟังก์ชั่น date() ถ้าไม่ใส่จะเป็นเวลาปัจจุบัน แต่ถ้าเราต้องการระบุเวลาที่แน่นอนล่ะ จะต้องใช้ฟังก์ชั่น mktime() โดยมี syntax ดังนี้:
| ||||||
ตัวอย่างถ้าเราต้องการให้แสดงวันที่ อีก 2 วันข้างหน้าจะเขียนดังนี้
| ||||||
ค่าที่ได้จะเป็น
| ||||||
วันพุธที่ 30 พฤษภาคม พ.ศ. 2555
PHP $_POST
ตัวแปร $_POST ตัวแปร $_POST เป็นตัวแปรที่รับและส่งโดย HTTP POST จะต่างจากแบบ HTTP GET ซึ่งผู้ใช้จะไม่สามารถเห็นค่าที่ส่งไปได้ และส่งค่าได้ไม่จำกัด มาดูตัวอย่างการเขียนแบบฟอร์มด้วยวิธี $_POST กัน | |
| |
ไฟล์ register.php ซึ่งเป็นหน้ารับค่าและแสดงผล จะต้องใช้ตัวแปร $_POST เพื่อแสดงค่าที่รับมาดังนี้
| |
การส่งด้วยวิธี $_POST นั้นสามารถส่งข้อมูลได้ไม่จำกัด จะเหมาะเมื่อใช้โพสข้อความที่ยาวๆ และผู้ใช้ไม่สามารถเห็นข้อมูลที่ส่ง จะเหมาะอย่างยิ่งที่จะส่งข้อมูลอันเป็นความลับ | |
PHP $_GET
ตัวแปร $_GET ตัวแปร $_GET เป็นตัวแปรที่รับและส่งโดย HTTP GET การส่งค่าด้วยวิธี $_GET จากฟอร์ม หน้าที่รับค่าจะแสดงค่าตัวแปรไว้ที่ URL ด้วย การใช้ HTTP GET ส่งมีข้อจำกัด ซึ่งค่าของตัวแปรห้ามส่งเกิน 100 ตัวอักขระ มาดูตัวอย่างการเขียนแบบฟอร์มด้วยวิธี $_GET กัน | |
| |
URL ของหน้าที่รับค่าคือไฟล์ "register.php" จะได้แบบนี้ | |
| |
ตัวแปรจะถูกคั่นไว้ด้วยเครื่องหมายคำถาม "?" และถ้ามีตัวแปรมากกว่าหนึ่งจะมีเครื่องหมาย "&" คั่นระหว่างตัวแปร | |
ไฟล์ register.php ซึ่งเป็นหน้ารับค่าและแสดงผล จะต้องใช้ตัวแปร $_GET เพื่อแสดงค่าที่รับมาดังนี้
| |
เมื่อคุณต้องการใช้การส่งแบบ $_GET ค่าต่างๆ จะถูกแสดงที่ URL ให้ผู้ใช้เห็น ดังนั้น คุณไม่ควรใช้ในกรณีที่มีการส่งข้อมูลอันเป็นความลับ เช่น รหัสผ่าน อย่างไรก็ตาม ค่าตัวแปรมีการแสดงที่ URL คุณสามารถทำลิงค์ไปที่หน้าที่ต้องการ แล้วระบุค่าต่างๆ ที่ URL ไปได้เลย โดยไม่ต้องใช้ฟอร์มในการส่ง นี่จะเป็นประโยชน์มากในบางกรณี | |
ตัวแปร $_REQUEST | |
ตัวแปร $_REQUEST คือตัวแปรที่สามารถนำมาใช้เรียกแทนตัวแปรได้ทั้ง $_GET, $_POST และ $_COOKIE เพื่อแสดงผล | |
ดูตัวอย่าง
| |
Forms
การใช้งานฟอร์มด้วย PHP การสร้างฟอร์มโดยทั่วไปจะใช้คำสั่ง HTML ในที่นี้ทางเราจะไม่อธิบายวิธีสร้างฟอร์ม แต่จะสอนการส่ง/รับค่า และการเรียกใช้งานด้วย PHP ดูที่ตัวอย่าง HTML ฟอร์ม ข้างล่างนี้ | |
| |
ตัวอย่าง HTML ฟอร์ม ข้างบนนี้มี 2 ช่องรับข้อความ (text field) และปุ่มส่งค่า (submit button) เมื่อผู้ใช้เติมค่าเข้าไป และกดปุ่ม submit แล้วไฟล์ register.php จะถูกเรียกขึ้นมา ไฟล์ "register.php" จะเป็นแบบข้างล่างนี้ | |
| |
ผลของตัวอย่างสคริปต์ข้างบนนี้อาจจะเป็น
| |
การส่งค่าด้วยวิธี POST เวลาเรียกใช้จะเป็นตัวแปร $_POST["name"] และ $_POST["age"] ในทางเดียวกัน ถ้าเป็นการส่งค่าด้วยวิธี GET จะเรียกใช้ตัวแปร $_GET แทนที่ $_POST | |
Functions
ฟังก์ชั่น คือ ชุดคำสั่งที่ใช้ในการทำงานอย่างใดอย่างหนึ่ง โดยการส่งค่าที่ฟังก์ชั่นต้องการไปให้ เพื่อให้ฟังก์ชั่นคืนค่าผลลัพธ์ หรืออาจไม่มีการคืนค่ากลับมาก็ได้ ค่าที่ส่งผ่านในฟังก์ชั่นประกอบด้วย 2 ค่า คือ อาร์กิวเมนต์ (argument) และพารามิเตอร์ (parameter)
| ||||
คำสั่ง while มีรูปแบบดังนี้ | ||||
| ||||
ตัวอย่างข้างล่างนี้ จะแสดงให้เห็นว่าโปรแกรมจะวนลูปไปเรื่อยๆ ตราปเท่าที่ตัวแปร i น้อยกว่าหรือเท่ากับ 5 และตัวแปร i จะเพิ่มขึ้นทีละ 1 ในแต่ละครั้งที่วนลูป
| ||||
คำสั่ง do...while มีรูปแบบดังนี้ | ||||
| ||||
ตัวอย่างข้างล่างนี้ ตัวแปร i จะเพิ่มขึ้นทีละ 1 ต่อครั้งการวนลูป และจะวนลูปทำงานตามคำสั่งไปตราปเท่าที่ตัวแปร i มีค่าน้อยกว่า 5
| ||||
คำสั่ง for มีรูปแบบดังนี้ | ||||
| ||||
Note: เหมาะที่จะใช้ เมื่อคุณทราบจำนวนครั้งที่ต้องการวนลูปที่แน่นอน คำสั่ง for มีอยู่ 3 พารามิเตอร์ ตัวแรก initialization เป็นตัวแปรตั้งต้น ตัวที่สอง condition เป็นเงื่อนไขที่เรากำหนด และตัวสุดท้าย increment เป็นการเพิ่มขึ้นของค่าตัวแปร เพื่อให้การวนลูปสมบูรณ์ โดยแต่ละพารามิเตอร์จะมี คอมม่า คั่น | ||||
ตัวอย่างข้างล่างนี้ จะแสดงคำว่า สวัสดี ชาวโลก! 5 ครั้ง
| ||||
คำสั่ง foreach มีรูปแบบดังนี้ | ||||
| ||||
การวนลูปของอะเรย์ ในการวนลูปแต่ละครั้งจะเป็นค่าของแต่ละอีลิเมนต์ในอะเรย์ที่ถูกกำหนดเป็น $value ไปเรื่อยๆ จนจบ ข้างล่างนี้เป็นตัวอย่างที่มี 3 อีลิเมนต์ ซึ่งจะทำการวนลูป 3 ครั้ง
| ||||
Looping
คำสั่ง Looping เป็นกลุ่มคำสั่งที่ใช้ในการวนรอบ โปรแกรมจะทำงานไปเรื่อยๆ จนกว่าเงื่อนไขที่กำหนดไว้จะเป็นเท็จ จึงหลุดออกจากการทำงาน เป็นการช่วยลดเวลาในการเขียนซ้ำๆ กันได้มาก ใน PHP มีคำสั่งวนลูปดังนี้ | ||||||||
| ||||||||
คำสั่ง while มีรูปแบบดังนี้ | ||||||||
| ||||||||
ตัวอย่างข้างล่างนี้ จะแสดงให้เห็นว่าโปรแกรมจะวนลูปไปเรื่อยๆ ตราปเท่าที่ตัวแปร i น้อยกว่าหรือเท่ากับ 5 และตัวแปร i จะเพิ่มขึ้นทีละ 1 ในแต่ละครั้งที่วนลูป
| ||||||||
คำสั่ง do...while มีรูปแบบดังนี้ | ||||||||
| ||||||||
ตัวอย่างข้างล่างนี้ ตัวแปร i จะเพิ่มขึ้นทีละ 1 ต่อครั้งการวนลูป และจะวนลูปทำงานตามคำสั่งไปตราปเท่าที่ตัวแปร i มีค่าน้อยกว่า 5
| ||||||||
คำสั่ง for มีรูปแบบดังนี้ | ||||||||
| ||||||||
Note: เหมาะที่จะใช้ เมื่อคุณทราบจำนวนครั้งที่ต้องการวนลูปที่แน่นอน คำสั่ง for มีอยู่ 3 พารามิเตอร์ ตัวแรก initialization เป็นตัวแปรตั้งต้น ตัวที่สอง condition เป็นเงื่อนไขที่เรากำหนด และตัวสุดท้าย increment เป็นการเพิ่มขึ้นของค่าตัวแปร เพื่อให้การวนลูปสมบูรณ์ โดยแต่ละพารามิเตอร์จะมี คอมม่า คั่น | ||||||||
ตัวอย่างข้างล่างนี้ จะแสดงคำว่า สวัสดี ชาวโลก! 5 ครั้ง
| ||||||||
คำสั่ง foreach มีรูปแบบดังนี้ | ||||||||
| ||||||||
การวนลูปของอะเรย์ ในการวนลูปแต่ละครั้งจะเป็นค่าของแต่ละอีลิเมนต์ในอะเรย์ที่ถูกกำหนดเป็น $value ไปเรื่อยๆ จนจบ ข้างล่างนี้เป็นตัวอย่างที่มี 3 อีลิเมนต์ ซึ่งจะทำการวนลูป 3 ครั้ง
| ||||||||
สมัครสมาชิก:
บทความ (Atom)