[PHP] กำหนดได้มั้ยครับว่า พอคนเข้าเว็บ กด f5 แล้วให้เปลี่ยน action ตรง url?

เริ่มโดย charlie, 13 สิงหาคม 2009, 12:02:38

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

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

charlie

คืองี้ครับ ปกติ url เดิม คือ shoppingcart.php?action=CartAdd...บลาๆ

อยากให้ พอที่เครื่องผู้ใช้ กด f5 หรือ refreshpage แล้ว ให้เปลี่ยนคำใน url ตรง action เป็น CartGet แทนหน่ะครับ

ขอบคุณล่วงหน้าสำหรับทุกคำตอบครับ :)

morizaki

ทางเทคนิคเท่าที่ทำมา คิดว่าไม่น่าจะได้นะครับ :)

ยังไงรอความคิดเห็นคนอื่นก็ดีครับ โลกนี้มันกว้างผมอาจจะยังอยู่ในกะลาก็เป็นได้ :P

mr.sit

ใช้ session ครับ เข้าหน้า cartadd ครั้งแรก ใส่ค่าอะไรสักอย่างใส่ session ไว้ พอ reload หน้าเว็บที่ cartadd เดิม ก็เช็กว่าถ้ารอบนี้ session ไม่เป็นค่าว่างๆ (แสดงว่าเคยเข้าหน้านี้ไปแล้ว) ก็ให้ redirect ไปหน้า cartget แทน ชะเอิงเงย

charlie

อ้างถึงจาก: mr.sit ใน 13 สิงหาคม 2009, 14:05:30
ใช้ session ครับ เข้าหน้า cartadd ครั้งแรก ใส่ค่าอะไรสักอย่างใส่ session ไว้ พอ reload หน้าเว็บที่ cartadd เดิม ก็เช็กว่าถ้ารอบนี้ session ไม่เป็นค่าว่างๆ (แสดงว่าเคยเข้าหน้านี้ไปแล้ว) ก็ให้ redirect ไปหน้า cartget แทน ชะเอิงเงย

ยกตัวอย่างเป็น code คร่าวๆ ได้มั้ยครับ ผมไม่ค่อยสันทัดเรื่อง session

morizaki

อ้างถึงจาก: mr.sit ใน 13 สิงหาคม 2009, 14:05:30
ใช้ session ครับ เข้าหน้า cartadd ครั้งแรก ใส่ค่าอะไรสักอย่างใส่ session ไว้ พอ reload หน้าเว็บที่ cartadd เดิม ก็เช็กว่าถ้ารอบนี้ session ไม่เป็นค่าว่างๆ (แสดงว่าเคยเข้าหน้านี้ไปแล้ว) ก็ให้ redirect ไปหน้า cartget แทน ชะเอิงเงย

oh oh oh get เลย ทำไมเข็มขัดผมสั้นล่ะเนี่ย(*คาดไม่ถึง ;D)
เขียน Coding น่าจะประมาณนี้มั้ง
shoppingcart.php?action=CartAdd

<?
  if (empty($_SESSION["mAction"])) { //อันนี้ทำงานครั้งแรกกรณีมาจาก CartAdd
     $_SESSION["mAction"]=$_GET["action"];
     //จะทำอะไรใน case CartAdd ก็ว่าไป
  }
  else { //กด F5 อีกครั้ง จะมีค่าใน session อยู่แล้วมันจะเข้ามาตรงนี้
      //จะทำอะไรใน case CartGet ก็ใส่ไป
     //กรณีอยากให้เข้า CartAdd ใหม่หลัง CartGet ต้องเคลียร์ค่า session ด้วยครับ
     $_SESSION["mAction"]=""; //อันนี้แล้วแต่นะ
  }
?>


คงประมาณนี้น่ะครับ มั่วไปเรื่อยอย่าเชื่อมาก... ;D ;D

ohmohm

ไม่อยากให้ พอเข้าถึงหน้า หยิบใส่ตะกร้า้ ถ้าสมมติกด refresh แล้ว ไม่อยากให้หยิบเพิ่มใช่ไหมครับ
พูกถึงเรื่อง refresh แล้ว นึกถึง AJAX เลย
เปลี่ยนแนว เป็นไม่มี CartAdd เลย ให้กดที่สินค้่าแล้วเป็น AJAX ไปเรียก CartAdd ไหวไหมครับ

charlie

อ้างถึงจาก: ohmohm ใน 13 สิงหาคม 2009, 23:59:22
ไม่อยากให้ พอเข้าถึงหน้า หยิบใส่ตะกร้า้ ถ้าสมมติกด refresh แล้ว ไม่อยากให้หยิบเพิ่มใช่ไหมครับ
พูกถึงเรื่อง refresh แล้ว นึกถึง AJAX เลย
เปลี่ยนแนว เป็นไม่มี CartAdd เลย ให้กดที่สินค้่าแล้วเป็น AJAX ไปเรียก CartAdd ไหวไหมครับ

