0

出于练习的原因,我用一些 JQuery 动画用 PHP 编写了一个小德州扑克游戏。每个动作(下注、弃牌、过牌、加注、跟注)都通过 HTML 表单提交给 PHP 脚本。

现在不幸的是,用户可以在看到整个棋盘和计算机的牌并通过使用浏览器的后退按钮相应地调整他的下注结构后,才能够回到第一轮下注。

有什么实用的方法可以防止这种情况发生吗?

谢谢,咖啡屋

PS:

例如,一个按钮脚本是这样的:

if (isset($_POST['call']) AND $_SESSION['bettingcap'] == 1){
    $_SESSION['kapitalspieler'] -= $smallbet; // deduct money from player
    $_SESSION['pot'] += $smallbet; // add this to the pot
    $_SESSION['bettingcap'] = 0; // After call go to next street, so cap is 0
    $_SESSION['buttonmodus']=1; // I want to show only certain buttons
    $_SESSION['whichstreet']=$_SESSION['whichstreet']+1; // go to next street
    $_SESSION['animateagain']='yes'; // show JQuery Animation

}
4

2 回答 2

1

您需要使请求无效。这意味着一个请求紧随其后。

为此,您可以在游戏中存储该用户的所有请求。

如果发送新请求,则只能在末尾添加。

您可以通过初始化游戏并从各方传递所有事件直到特定事件来在内存中创建游戏。

该模型确实允许您防止作弊以及像以前游戏的查看模式一样重新玩游戏。

  • 00 创建游戏ID:#7575
  • 01名选手入座:1名;编号:#12
  • 02 玩家入座:2;编号:#56
  • 03 玩家入座:3;编号:#87
  • 04 牌组洗牌顺序:这里的牌顺序。
  • 05 ...

因此,您保留这些事件,如果用户发送了新请求,您可以检查当前情况是否正常。

于 2013-03-13T11:07:37.197 回答
0

也许这样的事情会奏效。

<SCRIPT type="text/javascript">
    window.history.forward();
    function noBack() { window.history.forward(); }
</SCRIPT>
</HEAD>
<BODY onload="noBack();"
    onpageshow="if (event.persisted) noBack();" onunload="">

链接

于 2013-03-13T10:35:15.310 回答