在PHP中保持正确和错误的答案

时间:2014-11-23 21:08:38

标签: php

我是PHP的初学者。我试图用两个文件写一个数字猜测脚本。

try.php

<?php
echo "<html><head><title>Calculator Game From 1998</title></head><body>";
echo "<h1>Please Guess The Answer</h1>";
echo "<form name = \"myfirstform\" action  = \"formprocess.php\" method = \"POST\">";
echo "Enter Integer Between 1-5<br>";
echo "<input type = \"text\" name = \"firstdata\">";
echo "<br> <input type= \"submit\" value = \"submit\">";
echo "</form>";
echo "</body></html>";
?>

formprocess.php

<?php
$random = rand(1, 5);
echo "<html><head><title>Answer</title></head><body>";
if ($_POST["firstdata"] == $random) {
  echo "<h1><font color=\"green\">Congrulations!</h1></font><br>";
  echo "<h2>Answer was: </h2>";
  echo $random;
  echo "<br>";  
  echo "<a href=\"try.php\">new game</a>";
}
else {
  echo "<h1><font color=\"red\">Nope wrong answer</h1></font><br>";
  echo "<h2>Answer was: </h2>";
  echo $random;
  echo "<br>";  
  echo "<a href=\"try.php\">new game</a>";
}  
echo "</body></html>";
?>

问题是我想为每位球员保持胜利和数据。我尝试添加变量

$win = 0;
$lost = 0;

并尝试在if部分增加一个。但它不起作用,因为刷新页面后它会再次为0。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

每个请求都是无状态的,因此您需要一种在请求之间存储变量的方法。在您的情况下,最简单的方法是使用session variables

<?php
session_start();
if (!isset($_SESSION['win'])) {
    $_SESSION['win'] = 0;
}

// ...

if ($_POST["firstdata"] == $random) {
   $_SESSION['win'] += 1;

   // ...

从那里你应该能够弄清楚其余部分。

答案 1 :(得分:1)

您想要查看为formprocess.php文件使用$ _SESSION变量。一定要添加session_start();在打开php标签之后,然后将$ _SESSION变量分配给你的输赢变量:

$_SESSION['win'] = $win;

每次返回页面时,变量都会保留计数。如果你想添加到那个数字(在你完成一些检查以确定之后),你可以像这样添加它:

$_SESSION['win'] = ($_SESSION['win'] + $win);

这会将$ _SESSION ['win']变量中的总金额添加到$ win变量的总金额中,并在$ _SESSION ['win']中为您提供新的总金额。

还要确保添加session_start();在你的try.php文件中打开php标签之后,你也会丢失$ _SESSION变量。

答案 2 :(得分:1)

一种简单的方法是使用会话。您可以使用$_SESSION变量来跟踪分数。 $_SESSION变量存储在服务器上,用户计算机上的Cookie用于将浏览器会话与用户的$_SESSION变量相匹配:

作为formprocess.php的第一行,请加上:

<?php
session_start();
if (!isset($_SESSION['wins']) || !isset($_SESSION['losses'])) {
    $_SESSION['wins'] = 0;
    $_SESSION['losses'] = 0;
}

然后,在你的if陈述中,你会增加胜负:

if ($_POST["firstdata"] == $random) {
    $_SESSION['wins']++;
    // other stuff...
} else {
    $_SESSION['losses']++;
    // other stuff
}

echo "<p>You've won {$_SESSION['wins']} games and lost {$_SESSION['losses']}.</p>";
相关问题