2014-11-23 29 views
0

我是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。

我该怎么做?

+0

,你需要将它存储不知何故。您可以将其添加到数据库或使用会话。 – andrewsi 2014-11-23 21:18:28

+0

使用这许多'echo'属性来输出HTML并不是一个很好的方法。您的代码将很快无法读取。看到其他问题,如http://stackoverflow.com/questions/7054780/what-is-the-recommended-way-to-embed-html-codes-inside-php-codes – 2014-11-23 22:17:32

回答

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>"; 
+0

伟大的作品。非常感谢 – JayGatsby 2014-11-23 21:29:35

1

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

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

// ... 

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

    // ... 

从那里你应该能够找出其余的。

1

你想看看为你的formprocess.php文件使用$ _SESSION变量。一定要添加session_start();开幕PHP标签之后,然后指定你的$ _SESSION变量,你赢和损失变量是这样的:

$_SESSION['win'] = $win; 

当你每次回到页面,变量将举行计数。如果你想加入到这个数字(你已经做了一些检查,以确保后),您可以添加到它,像这样:

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

这将在$ _SESSION添加总量[“双赢”]变量到$ win变量中的总量,并在$ _SESSION ['win']中给你一个新的总和。

另外一定要添加session_start();就在你的try.php文件中打开php标签之后,否则你将失去$ _SESSION变量。

相关问题