PHP会话变量没有停留

时间:2012-07-14 04:17:08

标签: php session save

所以,我有这个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>"; ?>

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

3 个答案:

答案 0 :(得分: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/会话确实有效,你只能错误地处理它,所以它们会被意外删除或被意外设置为空。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

也许对于form method = POST,所以$ _GET [var]将找不到变量。虽然您说第一个视图它看起来正确所以似乎检索了值。

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

session.save_path

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