การจัดการฟอร์ม PHP

ตัวแปรสูง global $_GET และ $_POST ของ PHP ใช้เพื่อรับรู้ข้อมูล form-data。

PHP - ฟอร์ม HTML ธรรมดา

ตัวอย่างข้างต้นแสดงฟอร์ม HTML ธรรมดาที่มีสองฟิลด์อินพุทและปุ่มส่งสมญาติ:

ตัวอย่าง

<html>
<body>
<form action="welcome.php" method="post">
ชื่อ: <input type="text" name="name"><br>
อีเมล: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>

ปฏิบัติการตัวอย่าง

เมื่อผู้ใช้กรอกฟอร์มและกดปุ่มส่ง ข้อมูลฟอร์มจะถูกส่งไปยังไฟล์ PHP ที่มีชื่อ "welcome.php" เพื่อการประมวลผล ข้อมูลฟอร์มถูกส่งด้วยวิธี HTTP POST

ถ้าคุณต้องการแสดงข้อมูลที่ถูกส่งมา คุณสามารถแสดงทุกตัวแปรโดยที่แสดง (echo) ตัวแปรทั้งหมด ได้ "welcome.php" มีลักษณะเช่นนี้:

<html>
<body>
ยินดีต้อนรับ <?php echo $_POST["name"]; ?><br>
ที่อยู่อีเมลของคุณคือ: <?php echo $_POST["email"]; ?>
</body>
</html>

การแสดงผล:

ยินดีต้อนรับ Bill
ที่อยู่อีเมลของคุณคือ Bill.Gates@example.com

คุณยังสามารถได้ผลลัพธ์เดียวกันด้วยวิธี HTTP GET:

ตัวอย่าง

<html>
<body>
<form action="welcome_get.php" method="get">
ชื่อ: <input type="text" name="name"><br>
อีเมล: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>

ปฏิบัติการตัวอย่าง

"welcome_get.php" มีลักษณะเช่นนี้:

<html>
<body>
ยินดีต้อนรับ <?php echo $_GET["name"]; ?><br>
ที่อยู่อีเมลของคุณคือ: <?php echo $_GET["email"]; ?>
</body>
</html>

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

สัญญาณเตือน:ในการจัดการฟอร์ม PHP คุณต้องให้ความสำคัญต่อความปลอดภัย!

หน้านี้ไม่มีการรวมรหัสการตรวจสอบฟอร์ม มันเพียงแสดงให้เห็นว่าจะส่งและรับข้อมูลฟอร์ม

แต่ในบทบาทหลังจะเราจะเล่าให้คุณทราบวิธีที่จะเพิ่มความปลอดภัยของฟอร์ม PHP! การตรวจสอบความปลอดภัยของฟอร์มอย่างเหมาะสมเป็นสิ่งที่สำคัญมากในการป้องกันการโจมตีโดยแฮ็คเกอร์และสแปม

GET vs. POST

GET และ POST ตั้งค่าตัวแปรแบบแถว (เช่น,array( key => value, key2 => value2, key3 => value3, ...) ซึ่งมีค่าเป็นคู่กัน ที่ใช้ชื่อโปรแกรมฟอร์ม และมีค่าเป็นข้อมูลที่มาจากการกรอกข้อมูลของผู้ใช้

GET และ POST ถือเป็น $_GET และ $_POST มันเป็นตัวแปรทั่วไป มันหมายความว่าการเข้าถึงของพวกมันไม่ต้องที่จะพิจารณาขอบเขต ไม่จำเป็นต้องมีรหัสเพิ่มเติม คุณสามารถเข้าถึงพวกมันได้จากฟังก์ชัน หรือคลาส หรือไฟล์ใดๆ

$_GET คือตัวแปรภายในตารางที่ส่งมาด้วยตัวแปรใน URL สู่สคริปต์ปัจจุบัน

$_POST คือตัวแปรภายในตารางที่ส่งมาด้วย HTTP POST สู่สคริปต์ปัจจุบัน

เมื่อใดที่จะใช้ GET?

ข้อมูลที่ส่งไปด้วยวิธี GETเห็นได้โดยทุกคน(ชื่อและค่าของตัวแปรทั้งหมดจะแสดงใน URL)。GET มีข้อจำกัดต่อจำนวนข้อมูลที่ส่งได้ จำกัดในระดับประมาณ 2000 ตัวอักษร อย่างไรก็ตาม เพราะตัวแปรแสดงใน URL จึงง่ายที่จะเพิ่มหน้าเข้าหลังเบิกหน้าตาเล็กด้วย

GET สามารถใช้ส่งข้อมูลที่ไม่เป็นความลับ

หมายเหตุ:ไม่สามารถใช้ GET ส่งรหัสผ่านหรือข้อมูลที่เป็นความลับอย่างไม่เหมาะสม!

เมื่อใดที่จะใช้ POST?

ข้อมูลที่ส่งไปด้วยวิธี POSTไม่เห็นได้โดยผู้อื่น(ชื่อและค่าทั้งหมดจะถูกใส่ลงในร่างของ HTTP การขอคำสั่ง),และมีข้อจำกัดต่อจำนวนข้อมูลที่ส่งได้ไม่จำกัด

นอกจากนี้ POST ยังสนับสนุนความสามารถระดับสูง เช่น multi-part binary input ขณะที่ของมันเสียงไปยังเซิร์ฟเวอร์

อย่างไรก็ตาม ตั้งแต่ตัวแปรไม่แสดงใน URL จึงไม่สามารถเพิ่มหน้านี้เข้าหลังเบิกหน้าตาเล็กได้

คำเตือน:นักพัฒนาชื่นชอบการใช้ POST ส่งข้อมูลฟอร์ม

ตอนนี้เราจะดูว่าจะกระทำอย่างไรเพื่อจัดการฟอร์ม PHP อย่างปลอดภัย!