PHP: PHP Hypertext Preprocessor

Home

PHP Tutorial
Knowledge Developer Database Internet Resource
เริ่มต้นด้วย PHP
1. การใช้ PHP Tag
2. ตัวอย่างโปรแกรมประยุกต์ ร้านพูนพนา
3. การเพิ่มเนื้อหาแบบไดนามิคส์
4. การทำงานกับฟอร์ม
5. ฟังก์ชันที่มีประโยชน์
 
PHP เบื้องต้น
1. เริ่มต้นด้วย PHP
2. ภาษา PHP
3. การทำงานไฟล์ และไดเรคทอรี
4. การทำงานกับ Array
5. การควบคุมข้อความ และนิพจน์ปกติี่
6. คำสั่งใช้ใหม่และฟังก์ชัน
7. Object Oriented Programming
 
PHP
PHP เบื้องต้น
การสร้างโปรแกรมประยุกต์เว็บ
PHP ระดับสูง
 
Internet
PHP
SSI
HTML
AJAX
 
PHP เบื้องต้น > เริ่มต้นด้วย PHP

การทำงานกับฟอร์ม

ฟอร์มเป็นกลไกการส่งข้อมูลจาก browser กับแม่ข่าย

การส่งข้อมูล

คุณสมบัติ method มี 2 ค่าที่ควบคุมการส่งข้อมูลไปยังแม่ข่ายเมื่อส่งฟอร์ม คือ POST และ GET

เมธอด HTTP GET ส่งข้อมูลทั้งชุดด้วยการต่อท้าย URI ที่ระบุในคุณลักษณะ action บนฟอร์ม ข้อถูกจับต่อท้ายเครื่องหมายคำถาม (?) และแบ่งฟิลด์ด้วยตัวอักษร ampersand (&) ชื่อแต่ละฟิลด์แบ่งจากค่าด้วยเครื่องหมายเท่ากับ ตัวอักษรที่ทำให้ URI ไม่ทำงาน เช่น whitespace, เครื่องหมายคำถาม, เครื่องหมายเท่ากับ หรือตัวอักษรพิมพ์ไม่ได้ จะได้รับการเข้าเป็นเลขฐานสิบหก

ตัวการส่งใบสั่งซื้อจากลูกค้าชื่อ "สุวรรณ แสงแก้ว" หมายเลขสมาชิก NA1235 และรายการสั่งซื้อ

http://localhost/phptrain/chapter01/processorder.php?name=%CA%D8%C7%C3%C3%B3 +%E1%CA%A7%E1%A1%E9%C7+%2F+NA1235&shampooqty=6&conditionerqty=5&soapqty=3

การส่งด้วยเมธอด GET มีข้อดีคือ ทำการตรวจสอบข้อมูลได้ง่ายเพราะมองเห็นได้ใน URI แต่มีข้ออ่อนบางประการ

ถ้า URI เป็นข้อความยาวมากของฟอร์มที่ฟิลด์จำนวนมาก ถึงแม้ว่า browser ส่วนใหญ่สามารถควบคุมข้อความนำเข้า แต่การอ่าน URI ทำได้ยากและการกระจายยุ่งยาก

ฟิลด์รหัสผ่านได้รับการส่งเป็นข้อความธรรมดาบน URI ขณะที่เมธอด POST ส่งรหัสผ่านเป็นข้อความธรรมดา URI ของ GET ได้รับการมองเห็นและจำได้โดย browser ดังนั้นผู้ใช้อื่นที่ใช้คอมพิวเตอร์สามารถค้นหาชื่อและรหัสผ่านได้

เมธอด GET ไม่สนับสนุนการอัพโหลดไฟล์กับฟอร์ม
เมธอด GET ไม่สนับสนุนตัวอักษรอื่นนอกจาก ASCII จึงต้องมีงานเพิ่มขึ้น ถ้าส่งด้วยตัวอักษรส่วนขยาย

