วันศุกร์ที่ 5 เมษายน พ.ศ. 2556

การสร้างฟอร์ม และ PHP อยู่ในหน้าเดียวกัน

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

เราสามารถ รวมไฟล์ทั้งสองเข้าด้วยกัน เหลือไฟล์เดียว โดยใช้หลักการดังนี้
  1. สร้างไฟล์ PHP ที่ประกอบด้วย ฟอร์มและโค้ดของ PHP
  2. ครั้งแรกให้ตรวจสอบว่ามีการคลิกปุ่มส่ง แล้วหรือยัง โดยใช้ฟังก์ชัน isset() ถ้ามีการคลิกปุ่มแล้ว ให้ไปที่โค้ด PHP ถ้ายังไม่มี ให้ไปที่ฟอร์ม
  3. ที่ฟอร์ม Action ให้เรียกชื่อไฟล์ตัวเอง คือ $_SERVER['PHP_SELF']
  4. การใช้ PHP_SELF มีจุดอ่อน Hacker สามารถใช้ Query String ส่ง script พ่วงเข้ามาอาศัยให้ทำงานอื่น ๆ ได้ จึงควรป้องกันไว้ก่อน โดยใช้ฟังก์ชัน htmlentities() เพื่อไม่ให้สามารถพ่วงโค้ดเข้ามาได้
  5. ในกรณีที่ เราใช้ Query String ส่งค่าเข้ามา เช่น ส่งค่า thisid ดังนี้

    http://localhost/temp/phpFormDemo.php?thisid=12345

    ให้รับค่า thisid ไว้ก่อน (กรณีนี้ใช้ GET แต่สามารถส่งมาทาง POST ก็ได้) และส่งค่าจากฟอร์ม ไปที่โค้ด PHP ผ่านทาง hidden input type
ตัวอย่างโค้ด ฟอร์ม และ PHP ในหน้าเดียวกัน

<?php
$id = $_GET["thisid"];
if(isset($_POST['submit']))
{
    $firstName = $_POST['fName'];
    $lastName = $_POST['lName'];
    $id = $_POST['id'];
 echo "<h2>ยินดีต้อนรับ คุณ$firstName $lastName</h2>";
 echo "id ของท่านคือ $id <br>";
}else{
?>
<form name="test" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
ชื่อ<input type="text" name="fName" size=50><br>
นามสกุล<input type="text" name="lName" size=50><br>
<input type="hidden" name="id" value = "<?php echo $id ?>"><br>
<input type="submit" name="submit" value="ส่งข้อมูล"></td></tr>
</form>
<?php
}
?>

แสดงผล

เมื่อเปิดครั้งแรก จะแสดงฟอร์มเพื่อรับข้อมูล (มีการใช้ query string ส่งค่า thisid ด้วย (
http://localhost/temp/phpFormDemo.php?thisid=12345)


 เมื่อเติมข้อมูลและคลิกปุ่มส่งข้อมูล จะแสดงผล ดังนี้







อ้างอิง
http://www.html-form-guide.com/php-form/php-form-action-self.html

ไม่มีความคิดเห็น:

แสดงความคิดเห็น