********เพิ่มเติมข้อมูล การส่งข้อมูลจากฟอร์ม (form) แบบ get vs post (เก็ท vs โพส) *********
การส่งค่ามาในรูปแบบของ Form
การส่งค่ามาในรูปแบบของ
Form มีอยู่ด้วยกัน 3 แบบ $_GET , $_POST , $_REQUEST โดยหลักการส่งค่านั้น ต้องมาจากการส่งค่า Form ก่อนหรือในส่วนของ
Frontend โดยค่าที่ส่งมา จะต้องไปทำการกำหนดในส่วนของ Method ว่า เราจะส่งค่ามาแบบไหนกัน , โดยค่าที่ส่งไป จะไปทำงานในส่วน
Backend
Frontend $_GET : ในส่วนของ Frontend จะทำหน้าที่ในการส่งค่าไปในส่วนของ Backend โดยมีการกำหนดผ่านตัว Method="GET", ทั้งนี้ค่าที่ส่งไปนั้น จะมีอยู่กัน 3 ค่า ซึ่งก็ได้แก่ name,password,sex
โค้ด: เลือกทั้งหมด
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><?php echo "รายการในสินค้า"; ?></title>
</head>
<body>
<form action="test_php.php" method="GET"> <!-- เมื่อกด ปุ่ม submit ค่าจะถูกส่งไป action ของ file test_php.php ..... -->
<!-- ..... ส่วน method="GET" คือการส่งค่า แบบ GET -->
<label>ชื่อ : <input type="text" value="" name="fname"/></label> <!-- ค่า name จะถูกส่งมาผ่าน input -->
<label>รหัสผ่าน : <input type="password" value="" name="pass"/></label> <!-- ค่า password จะถูกส่งมาผ่าน input-->
<br><label>เพศ : </label>
<input type="radio" name="sex" value="ชาย" checked="checked"/>ชาย <!-- ค่า sex - จะถูกส่งมาในรูปแบบของ Radio-->
<input type="radio" name="sex" value="หญิง">หญิง<br>
<input type="submit" value="ส่งข้อมูล"> <!-- เมื่อมีกดปุ่ม Submit ก็จะมีการส่งค่านั้นไป -->
</form>
</body>
</html>
1.รูปในการส่งค่าแบบ $_GET
- การส่งค่าในรูปแบบ $_GET นั้น , จะเป็นการส่งค่าข้อมูล ผ่าน Link URL , โดยผู้ใช้งานทั่วไป หรือ ใครก็ตาม ก็สามารถเห็นค่านั้น ผ่าน URL ได้ เพราะข้อมูลไม่ได้อยู่ในรูปแบบของ Private
โค้ด: เลือกทั้งหมด
<?php
header('Content-Type: text/html; charset=utf-8');
$fname_GET = $_GET['fname']; //$_GET เป็นการส่งค่า ผ่าน URL โดยที่ข้อมูลส่งไป ไม่ได้สำคัญไรมาก ส่วน ...
//.... ['fname'] คือ รับค่ามาจาก Form name = 'fname' จาก File ...
//.... Form_test.php
$pass_GET = $_GET['pass'];
$sex_GET = $_GET['sex'];
echo '<div style="font-size:14px">';
echo '--------------------------------------------------------------------';
echo '<pre>';
echo '<b>แสดงค่าตัวแปร fname</b>', "\n";
echo '[\'fname\'] = ', $fname_GET, "\n"; //ทำการ echo แสดงข้อมูล หลังจากส่งค่า แบบ $_GET ไป
echo '</pre>';
echo '--------------------------------------------------------------------';
echo '--------------------------------------------------------------------';
echo '<pre>';
echo '<b>แสดงค่าตัวแปร pass</b>', "\n";
echo '[\'pass\'] = ', $pass_GET, "\n";
echo '</pre>';
echo '--------------------------------------------------------------------';
echo '--------------------------------------------------------------------';
echo '<pre>';
echo '<b>แสดงค่าตัวแปร sex</b>', "\n";
echo '[\'pass\'] = ', $sex_GET, "\n";
echo '</pre>';
echo '--------------------------------------------------------------------';
echo '</div>';
?>
ผลลัพธ์ที่ได้
ก็จะมีการแสดงข้อมูลผ่าน URL , โดยผู้ใช้งานทั่วไปก็จะสามารถเห็นข้อมูลนี้ได้อย่างเปิดเผย
- 12.JPG (14.4 KiB) Viewed 8558 times
- 12-Get.JPG (27.57 KiB) Viewed 8558 times
Frontend $_POST : ในส่วนของ Frontend จะทำหน้าที่ในการส่งค่าไปในส่วนของ Backend โดยมีการกำหนดผ่านตัว Method="POST", ทั้งนี้ค่าที่ส่งไปนั้น จะมีอยู่กัน 3 ค่า ซึ่งก็ได้แก่ name,password,sex
โค้ด: เลือกทั้งหมด
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><?php echo "รายการในสินค้า"; ?></title>
</head>
<body>
<form action="test_php.php" method="POST"> <!-- เมื่อกด ปุ่ม submit ค่าจะถูกส่งไป action ของ file test_php.php ..... -->
<!-- ..... ส่วน method="POST" คือการส่งค่า แบบ POST -->
<label>ชื่อ : <input type="text" value="" name="fname"/></label> <!-- ค่า name จะถูกส่งมาผ่าน input -->
<label>รหัสผ่าน : <input type="password" value="" name="pass"/></label> <!-- ค่า password จะถูกส่งมาผ่าน input-->
<br><label>เพศ : </label>
<input type="radio" name="sex" value="ชาย" checked="checked"/>ชาย <!-- ค่า sex - จะถูกส่งมาในรูปแบบของ Radio-->
<input type="radio" name="sex" value="หญิง">หญิง<br>
<input type="submit" value="ส่งข้อมูล"> <!-- เมื่อมีกดปุ่ม Submit ก็จะมีการส่งค่านั้นไป -->
</form>
</body>
</html>
2.รูปแบบในการส่งค่าแบบ $_POST
- การส่งค่าในรูปแบบ $_POST นั้น , จะเป็นการส่งค่าข้อมูล ไม่ผ่านตัว URL , ผู้ใช้งานทั่วไป หรือ ใครก็ตาม ก็ไม่สามารถเห็นค่านั้น ผ่าน URL ได้ เพราะข้อมูลถูกส่งมาในรูปแบบ Hide
โค้ด: เลือกทั้งหมด
<?php
header('Content-Type: text/html; charset=utf-8');
$fname_POST = $_POST['fname']; //$_POST เป็นการส่งค่า โดยไม่ผ่าน URL ไม่ต้องการที่จะเปิดเผยข้อมูล ส่วน ...
//.... ['fname'] คือ รับค่ามาจาก Form name = 'fname' จาก File ...
//.... Form_test.php
$pass_POST = $_POST['pass'];
$sex_POST = $_POST['sex'];
echo '<div style="font-size:14px">';
echo '--------------------------------------------------------------------';
echo '<pre>';
echo '<b>แสดงค่าตัวแปร fname</b>', "\n";
echo '[\'fname\'] = ', $fname_GET, "\n"; //ทำการ echo แสดงข้อมูล หลังจากส่งค่า แบบ $_POST ไป
echo '</pre>';
echo '--------------------------------------------------------------------';
echo '--------------------------------------------------------------------';
echo '<pre>';
echo '<b>แสดงค่าตัวแปร pass</b>', "\n";
echo '[\'pass\'] = ', $pass_GET, "\n";
echo '</pre>';
echo '--------------------------------------------------------------------';
echo '--------------------------------------------------------------------';
echo '<pre>';
echo '<b>แสดงค่าตัวแปร sex</b>', "\n";
echo '[\'pass\'] = ', $sex_GET, "\n";
echo '</pre>';
echo '--------------------------------------------------------------------';
echo '</div>';
?>
ผลลัพธ์ที่ได้
ในรูปแบบของ $_POST ก็จะไม่มีการแสดงค่าข้อมูลผ่าน URL ได้เห็น , แสดงข้อมูลที่ถูกส่งมานั้น ไม่ต้องเปิดเผยในที่สาธารณะ
- 13-Post.JPG (11.27 KiB) Viewed 8558 times
- 13.JPG (32.21 KiB) Viewed 8558 times
Frontend $_REQUEST : ในส่วนของ Frontend จะทำหน้าที่ในการส่งค่าไปในส่วนของ Backend โดยมีการกำหนดผ่านตัว Method="REQUEST", ทั้งนี้ค่าที่ส่งไปนั้น จะมีอยู่กัน 3 ค่า ซึ่งก็ได้แก่ name,password,sex
โค้ด: เลือกทั้งหมด
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><?php echo "รายการในสินค้า"; ?></title>
</head>
<body>
<form action="test_php.php" method="REQUEST"> <!-- เมื่อกด ปุ่ม submit ค่าจะถูกส่งไป action ของ file test_php.php ..... -->
<!-- ..... ส่วน method="REQUEST" คือการส่งค่า แบบ REQUEST -->
<label>ชื่อ : <input type="text" value="" name="fname"/></label> <!-- ค่า name จะถูกส่งมาผ่าน input -->
<label>รหัสผ่าน : <input type="password" value="" name="pass"/></label> <!-- ค่า password จะถูกส่งมาผ่าน input-->
<br><label>เพศ : </label>
<input type="radio" name="sex" value="ชาย" checked="checked"/>ชาย <!-- ค่า sex - จะถูกส่งมาในรูปแบบของ Radio-->
<input type="radio" name="sex" value="หญิง">หญิง<br>
<input type="submit" value="ส่งข้อมูล"> <!-- เมื่อมีกดปุ่ม Submit ก็จะมีการส่งค่านั้นไป -->
</form>
</body>
</html>
3.รูปแบบในการส่งค่าแบบ $_REQUEST
- การส่งค่าในรูปแบบ $_REQUEST , จะเป็นการส่งค่าผ่านทาง method หรือวิธีการที่ใช้ส่งข้อมูลทั้งสองแบบ คือ GET และ POST โดย $_REQUEST จะสามารถเข้าถึงค่าข้อมูลได้โดยไม่จำเป็นต้องระบุว่าเป็น method ดังกล่าวเท่านั้น
โค้ด: เลือกทั้งหมด
<?php
header('Content-Type: text/html; charset=utf-8');
$fname_REQUEST = $_REQUEST['fname']; //$_REQUEST เป็นการส่งค่าทั้งสองแบบ $_GET หรือ $_POST ก็ได้
$pass_REQUEST = $_REQUEST['pass'];
$sex_REQUEST = $_REQUEST['sex'];
echo '<div style="font-size:14px">';
echo '--------------------------------------------------------------------';
echo '<pre>';
echo '<b>แสดงค่าตัวแปร fname</b>', "\n";
echo '[\'fname\'] = ', $fname_GET, "\n"; //ทำการ echo แสดงข้อมูล หลังจากส่งค่า แบบ $_REQUEST ไป
echo '</pre>';
echo '--------------------------------------------------------------------';
echo '--------------------------------------------------------------------';
echo '<pre>';
echo '<b>แสดงค่าตัวแปร pass</b>', "\n";
echo '[\'pass\'] = ', $pass_GET, "\n";
echo '</pre>';
echo '--------------------------------------------------------------------';
echo '--------------------------------------------------------------------';
echo '<pre>';
echo '<b>แสดงค่าตัวแปร sex</b>', "\n";
echo '[\'pass\'] = ', $sex_GET, "\n";
echo '</pre>';
echo '--------------------------------------------------------------------';
echo '</div>';
?>
ผลลัพธ์ที่ได้
ในรูปแบบการส่งค่าของ $_REQUEST ที่แสดงผลลัพธ์ให้เห็น , มีการส่งค่าไปในทั้ง 2 แบบบ $_GET และ $_POST
- 14-Request.JPG (17.94 KiB) Viewed 8558 times
- 14.JPG (31.36 KiB) Viewed 8558 times
ข้อสรุปผล
ในการส่งค่ามาจาก Form นั้น ควรต้องระมัดระวังในการส่งค่ามาอย่างยิ่ง , เรามีจุดประสงค์ความต้องการ ในการส่งค่ามาในรูปแบบไหนกัน , ต้องการให้คนอื่นเห็นในที่สาธารณะหรือไหม หรือ ไม่ต้องการเปิดเผยข้อมูล , หากต้องการศึกษาข้อมูลเพิ่มเติม ที่จะช่วยให้เข้ามากยิ่งขึ้น
สามารถศึกษาได้ที่จาก บทเรียน PHP เพื่อเพิ่มเติมเข้าใจในส่วนต่างๆ
แหล่งข้อมูลอ้างอิง
$_GET : https://www.w3schools.com/php/php_superglobals_get.asp
$_POST : https://www.w3schools.com/php/php_superglobals_post.asp
$_REQUEST : https://www.w3schools.com/php/php_superglobals_request.asp