เหอๆ ยังไม่เคยใช้ AJAX เลยครับ แต่สงสัยคงต้องลองดูหน่อย

ผมลองเกือบทุกวิธีแล้วครับ ไม่ว่า ใช้ session cookie ยังไม่ได้ผลเลย :'(
แต่ไม่แน่อาจจะมีคนทำได้ก็ได้

charlie

อ้างถึงจาก: morizaki ใน 13 สิงหาคม 2009, 15:48:48
อ้างถึงจาก: mr.sit ใน 13 สิงหาคม 2009, 14:05:30
ใช้ session ครับ เข้าหน้า cartadd ครั้งแรก ใส่ค่าอะไรสักอย่างใส่ session ไว้ พอ reload หน้าเว็บที่ cartadd เดิม ก็เช็กว่าถ้ารอบนี้ session ไม่เป็นค่าว่างๆ (แสดงว่าเคยเข้าหน้านี้ไปแล้ว) ก็ให้ redirect ไปหน้า cartget แทน ชะเอิงเงย

oh oh oh get เลย ทำไมเข็มขัดผมสั้นล่ะเนี่ย(*คาดไม่ถึง ;D)
เขียน Coding น่าจะประมาณนี้มั้ง
shoppingcart.php?action=CartAdd

<?
 if (empty($_SESSION["mAction"])) { //อันนี้ทำงานครั้งแรกกรณีมาจาก CartAdd
    $_SESSION["mAction"]=$_GET["action"];
    //จะทำอะไรใน case CartAdd ก็ว่าไป
 }
 else { //กด F5 อีกครั้ง จะมีค่าใน session อยู่แล้วมันจะเข้ามาตรงนี้
     //จะทำอะไรใน case CartGet ก็ใส่ไป
    //กรณีอยากให้เข้า CartAdd ใหม่หลัง CartGet ต้องเคลียร์ค่า session ด้วยครับ
    $_SESSION["mAction"]=""; //อันนี้แล้วแต่นะ
 }
?>


คงประมาณนี้น่ะครับ มั่วไปเรื่อยอย่าเชื่อมาก... ;D ;D

ก็ยังไม่ได้หน่ะครับ เหอๆ แต่มะเป็นไร ขอบคุณครับสำหรับคำตอบ เด๋วว่าจะลองใช้ AJAX อย่างที่คุณ ohmohn บอกดู :)

barco



barco


barco

เสร็จและ ไปลองเล่นดูละกันครับเทสแล้วใช้งานได้

code
<?php
session_start
();  
if(!isset(
$_SESSION['maction'])){
    
$_SESSION['maction'] = $_GET["action"];
echo 
$_SESSION['maction'];
// ทำอะไรก็ว่าไป
}
else if(
$_SESSION['maction']=='CartAdd'){
    
header("location:test01.php?action=CartGet");
$_SESSION['maction']='CartGet';
// ทำอะไรก็ว่าไป
}
else{
// กรณีกด f5 อีกรอบ อยากทำอะไรก็ว่าไป จะส่งไป if แรกใหม่หรือ ใน elseif ก็แล้วแต่
echo "success : )";
        
session_destroy();
}

?>


morizaki

อ้างถึงจาก: barco ใน 14 สิงหาคม 2009, 00:35:32
session_start();   รึัยังเอ่ย  :P


:o ถูกต้องเลยครับ อันนั้นผมเขียนแบบไม่ได้รัน...... แหะ....แหะ......ขออภัย...ข้าน้อยสมควรตาย :-X :-X
ใส่ session_start(); ก่อนด้วยครับ ;D ;D

เก๋าลัดคุง

<?php session_start() ; ?>

ไว้บนบรรทัดแล้วของ Page


<?php session_start() ; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
[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]

charlie

อ้างถึงจาก: barco ใน 14 สิงหาคม 2009, 01:18:29
เสร็จและ ไปลองเล่นดูละกันครับเทสแล้วใช้งานได้

code
<?php
session_start
();  
if(!isset(
$_SESSION['maction'])){
    
$_SESSION['maction'] = $_GET["action"];
echo 
$_SESSION['maction'];
// ทำอะไรก็ว่าไป
}
else if(
$_SESSION['maction']=='CartAdd'){
    
header("location:test01.php?action=CartGet");
$_SESSION['maction']='CartGet';
// ทำอะไรก็ว่าไป
}
else{
// กรณีกด f5 อีกรอบ อยากทำอะไรก็ว่าไป จะส่งไป if แรกใหม่หรือ ใน elseif ก็แล้วแต่
echo "success : )";
        
session_destroy();
}

?>



ได้แล้วค้าบบบบบบบบบ!!!   

ขอบคุณมากครับคุณ barco :'(