【问题标题】:PHP issue using sessions使用会话的 PHP 问题
【发布时间】:2014-02-11 11:13:04
【问题描述】:

我是会话新手,因为我现在需要使用一大堆会话,所以似乎不可避免地会产生问题。

有人告诉我只使用 PHP 和 HTML 来制作纸牌游戏 (BlackJack)。到目前为止一切顺利,拿到了卡片和里面的所有东西,开始、击球、站立和重置都很好。

我通过使用表单来做到这一点。一个表格开始,一个表格,一个表格,一个表格。通过使用会话,它会提醒它拥有的所有卡片和分数。

但是当我开始插入投注系统时,问题就来了。我从一个标准银行开始,它是 100

我的开始表单中还有一个输入字段,用于下注。当用户点击开始表单时,它会调用这个函数:

// Calculate the bank
function calc_bank() {
   $_SESSION["bet"] = $_POST["bet"];
   $_SESSION["bank"] = 100 - $_SESSION["bet"];
}

这个也可以,当用户点击开始时,它会回显 95(最小赌注是 5)。而当用户点击hit时,它会进入hit表单,记住所有session并显示95,和stand一样。

这是我的问题,比如说,我按下击球键并获得 23 分。 $_SESSION["bank"] 没有任何反应,下注将保持 95。但是当用户将下一个赌注更改为 20 时。然后单击开始,它将再次计算银行,正如您可以猜到的那样,它将花费标准 100 - 20 并制作 SESSION 80,而应该是 75。

我真的希望我已经为你们解释清楚了我的问题,如果没有请告诉我!

提前致谢!

【问题讨论】:

    标签: php forms session


    【解决方案1】:

    问题是每次调用函数时,$_SESSION["bank"] 等于 100 减去赌注。

    试试这个

    function calc_bank() {
       if (!isset($_SESSION["bank"])){$_SESSION["bank"]=100;}
       $_SESSION["bet"] = $_POST["bet"];
       $_SESSION["bank"] = $_SESSION["bank"] - $_SESSION["bet"];
    }
    

    【讨论】:

    • 非常感谢!所以基本上,如果没有设置会话库,它会说 100,但如果设置了它,它将使用设置的值来代替?我是会话新手,但感谢我一直在寻找的答案!
    【解决方案2】:

    您应该在创建游戏时填写$_SESSION['bank'] 值,以便它始终可用。然后,当用户执行操作时,您可以对它做任何您想做的事情。

    此外,您在会话银行计算函数中对银行价值进行了硬编码。也许您应该考虑在另一个函数中动态设置银行值?这使您可以选择更改每场比赛的起始金额。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-15
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多