ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: Fallen ที่ 13 ตุลาคม 2017, 15:04:33



หัวข้อ: ค่า get ที่รับมาเข้า form (รับเข้ามาได้เเล้ว) แต่พอกดส่งต่อ ทำไมค่าไม่ไปครับ
เริ่มหัวข้อโดย: Fallen ที่ 13 ตุลาคม 2017, 15:04:33
ค่า get ที่รับมาเข้า form (รับเข้ามาได้เเล้ว) แต่พอกดส่งต่อ ทำไมค่าไม่ไปครับ


$message.=clean_msg(nl2br(strip_tags($name)));
$message.=clean_msg(nl2br(strip_tags($email)));   
$message.=clean_msg(nl2br(strip_tags($_GET['code'])));

<input name="name" type="text" size="40" value="<?=stripslashes(htmlspecialchars($name));?>" />
<input name="email" type="text" size="40" value="<?=stripslashes(htmlspecialchars($email));?>" />
<input name="code" type="text" size="40" value="<?php echo $_GET["code"]; ?>" />

 :P


หัวข้อ: Re: ค่า get ที่รับมาเข้า form (รับเข้ามาได้เเล้ว) แต่พอกดส่งต่อ ทำไมค่าไม่ไปครับ
เริ่มหัวข้อโดย: jatuphum ที่ 13 ตุลาคม 2017, 15:15:23
ใช้ $_SESSION น่าจะตอบโจทย์ได้ดีกว่านะครับ


หัวข้อ: Re: ค่า get ที่รับมาเข้า form (รับเข้ามาได้เเล้ว) แต่พอกดส่งต่อ ทำไมค่าไม่ไปครับ
เริ่มหัวข้อโดย: Fallen ที่ 13 ตุลาคม 2017, 15:18:15
ใช้ $_SESSION น่าจะตอบโจทย์ได้ดีกว่านะครับ


ผมจะให้คนมาสมัครสมาชิกต่อ ก็จะส่ง url ให้โปรโมท
จึงทำ แบบนี้ครับ xxx.com/form.php?code=555

พอกดเข้าไปมันก็จะส่งค่า มาที่ฟอร์มเลย
จะได้รู้ว่ามาจาก 555

ไม่ทราบทำอย่างนี้ มีข้อเสียไหมครับ $_SESSION จะดีกว่าอย่างไรเหรอครับ

 :wanwan017:


หัวข้อ: Re: ค่า get ที่รับมาเข้า form (รับเข้ามาได้เเล้ว) แต่พอกดส่งต่อ ทำไมค่าไม่ไปครับ
เริ่มหัวข้อโดย: sputtaro ที่ 13 ตุลาคม 2017, 16:33:26
เมื่อรับค่าใดๆ ไม่ว่าจะเป็น $_Get $_Post $_Request

ควรเริ่มด้วยการตรวจสอบความ มี...หรือไม่
ด้วย isset เช่น

if(isset($_Get['code'])){
 $code=$_Get['code'];
//ใช้ strip_tags หรือฟังชั่นต่างๆ เพื่อป้องกันตัวเองเสมอ
//อย่าเชื่อ input จากผู้ใช้งาน โดยไม่ผ่านการตรวจสอบเป็นอันขาด
 echo strip_tags($code);//เพื่อตรวจสอบว่า ถูกต้อง มีค่านั้นจริง หากไม่ต้องการแสดง ก็ ไม่ต้อง echo
}

จากนั้นที่ input
<input name="code" type="text" size="40" value="<?php echo $code; ?>" />

*******************************************

เมื่อกดส่งฟอร์ม ซึ่งบางครั้งเรานำเข้า ฐานข้อมูล จะปลอดภัย แต่ถ้าไม่มีการกลั่นกรอง ส่งไปทั้ง $_GET["code"]
อันตรายมาก ระว้งจะโดน SQL Injection script เข้านะ

******************************************

การเขียน <?= ก็ ต้องระวัง เผื่อ โฮสท์ไม่เปิดฟังชั่o short_open_tag คุณก็ต้องมานั่งแก้ไข php.ini อีก
เผลอๆ ใช้เขียนสคริปท์ ร่วมกับไฟล์ xml อาจมีปัญหาได้ เพราะ tag เปิดมันเหมือนกันคือ <?
แม้ไม่อันตรายเท่าเรื่องแรก แต่ก็ควรระวังไว้นะครับ

*******************************************

กรณี กดปุ่ม submit แล้วค่าไม่ไป (ไม่ได้รับค่านั้น)
กลับมาตรวจสอบ ว่า ฟอร์มถูกต้องหรือไม่
และ/หรือ ตรวจสอบ หน้าที่รับค่านั้นด้วย


หัวข้อ: Re: ค่า get ที่รับมาเข้า form (รับเข้ามาได้เเล้ว) แต่พอกดส่งต่อ ทำไมค่าไม่ไปครับ
เริ่มหัวข้อโดย: Fallen ที่ 13 ตุลาคม 2017, 17:58:40
เมื่อรับค่าใดๆ ไม่ว่าจะเป็น $_Get $_Post $_Request

ควรเริ่มด้วยการตรวจสอบความ มี...หรือไม่
ด้วย isset เช่น

if(isset($_Get['code'])){
 $code=$_Get['code'];
//ใช้ strip_tags หรือฟังชั่นต่างๆ เพื่อป้องกันตัวเองเสมอ
//อย่าเชื่อ input จากผู้ใช้งาน โดยไม่ผ่านการตรวจสอบเป็นอันขาด
 echo strip_tags($code);//เพื่อตรวจสอบว่า ถูกต้อง มีค่านั้นจริง หากไม่ต้องการแสดง ก็ ไม่ต้อง echo
}

จากนั้นที่ input
<input name="code" type="text" size="40" value="<?php echo $code; ?>" />

*******************************************

เมื่อกดส่งฟอร์ม ซึ่งบางครั้งเรานำเข้า ฐานข้อมูล จะปลอดภัย แต่ถ้าไม่มีการกลั่นกรอง ส่งไปทั้ง $_GET["code"]
อันตรายมาก ระว้งจะโดน SQL Injection script เข้านะ

******************************************

การเขียน <?= ก็ ต้องระวัง เผื่อ โฮสท์ไม่เปิดฟังชั่o short_open_tag คุณก็ต้องมานั่งแก้ไข php.ini อีก
เผลอๆ ใช้เขียนสคริปท์ ร่วมกับไฟล์ xml อาจมีปัญหาได้ เพราะ tag เปิดมันเหมือนกันคือ <?
แม้ไม่อันตรายเท่าเรื่องแรก แต่ก็ควรระวังไว้นะครับ

*******************************************

กรณี กดปุ่ม submit แล้วค่าไม่ไป (ไม่ได้รับค่านั้น)
กลับมาตรวจสอบ ว่า ฟอร์มถูกต้องหรือไม่
และ/หรือ ตรวจสอบ หน้าที่รับค่านั้นด้วย


ขอบคุณมากครับ +1 เรยยย

 :'(