ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming[php] ลบ $_POST เพื่อไม่ให้ refresh ได้มั้ยครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: [php] ลบ $_POST เพื่อไม่ให้ refresh ได้มั้ยครับ  (อ่าน 23755 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
GillBate
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 160
ออฟไลน์ ออฟไลน์

กระทู้: 1,236



ดูรายละเอียด
« เมื่อ: 07 พฤษภาคม 2010, 16:38:12 »

 Tongue พอรับค่า $_POST มาแล้ว ถึงจะเปลี่ยนมันก็ไม่ได้ครับ refresh แล้วมันก็ทำงานเหมือนเดิมทั้งๆที่เราไม่ต้องการ
มีวิธีแก้ไขที่ไม่ต้องใช้ฐานข้อมูลมั้ยครับ
บันทึกการเข้า
bouy22
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 408
ออฟไลน์ ออฟไลน์

กระทู้: 2,334



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 07 พฤษภาคม 2010, 16:42:31 »

เวลารับค่าจาก form มาแล้ว เช่นหน้า login

 ถ้า login ถูกต้อง แต่ก่อน ผมจะใช้

          echo "<meta Http-equiv=\"refresh\" Content=\"1; Url=profile.php \">";

ตอนนี้เปลี่ยนเป็น
           sleep(1);
          @header("location:profile.php");

ก็มีค่าเท่ากัน แต่ เวลา กด refresh หรือ f5 แล้ว มันค่าไม่ส่งค่าที่ post มาแล้ว อธิบายไม่ถูก แต่คิดว่าน่าจะต้องการแบบนี้ นะ

บันทึกการเข้า

สนใจทำธุรกิจไอศกรีมหนองโพ คลิกเลย | ลงประกาศโฆษณา ประกาศฟรี | เว็บฝากรูป | สคริปเกมแฟลช |
ผลิตภัณฑ์เสริมอาหารออกซิเจนน้ำ Adoxy
GillBate
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 160
ออฟไลน์ ออฟไลน์

กระทู้: 1,236



ดูรายละเอียด
« ตอบ #2 เมื่อ: 07 พฤษภาคม 2010, 16:48:27 »

 Tongue พอดีว่า หลังจากรับค่า Post มาแล้ว ผมก็ให้มัน echo การต่อสู้ออกมาน่ะครับ
ถ้าเขารีเฟรสก็จะต่อสู้ซ้ำซึ่งเสียระบบ แต่ถ้าจะให้ refresh เลยทันทีนี่ เขาก็จะไม่สามารถอ่านการต่อสู้ได้อ่ะจิครับ
บันทึกการเข้า
bouy22
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 408
ออฟไลน์ ออฟไลน์

กระทู้: 2,334



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 07 พฤษภาคม 2010, 16:57:49 »

มันเป็น จังซี่ นี่เอง.... อาจจะต้องใช้ พวก ajax พวกนี้ แล้วมั้งครับ  Tongue Tongue





บันทึกการเข้า

สนใจทำธุรกิจไอศกรีมหนองโพ คลิกเลย | ลงประกาศโฆษณา ประกาศฟรี | เว็บฝากรูป | สคริปเกมแฟลช |
ผลิตภัณฑ์เสริมอาหารออกซิเจนน้ำ Adoxy
earncurrency
สมุนแก๊งเสียว
*

พลังน้ำใจ: 89
ออฟไลน์ ออฟไลน์

กระทู้: 574



ดูรายละเอียด
« ตอบ #4 เมื่อ: 07 พฤษภาคม 2010, 17:40:43 »

ลองใช้ session เก็บซิครับ ถ้า post มาแล้วก็ให้เก็บค่าอะไรซักอย่างลง session ไว้เพื่อเป็นตัวบอกว่า post มาแล้ว

เช่นเราใช้ $_SESSION['โพสแล้วเด้อ'] ถ้าเป็น 'ไม่' ก็ echo การต่อสู้ ถ้าเป็น 'ใช่' ก็ให้ทำงานตามต้องการ เช่น

if($_SESSION['โพสแล้วเด้อ']=='ไม่'){
  echo การต่อสู้ ;
  $_SESSION['โพสแล้วเด้อ']='ใช่';
}else{
  echo ตามใจดิ;
}
บันทึกการเข้า

kobkung
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 103
ออฟไลน์ ออฟไลน์

กระทู้: 1,312



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 07 พฤษภาคม 2010, 17:45:27 »

นึกไม่ค่อยออก งงๆคำถาม ลองตั้งตัวแปรตัวนึง แล้วแก้เป็น 0 กับ 1 แล้วไป if เอา ใช่ป่าวไม่รู้ งง
บันทึกการเข้า

เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
Smilephp.com รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262

งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ
impump
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 25



ดูรายละเอียด
« ตอบ #6 เมื่อ: 07 พฤษภาคม 2010, 17:55:28 »

มันก็ปกตินะครับ เว็บใหญ่ ๆ ทั่วไปผมก็เห็นว่ามันเป็นนะ ผมว่าคุณกำหนด limit หรืออะไรก็ได้จะดีกว่า
เช่น เวลาคุณจะให้สู้คุณก็เช็คไปก่อนว่าสู้ว่าสู้คนเดิมไหมถ้าคนเดิมก็ไม่ query หรือครบจำนวนครั้งแล้วก็ไม่ query อ่ะครับ แบบนั้นถึงจะรีเฟชก็ไม่เป็นไร
แนว ๆ นี้นะ ไม่รู้ว่าหมายถึงเรื่องนี้รึป่าว  Tongue
บันทึกการเข้า
ayeweb
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 5,205



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 07 พฤษภาคม 2010, 18:01:35 »

งงแทนอะครับ
บันทึกการเข้า


ข่าวไอที ข่าวสารไอที แอพไอโฟน บริการอื่นๆ
บริการ ตรวจหวย อื่นๆ ทั่วไปสาระน่ารู้ ความรู้ต่างๆ
Host ไทย เว็บผู้หญิงนะคะ แต่ผู้ชายก็เข้าได้ค่ะ
ตรวจหวย
ตรวจหวย ผลสลากกินแบ่งรัฐบาล>>
เช่าโฮสติ้ง Ruk-com
untitled
ก๊วนเสียว
*

พลังน้ำใจ: 42
ออฟไลน์ ออฟไลน์

กระทู้: 457



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 07 พฤษภาคม 2010, 18:22:19 »

อ่านคำถามแล้วงง เหมือนกัน  Tongue
บันทึกการเข้า

.
Nomkhonwaan
คนรักเสียว
*

พลังน้ำใจ: 31
ออฟไลน์ ออฟไลน์

กระทู้: 198



ดูรายละเอียด
« ตอบ #9 เมื่อ: 07 พฤษภาคม 2010, 18:25:30 »

ต้องการทำลาย $_POST หลังจากใช้งานเสร็จทันที่เลยใช่หรือปล่าวครับ php unset

ใช่ที่ต้องการหรือปล่าวอ่ะครับ  Embarrassed
บันทึกการเข้า
เก๋าลัดคุง
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 196
ออฟไลน์ ออฟไลน์

กระทู้: 3,906



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 07 พฤษภาคม 2010, 18:27:39 »

isset($session_view);
isset($path);
mysql_close($connect);
$_SESSION["login"] = "";
บันทึกการเข้า

Reality
สมุนแก๊งเสียว
*

พลังน้ำใจ: 51
ออฟไลน์ ออฟไลน์

กระทู้: 757



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 07 พฤษภาคม 2010, 18:40:33 »

ใช้ session เก็บการกระทำล่าสุดเอาไว้อ่ะครับ

ก่อนจะทำอะไรก็เช็คที่ session ก่อนครับ
บันทึกการเข้า

*You walk right into reality, While my heart's still wild and free.. 

Midnight Adventure
witthaya_pock
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 46



ดูรายละเอียด
« ตอบ #12 เมื่อ: 07 พฤษภาคม 2010, 18:54:54 »

สำหรับการแก้ปัญหาดังกล่าวที่ผมใช้คือ

หลังจากรับค่า POST มาแล้ว ให้ทำการ query ให้เรียบร้อย แล้วใช้คำสั่ง redirect ไปหน้าที่ต้องการ ถ้าเป็นหน้าเดิมกับฟอร์มก็ redirect ไปหน้านั้นเลย แต่ถ้าจำเป็นต้องนำค่าที่ได้จากการโพสมาใช้ต่อ ให้ใช้ Session เก็บค่าแทนครับ ยกตัวอย่างดังนี้

<?

if($_POST) {
     // นำค่าที่ได้ไป Update หรือ Insert ตามที่ต้องการ
     // ยกตัวอย่างว่าต้องการนำค่า point ไปใช้งานต่อเมื่อกลับไปหน้าเดิม
     $_SESSION["point"] = $_POST["point"];
     // หลังจากนั้นสั่ง Redirect ไปหน้าที่ต้องการ และปิดด้วย exit(); ป้องกันมันไปทำการรันข้อมูลด้านล่าง
     header("location: form.php");
     exit;
}


?>


และที่หน้า form.php ก็จะได้ค่า $_SESSION["point"] ที่มาจากฟอร์มแล้วครับ

ผมเข้าใจปัญหาที่อธิบายมา ที่หน้าที่รับค่า POST นั้นจะยังติดค่า Action การ Post อยู่ ถ้าเกิดการ Refresh หน้าจอ และผมคิดว่าจุดนี้ทำให้เกิด Bug ในโปรแกรมง่ายมากๆ ด้วย อยากแนะนำให้ redirect ซ้ำอีกทีจะช่วยให้ลดปัญหาเหล่านี้ลงได้ระดับนึงครับ

ปล. อธิบายเพิ่มเติมจากท่านอื่นๆ นะครับ เพราะูดูแล้วแนวทางเดียวกัน  wanwan004
« แก้ไขครั้งสุดท้าย: 07 พฤษภาคม 2010, 18:56:47 โดย witthaya_pock » บันทึกการเข้า

บริการออกแบบและจัดทำเว็บไซต์
Mayjung007
ก๊วนเสียว
*

พลังน้ำใจ: 16
ออฟไลน์ ออฟไลน์

กระทู้: 207



ดูรายละเอียด
« ตอบ #13 เมื่อ: 07 พฤษภาคม 2010, 21:00:00 »

Tongue พอดีว่า หลังจากรับค่า Post มาแล้ว ผมก็ให้มัน echo การต่อสู้ออกมาน่ะครับ
ถ้าเขารีเฟรสก็จะต่อสู้ซ้ำซึ่งเสียระบบ แต่ถ้าจะให้ refresh เลยทันทีนี่ เขาก็จะไม่สามารถอ่านการต่อสู้ได้อ่ะจิครับ

ลองเงื่อนไขด้วย isset กับ unset($_POST)
บันทึกการเข้า
ball6847
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 212
ออฟไลน์ ออฟไลน์

กระทู้: 4,174



ดูรายละเอียด
« ตอบ #14 เมื่อ: 07 พฤษภาคม 2010, 21:15:12 »

เด๋วนี้ไม่รู้ผมเป็นไร อ่านกระทู้ก็งง อ่านหลายๆคำตอบ ก็ยังงง - -*
สงสัยต้องเลิกอาชีพนี้แระ
บันทึกการเข้า

ZeCrof
สมุนแก๊งเสียว
*

พลังน้ำใจ: 39
ออฟไลน์ ออฟไลน์

กระทู้: 888



ดูรายละเอียด เว็บไซต์
« ตอบ #15 เมื่อ: 07 พฤษภาคม 2010, 22:02:10 »

ไม่รู้ว่า จขกท. ต้องการถามถึงอะไร แต่จับใจความว่าไม่ต้องรีฟรช

งั้นก็ใช้ AJAX โลดดดดดด   wanwan013
บันทึกการเข้า

ฮอนด้า เชียงใหม่ รถยนต์ฮอนด้า จังหวัดเชียงใหม่
ที่ดินเชียงใหม่ ฝากขายที่ดิน บ้าน เชียงใหม่ฟรี
iPhoenix
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 53
ออฟไลน์ ออฟไลน์

กระทู้: 1,384



ดูรายละเอียด
« ตอบ #16 เมื่อ: 07 พฤษภาคม 2010, 22:07:13 »

สำหรับการแก้ปัญหาดังกล่าวที่ผมใช้คือ

หลังจากรับค่า POST มาแล้ว ให้ทำการ query ให้เรียบร้อย แล้วใช้คำสั่ง redirect ไปหน้าที่ต้องการ ถ้าเป็นหน้าเดิมกับฟอร์มก็ redirect ไปหน้านั้นเลย แต่ถ้าจำเป็นต้องนำค่าที่ได้จากการโพสมาใช้ต่อ ให้ใช้ Session เก็บค่าแทนครับ ยกตัวอย่างดังนี้

<?

if($_POST) {
     // นำค่าที่ได้ไป Update หรือ Insert ตามที่ต้องการ
     // ยกตัวอย่างว่าต้องการนำค่า point ไปใช้งานต่อเมื่อกลับไปหน้าเดิม
     $_SESSION["point"] = $_POST["point"];
     // หลังจากนั้นสั่ง Redirect ไปหน้าที่ต้องการ และปิดด้วย exit(); ป้องกันมันไปทำการรันข้อมูลด้านล่าง
     header("location: form.php");
     exit;
}


?>


และที่หน้า form.php ก็จะได้ค่า $_SESSION["point"] ที่มาจากฟอร์มแล้วครับ

ผมเข้าใจปัญหาที่อธิบายมา ที่หน้าที่รับค่า POST นั้นจะยังติดค่า Action การ Post อยู่ ถ้าเกิดการ Refresh หน้าจอ และผมคิดว่าจุดนี้ทำให้เกิด Bug ในโปรแกรมง่ายมากๆ ด้วย อยากแนะนำให้ redirect ซ้ำอีกทีจะช่วยให้ลดปัญหาเหล่านี้ลงได้ระดับนึงครับ

ปล. อธิบายเพิ่มเติมจากท่านอื่นๆ นะครับ เพราะูดูแล้วแนวทางเดียวกัน  wanwan004

ผมว่าแบบนี้น่าจะตรงคำตอบมากที่สุดอ่ะ
รับมาแล้วเก็นใน session แล้ว redirect ไปที่อื่น
บันทึกการเข้า
GillBate
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 160
ออฟไลน์ ออฟไลน์

กระทู้: 1,236



ดูรายละเอียด
« ตอบ #17 เมื่อ: 08 พฤษภาคม 2010, 07:53:17 »

 wanwan017 มาตอบช้าไปหน่อย session ใช้ได้เลยครับ ขอบคุณครับ
 Lips Sealed ปล. ขออภัย ภาษาคนไม่แข็งแรง
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์