MeeWebFree.com >> บทความ การสร้าง และปรับแต่ง website >> การสร้างเว็บขั้นพื้นฐาน >> compare-get-post-input-form.htm

การส่งค่าผ่าน Form หน้าเว็บ แบบ POST กับ GET

ก็จะพูดกันแบบเต็มๆถึงเรื่องการส่ง แบบ POST และ GET ที่อาจจะสร้างความ งงๆให้กับบางคนนะครับ

จากบทความก่อน ที่พูดถึงเรื่อง form input แล้ววิธีการส่งที่จะส่งแบบ GET หรือ POST นะครับ ก็จะมาแฉแบบละเอียดถึงการส่งแต่ละแบบ และประโยชน์ด้วยครับ

เริ่มต้นจาก แบบ GET ก่อน แบบ GET นั้น เมื่อเราส่งไปที่หน้ารับแล้ว หน้ารับจะมี?แล้วมีตัวแปรโผล่ขึ้นมา แล้วตามด้วยอะไรเต็มไปหมด เช่น ผมค้น www.google.co.th ด้วยคำว่า meewebfree จะได้ URL ดังนี้ http://www.google.co.th/search?hl=th&q=meewebfree&อะไรอีกมากมายยยยย ลองดูนะครับ hl=th และ q=meewebfree ทั้งสองอันนี้ มันมีความหมายนะครับ คือ หมายความว่า ตัวแปร hl ให้มีค่า th และตัวแปร q ให้มีค่า meewebfree ซึ่ง ในหน้าประมวลผลนั้น สามารถดึงค่านี้เข้าไปประมวลผลได้นะครับ วิธีการก็คือ เขียน

$ชื่อตัวแปรที่สร้างใหม่ = $_GET['ชื่อตัวแปรที่ส่งมา เช่น hl'];

จากบทความที่พูดถึงเรื่อง form การรับข้อมูลนี้นะครับ ผมก็ได้เขียน การดึงค่า แบบ GET เอาไว้ด้วย (โหลดไฟล์ที่อยู่ในบทความนั้นมาครับ รันไฟล์ที่มีชื่อ input.php)

สังเกตุบรรทัดที่ 2 ครับ บรรทัดนั้นล่ะครับ ที่เป็นการดึงค่าแบบ GET ออกมาแสดงครับ ซึ่ง ผมจะรันไฟล์นี้ด้วย URL input.php?key=สวัสดีครับ เรามาดูผลที่แสดงกันครับ

หน้าเว็บก็จะแสดงข้อความ สวัสดีครับ ตามที่เราส่งค่าไปเป็น URL นั้นเลย แล้วไม่ว่าเราจะเป็นเป็นอะไรก็ตาม ระบบ ก็จะแสดงผลตามนั้นนะครับ เช่น input.php?key=test ระบบก็จะแสดงว่า test ครับ

และนี่ก็คือสาเหตุหลักในความไม่ปลอดภัยของระบบ form นั่นเอง เพราะหากสังเกตุบางเว็บที่มี URL ? อะไรแบบนี้นะครับ เมื่อเราเปลี่ยนค่าที่ใส่ให้ตัวแปร เนื้อหาในหน้าเว็บก็จะเปลี่ยนไปด้วยครับ เอาตัวอย่างไกล้ๆที่สุดเลยครับ หากใช้ php-fusion นั้น เวลาเราเขียนบทความ แล้วเปิดอ่าน URL เราจะมี id=.... ใช่ใหมครับ นั่นล่ะครับ เมื่อเลขเปลี่ยน บทความก็เปลี่ยน (ลองทดสอบดูได้ครับ)

และสำหรับการส่งค่าแบบ GET นะครับ ก็เหมือนกับที่ว่าไว้ใน บทความ form การรับข้อมูล เลยครับ เพียงแต่หน้าที่ส่ง หรือหน้า start.htm นั้นเปลี่ยนจากคำว่า POST เป็น GET ครับ

เค้าจึงมีการส่งข้อมูลอีกแบบนึง ที่ทำให้มีความปลอดภัยมากขึ้น นั่นก็ คือ แบบ POST นั่นเอง สำหรับการส่ง และรับข้อมูลแบบ POST นั้น ให้ อ่านที่บทความ form การรับข้อมูล เลยนะครับ อธิบายเอาไว้แล้ว

ซึ่งหากเราสังเกตุตอนที่รันไฟล์รับและส่งค่านั้น จะเห็นว่า URL ไม่มี ?...... ใดๆเลย นั่นเป็นเพราะว่า ตัวแปรไม่ได้ถูปประกาศออกมานั่นเองครับ แต่จะมีการับส่งและใช้งานอยุ่ในระบบ ( server )ครับ จึงทำให้มีความปลอดภัยต่อการ hack มากขึ้นนั่นเอง......

สำหรับการเขียนการรับค่าทั้งอสงแบบนั้น มีประโยชน์อีกอย่างนึงในการทำให้สามารถใช้งานตัวแปรได้อย่างถูกต้อง ในระบบ ที่ register_global = off นะครับ หลายคนมักจะมีปัญหาเรื่องนี้มาก

วิธีแก้ก็ไม่ได้ยากอะไรเลย แค่เติม $ชื่อตัวแปรที่สร้างใหม่ = $_GET['ชื่อตัวแปรที่ส่งมา เช่น hl']; ในตัวแปรที่ส่งมาแบบ get หรือเติม $ชื่อตัวแปรที่สร้างใหม่ = $_POST['ชื่อตัวแปรที่ส่งมา เช่น hl']; เช้าไปในระบบที่มีการส่งแบบ POST ก่อนการเรียกใช้งานตัวแปรก็เท่านั้นเอง เป็นอันเรียบร้อย ทั้งยังใช้งานได้กับทุกระบบอีกด้วยครับ

พยายามเขียนแบบนี้ให้ชินมือครับอย่าพยายามเรียกใช้ตัวแปรโดยที่ไม่มีการรับ get หรือรับ post เข้ามาครับ จะเป็นการวาง bug ให้โค้ดตัวเองเปล่าๆ

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

และหากหน้าเว็บใครที่สังเกตุดีๆที่ shoutbox ผมจะมีช่องให้ใส่ ก เพื่อกัน robot spam นั่นก็หลักการ form ธรรมดา ตามสองบทความที่พูดมานี่ล่ะครับ เพียงแต่ว่า ในส่วนการเช็คเงื่อนไข ผมก็เช็คเพิ่มอีกหน่อยว่า ช่องนี้ต้องเป็น ก นะจึงจะถูกต้อง(ส่วนนี้ภาษา php) เท่านั้นเองครับ

Keyword : GET, POST, form ,data, input, output,variable


ขอสงวนสิทธ์บ้าง จะว่ากันมะเนี่ย อิๆๆๆ Copyright© By BWebMass @ MeeWebFree.Com ®