เมธอด POST เป็นอีกวิธีในการส่งข้อมูล โดยส่งในส่วน body ของคำขอ HTTP ไปยังแม่ข่าย เมธอดนี้มีข้อได้เปรียบคือ เห็นน้อยกว่าเมธอด POST ควบคุมชุดตัวอักษรได้มากกว่า ASCII และไม่จำกัดโดย "history" ของ browser

คำแนะนำการเลือกเมธอดดังนี้
GET ใช้กับข้อมูลที่ส่งไปสำหรับการคิวรี่และไม่มีการปรับปรุงข้อมูลบนแม่ข่าย
POST ใช้กับกรณีอื่น

การเข้าถึงตัวแปรฟอร์ม

จุดรวมของการใช้ฟอร์มใบสั่งซื้อ คือ การรวบรวมใบสั่งซื้อของลูกค้า  การเก็บรายละเอียดสิ่งที่ลูกค้าป้อนลงไปทำได้ง่ายใน  PHP
ภายในสคริปต์  PHP สามารถเข้าถึงแต่ละฟิลด์ของฟอร์มในฐานะตัวแปรที่มีชื่อเดียวกับฟิลด์ของฟอร์มให้ดูตัวอย่างคำสั่งใน processorder.php

<?php
$printdate = date("H:i, jS F");

echo <<<ORDERSTR

      <p>เวลาประมวลผลใบสั่งซื้อ {$printdate}</p>
ผู้สั่งซื้อ {$_GET['name']}<br/>
<p>รายละเอียดการสั่งซื้อ:<br/>
{$_GET['shampooqty']} ขวด  แชมพู<br/>
{$_GET['conditionerqty']} ขวด  ครีมนวดผม<br/>
{$_GET['soapqty']} ก้อน  สบู่<br/>
</p>

ORDERSTR;

?>

ถ้า browser ได้รับการ refresh ผลลัพธ์ของสคริปต์ จะแสดงตามภาพ 1.1.3 ค่าแต่ละประเภทจะปรากฎออกมา


ภาพ 1.1.3 แสดงผลลัพธ์จากการป้อนข้อมูล

ตัวแปรฟอร์ม

ข้อมูลจากสคริปต์จะส่งผ่าน superglobal array คือ $_GET หรือ $_POST ที่สามารถเข้าถึงได้ผ่านตัวแปร  PHP ชื่อตัวแปรนี้เริ่มต้นด้วยเครื่องหมายดอลลาร์ ($) การเข้าถึงข้อมูลของฟอร์มผ่านตัวแปรเขียนได้ 2 วิธ

วิธีที่ 1 คือ การใช้รูปแบบย่อ เช่น $soapqty

วิธีที่ 2 คือ ใช้นิพจน์แบบนี้
$$_GET["soapqty"]

เวอร์ชัน 4 รับข้อมูลจาก  $HTTP_GET_VARS และ $HTTP_POST_VARS ที่ไม่ได้เป็น superglobal array สำหรับ array นี้ยังมีอยู่และใช้ได้โดยการตั้งค่า register_long_arrays เป็น on ในไฟล์ php.ini

ถ้าตั้งค่าคำสั่ง register_globals ในไฟล์ php.ini เป็น on สามารถใช้ได้เฉพาะรูปแบบ short ค่านี้เป็นค่าเริ่มต้นปกติของไฟล์ php.ini

ถ้าตั้งค่า register_globals เป็น off สามารถใช้วิธีที่ 2 รวมถึงต้องตั้งค่าคำสั่ง track_var เป็น  on

รูปแบบเต็มจะทำงานได้เร็วและหลีกเลี่ยงการสร้างตัวแปรอย่างอัตโนมัติ  อย่างไรก็ตาม รูปแบบย่ออ่านได้ง่าย และเหมือนกับ PHP เวอร์ชันก่อน


  

สงวนลิขสิทธิ์ (C) widebase / Julaphak