使用Session

时间:2018-05-19 16:35:11

标签: php session

我用PHP制作了纸牌游戏,但我遇到了一些问题。

if ($_SESSION["bet"] != NULL)
{
    echo "Your starting bankroll is: " . $_SESSION["bankroll"] . "<br>";
    echo "Your bet is: " . $_SESSION["bet"] . "<br>";
}

我正在收到用户的意见。问题是,当游戏首先加载,并且用户输入输入并点击提交时,游戏将无法工作。条件($_SESSION["bet"] != NULL)给出为真,并且未定义资金。

有没有办法可以正确设置?是否有一些PHP方法可以初始化变量一次然后只在会话启动时工作,然后其余代码可以处理该变量如何更新?如果用户单击提交时没有任何内容,则会初始化bankroll变量,因此游戏仍然有效,但启动不正确。

if ($_SESSION["bet"] == NULL)
{  
  $_SESSION["bankroll"] = 1000;
}

每次用户提交NULL输入时,bankroll变量都会初始化为1000。我想改变它。

更多代码...正在更新...

session_start();

$_SESSION["bet"] = $_POST["bet"];

echo "<br>";

//print_r($_SESSION);

if ($_SESSION["bet"] != NULL)

{

echo "Your starting bankroll is: " . $_SESSION["bankroll"] . "<br>";

echo "Your bet is: " . $_SESSION["bet"] . "<br>";

}


if ($_SESSION["bet"] == NULL)

{  

  $_SESSION["bankroll"] = 1000;

}


else if ($_SESSION["bet"] > 1000 || $_SESSION["bet"] < 0)

{  

   echo " Please enter between 0 and 1000.";

}


else if ($_SESSION["bet"] > $_SESSION["bankroll"])

{

  echo "You can't enter more than what you have.";

}

else

{

$deck = array();

for($x = 0; $x < 54; $x++) {

    $deck[$x] = $x;

}

shuffle($deck);

//Then more stuff.  This one for example...

    if(($houseSuits[0] == -100) || ($houseSuits[1] == -100) || ($houseSuits[2] == -100) || ($houseSuits[3] == -100))
         {
            echo "<br>";
            echo '<center> PLAYER WINS! (HOUSE HAS JOKER) </center>';
            echo "<br>";
            $_SESSION["bankroll"] = $_SESSION["bankroll"] + $_SESSION["bet"]; //THESE NEED TO BE ADDRESSED.
         }

我只想找到一种方法,在开始时将BANKROLL初始化为1000。我做的方式是提交NULL值,因为假设用户不会再次提交空值。

我想要将BANKROLL初始化为1000,然后让游戏关注BANKROLL如何获得更新。

我找到了一个方法,但这不是一个正确的方式,所以我要求帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

好的尝试一下。

因此,如果没有设置资金,那么设置它,一旦设置它就不会再次设置,因为它已经设置。

然后任何条件都没问题。

session_start();

// Initialise bankroll if not already
if (!isset($_SESSION['bankroll'])) {
    $_SESSION['bankroll'] = 1000;
    echo "Your starting bankroll is: " . $_SESSION["bankroll"] . "<br>";
}

$_SESSION['bet'] = $_POST['bet'];

if ($_SESSION['bet'] != NULL) {
    echo "Your bet is: " . $_SESSION['bet'] . "<br>";
}


if ($_SESSION['bet'] > 1000 || $_SESSION['bet'] < 0) {

    echo " Please enter between 0 and 1000.";

} elseif ($_SESSION['bet'] > $_SESSION['bankroll']) {

    echo "You can't enter more than what you have.";

} else {
    // Your card game stuff
}

注意:您可能会遇到使用会话的问题,因为它会在任何地方存储他们的投注,因此发出投注会设置会话,然后导航到其他地方然后返回并且他们的投注仍将像以前一样。也许这没关系。
你也可能不想检查赌注是否为空,更多可能是空的或其他什么。测试两种方式以确定。