0

所以,我有这个 RPG 游戏,我一直在努力使用 PHP 来完成它。很长一段时间以来,我一直试图让一些会话工作,以将我的变量保存在各个页面上,这显然是它们的目的。这是我页面中与我的问题相关的代码:

第 1 行:<?php session_start(); ?>

这部分只是从用户填写的表格中确定结果以“创建他们的角色”

if ($_GET["race"]=="Human"){
$_SESSION["race"] = "Human";
$_SESSION["raceadj"] = "Human";
$_SESSION['racestrengthbonus'] = 0;
$_SESSION['raceendurancebonus'] = 0;
$_SESSION['raceintellectbonus'] = 0;
$_SESSION['racewillpowerbonus'] = 0;
$_SESSION['raceluckbonus'] = 0;

和班级

if ($_GET["career"]=="Knight"){
$_SESSION["career"] = "Knight";
$_SESSION['classstrengthbonus'] = 10;
$_SESSION['classendurancebonus'] = 10;
$_SESSION['classintellectbonus'] = 0;
$_SESSION['classwillpowerbonus'] = 0;
$_SESSION['classluckbonus'] = 0;
$_SESSION['RightHand'] = "Iron Sword";
$_SESSION['LeftHand'] = "Wooden Shield";
$_SESSION['Armor'] = "Iron Armor";

现在这是使用所有这些的代码。

<?PHP
echo "<div class=\"playerstats\" align=\"center\"><span class=\"playername\">".$_GET["name"]."</span><br><span class=\"redtext\">".$_SESSION["race"]." - ".$_SESSION['career']." - ".$_SESSION["health"]." HP - ".$_SESSION["gold"]." Gold</div>
<div style=\"float:left\"><span class=\"redtext\">Strength: </span>".$_SESSION["strength"]."<br>
<span class=\"redtext\">Endurance: </span>".$_SESSION["endurance"]."<br>
<span class=\"redtext\">Intellect: </span>".$_SESSION["intellect"]."<br>
<span class=\"redtext\">Willpower: </span>".$_SESSION["willpower"]."<br>
<span class=\"redtext\">Luck: </span>".$_SESSION["luck"]."<br></div>";

echo "<div class=\"equipment\"><span class=\"hover right\">".$_SESSION["RightHand"]."</span><span class=\"redtext\"> - Right Hand</span><br>
<span class=\"hover left\">".$_SESSION['LeftHand']."</span><span class=\"redtext\"> - Left Hand</span><br>
<span class=\"hover\">".$_SESSION['Armor']."</span><span class=\"redtext\"> - Armor</span><br></div>"; ?>

当我第一次加载这个页面时,一切都正确显示。姓名、种族等都显示了用户在他们的表单中输入的内容,但如果用户使用页面上的任何操作(这些只是在同一页面上显示结果的表单),那么它不会保存变量并直接进入种族和班级的“其他”结果,没有保存名称。我不确定我做错了什么。有什么帮助吗?

4

3 回答 3

2

确保session_start在开始时以及在每个页面中都使用会话变量。如果您忘记在开始时声明 session_start,则会话将被遗忘。

编辑:

page1.php

<?php session_start(); $_SESSION['bar'] = "SAVED SESSION"; ?>

page2.php

<?php session_start(); echo $_SESSION['bar']; ?> // outputs 'SAVED SESSION'

page3.php

<?php echo $_SESSION['bar']; ?> // outputs ''; session is forgotten

编辑:我在这里重新创建了您的测试游戏的一部分:http ://www.huinda.com/test/会话确实有效,您只是处理不正确,因此它们要么被意外删除,要么被意外设置为空。

于 2012-07-14T04:27:44.477 回答
0

也许对于 form method=POST 等 $_GET[var] 将找不到变量。尽管您说第一个视图它显示正确,但似乎已检索到值。

我怀疑您需要在 php.ini 文件中配置会话存储并重新启动您的 Web 服务器。

session.save_path

确保它是 Web 服务器的可写目录。

于 2012-07-14T04:49:27.607 回答
0

提交表单后,您确定在 $_GET 中有“种族”和“职业”吗?

于 2012-07-14T04:20:01.210 回答