[php] ลบ $_POST เพื่อไม่ให้ refresh ได้มั้ยครับ

เริ่มโดย GillBate, 07 พฤษภาคม 2010, 16:38:12

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

GillBate

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

bouy22

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

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

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

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

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

สนใจทำธุรกิจ[direct=http://www.nongphojsin.com/]ไอศกรีมหนองโพ[/direct]คลิกเลย | ลงประกาศโฆษณา [direct=http://www.marukopost.com/]ประกาศฟรี[/direct] | [direct=http://www.uuppic.com/]เว็บฝากรูป[/direct] | [direct=http://www.jeedgame.com/]สคริปเกมแฟลช[/direct] |
ผลิตภัณฑ์เสริมอาหารออกซิเจนน้ำ [direct=http://www.adoxy-thai.com/]Adoxy[/direct]

GillBate

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

bouy22

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





สนใจทำธุรกิจ[direct=http://www.nongphojsin.com/]ไอศกรีมหนองโพ[/direct]คลิกเลย | ลงประกาศโฆษณา [direct=http://www.marukopost.com/]ประกาศฟรี[/direct] | [direct=http://www.uuppic.com/]เว็บฝากรูป[/direct] | [direct=http://www.jeedgame.com/]สคริปเกมแฟลช[/direct] |
ผลิตภัณฑ์เสริมอาหารออกซิเจนน้ำ [direct=http://www.adoxy-thai.com/]Adoxy[/direct]

earncurrency

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

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

if($_SESSION['โพสแล้วเด้อ']=='ไม่'){
  echo การต่อสู้ ;
  $_SESSION['โพสแล้วเด้อ']='ใช่';
}else{
  echo ตามใจดิ;
}
[direct=http://www.marketviva.com]เปิดร้านฟรี[/direct]

kobkung

นึกไม่ค่อยออก งงๆคำถาม ลองตั้งตัวแปรตัวนึง แล้วแก้เป็น 0 กับ 1 แล้วไป if เอา ใช่ป่าวไม่รู้ งง
เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
[direct=http://www.smilephp.com]Smilephp.com[/direct] รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262
[direct=http://www.sellerorder.com ระบบหลังบ้าน จัดการ Order ขายของ  ช่วงนี้หาคนทดสอบฟรี ขอได้ตามเมลในเว็บ[/direct]
งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ

impump

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

ayeweb


[direct=https://www.bitimer.in.th/]ข่าวไอที[/direct] ข่าวสารไอที แอพไอโฟน บริการอื่นๆ
[direct=https://page.line.me/gnm7628z]บริการ ตรวจหวย[/direct] อื่นๆ ทั่วไปสาระน่ารู้ ความรู้ต่างๆ
[direct=https://goo.gl/XQp91t]Host ไทย[/direct] เว็บผู้หญิงนะคะ แต่ผู้ชายก็เข้าได้ค่ะ
[direct=https://page.line.me/oer1981h]ตรวจหวย[/direct]
ตรวจหวย ผลสลากกินแบ่งรัฐบาล>>
[direct=https://goo.gl/H3JCzK]เช่าโฮสติ้ง Ruk-com[/direct]

untitled

[direct=http://offerdeal2u.com].[/direct]

Nomkhonwaan

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

ใช่ที่ต้องการหรือปล่าวอ่ะครับ  :-[

เก๋าลัดคุง

[direct=https://www.mescript.com/]Pc Game Download [/direct]
[direct=https://www.mescript.com/]Pc Game Download [/direct]
[direct=https://www.mescript.com/]Pc Game Download [/direct]
[direct=https://www.mescript.com/]Computer Programming and Knowledge make By MeScript.com.com [/direct]
[direct=https://www.mescript.com/]รับพัฒนาเว็บไซต์ + รับจดโดเมน + Hosting ราคาถูก [/direct]

Reality

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

ก่อนจะทำอะไรก็เช็คที่ session ก่อนครับ
*You walk right into reality, While my heart's still wild and free.. 

[direct=http://midnightadventure.net]Midnight Adventure[/direct]

witthaya_pock

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

หลังจากรับค่า 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:
บริการออกแบบและจัดทำเว็บไซต์

Mayjung007

อ้างถึงจาก: GillBate ใน 07 พฤษภาคม 2010, 16:48:27
:P พอดีว่า หลังจากรับค่า Post มาแล้ว ผมก็ให้มัน echo การต่อสู้ออกมาน่ะครับ
ถ้าเขารีเฟรสก็จะต่อสู้ซ้ำซึ่งเสียระบบ แต่ถ้าจะให้ refresh เลยทันทีนี่ เขาก็จะไม่สามารถอ่านการต่อสู้ได้อ่ะจิครับ

ลองเงื่อนไขด้วย isset กับ unset($_POST)

ball6847

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

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

ZeCrof

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

งั้นก็ใช้ AJAX โลดดดดดด   :wanwan013:
[direct=http://www.hondachiangmai.com]ฮอนด้า เชียงใหม่[/direct] รถยนต์ฮอนด้า จังหวัดเชียงใหม่
[direct=http://www.cmteedin.com]ที่ดินเชียงใหม่[/direct] ฝากขายที่ดิน บ้าน เชียงใหม่ฟรี

iPhoenix

อ้างถึงจาก: witthaya_pock ใน 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:

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

GillBate

 :wanwan017: มาตอบช้าไปหน่อย session ใช้ได้เลยครับ ขอบคุณครับ
:-X ปล. ขออภัย ภาษาคนไม่แข็งแรง