การสร้างฟอร์ม และ PHP อยู่ในหน้าเดียวกัน
โดยปกติเมื่อมีการสร้างฟอร์มเพื่อเก็บข้อมูลโดยใช้ PHP มักจะมี 2 ไฟล์ คือ ไฟล์ HTML สำหรับสร้างฟอร์มเพื่อเก็บข้อมูล และ เมื่อกดปุ่มส่งข้อมูล จะไปเรียกใช้งานไฟล์ 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
เราสามารถ รวมไฟล์ทั้งสองเข้าด้วยกัน เหลือไฟล์เดียว โดยใช้หลักการดังนี้
- สร้างไฟล์ PHP ที่ประกอบด้วย ฟอร์มและโค้ดของ PHP
- ครั้งแรกให้ตรวจสอบว่ามีการคลิกปุ่มส่ง แล้วหรือยัง โดยใช้ฟังก์ชัน isset() ถ้ามีการคลิกปุ่มแล้ว ให้ไปที่โค้ด PHP ถ้ายังไม่มี ให้ไปที่ฟอร์ม
- ที่ฟอร์ม Action ให้เรียกชื่อไฟล์ตัวเอง คือ $_SERVER['PHP_SELF']
- การใช้ PHP_SELF มีจุดอ่อน Hacker สามารถใช้ Query String ส่ง script พ่วงเข้ามาอาศัยให้ทำงานอื่น ๆ ได้ จึงควรป้องกันไว้ก่อน โดยใช้ฟังก์ชัน htmlentities() เพื่อไม่ให้สามารถพ่วงโค้ดเข้ามาได้
- ในกรณีที่ เราใช้ Query String ส่งค่าเข้ามา เช่น ส่งค่า thisid ดังนี้
http://localhost/temp/phpFormDemo.php?thisid=12345
ให้รับค่า thisid ไว้ก่อน (กรณีนี้ใช้ GET แต่สามารถส่งมาทาง POST ก็ได้) และส่งค่าจากฟอร์ม ไปที่โค้ด PHP ผ่านทาง hidden input type
<?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
ความคิดเห็น
แสดงความคิดเห็น