【问题标题】:PHP condition fails while using Session使用 Session 时 PHP 条件失败
【发布时间】:2018-05-19 16:35:11
【问题描述】:

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

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

我收到了用户的输入。问题是,当游戏第一次加载时,用户输入输入并点击提交时,游戏将无法运行。条件($_SESSION["bet"] != NULL) 为真,资金未定义。

有什么方法可以正确设置吗?是否有一些 PHP 方法可以初始化变量一次然后只在会话开始时工作,然后其余代码可以处理该变量如何更新?如果用户现在点击提交而没有任何内容,则资金变量会被初始化,因此游戏仍然可以运行,但无法正常启动。

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

每次用户提交NULL 输入时,资金变量都会初始化为 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 如何更新。

我找到了一种方法,但这不是正确的方法,这就是我寻求帮助的原因。

谢谢。

【问题讨论】:

  • 你需要展示一些更相关的代码。你如何初始化会话?发生的第一个代码是什么?
  • 也许我的问题不在于会话...只是每次用户提交空值时,资金都会设置为 1000。我想更改它...而游戏不会除非用户输入空(或 null)值,否则启动。
  • 我觉得信息够了,游戏大概300行代码。我只是不希望每次用户输入任何内容时都将资金重置为 1000,并且我希望游戏在用户输入有效输入时开始。
  • 没有看到你的代码我不知道你是怎么做到的。您需要一些方法来初始化用户,他们的资金设置为您提供的任何内容。然后,当他们下注时,就会减少他们的资金。看来您在分离时将所有这些功能混合在一起。
  • 我更新了它...我希望我能修复这个小错误,它将完成这个项目 100%

标签: php session


【解决方案1】:

好的,试试这个。

因此,如果资金未设置,则设置它,一旦设置它就不会再次设置,因为它已设置。

那么后面的任何条件都可以。

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
}

注意:您在使用 session 时可能会遇到问题,因为它会在任何地方存储他们的赌注,因此下注会设置 session,然后导航到其他地方并返回,他们的赌注仍将与以前一样。也许这无关紧要。
您也可能不想检查赌注是否为空,更可能是空的或其他什么。测试任何一种方式来确定。

【讨论】:

  • 正在测试,它可能正在工作......我会更新......让我看看
  • 可能有用的是设置它的 else 来代替显示“您当前的资金现在是”。所以第一次设置它并声明“开始资金是”然后让他们知道现在是什么(在移除赌注等之后)
  • 非常感谢您的帮助,这比我编码的方式要好得多,我知道为什么我没有考虑 isset.. 我几年前写的,现在只想完善它。希望我能问你更多问题,再次感谢!
  • 不能给你打勾,因为我在这里太新了。
  • 是的,不用担心 :)( 很高兴为您提供帮助。不过,如果您愿意,可以接受答案 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
相关资源
最近更新 更多