PHP会话变量未保留

PHP会话变量未保留,php,session,save,Php,Session,Save,所以,我有一个RPG游戏,我一直在努力使用PHP的地狱。我一直在尝试让一些会话工作相当长的一段时间,以便在不同的页面上保存我的变量,这显然是它们的目的。以下是与我的问题相关的代码: 第1行: 这部分只是根据用户填写的“创建他们的角色”表单确定结果 对班级来说呢 if ($_GET["career"]=="Knight"){ $_SESSION["career"] = "Knight"; $_SESSION['classstrengthbonus'] = 10; $_SESSION['classe

所以,我有一个RPG游戏,我一直在努力使用PHP的地狱。我一直在尝试让一些会话工作相当长的一段时间,以便在不同的页面上保存我的变量,这显然是它们的目的。以下是与我的问题相关的代码:

第1行:

这部分只是根据用户填写的“创建他们的角色”表单确定结果

对班级来说呢

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>"; ?>


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

提交表单后,您确定在$\u GET中有“race”和“career”吗?

确保您在开始时和每个页面中都有
会话启动
。如果您忘记在开始时声明session\u 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
//输出“”;会议被遗忘了

编辑:我在这里重新创建了测试游戏的一部分:会话确实有效,但您只能错误地处理它,因此它们要么被意外删除,要么被意外设置为null。

可能是因为form method=POST,所以$\u GET[var]将找不到变量。虽然您说的是第一个视图,但它显示正确,因此似乎检索到了值

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

session.save_路径

  • 见:

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

不确定你的意思,哈哈。这个RPG游戏是用来教我PHP的。在原始页面上,我有以下内容开始表单:
,所以我不知道我是否在那里做错了什么?好吧,我现在只处理一个页面。此页面上正在处理会话的表单将发送到此同一页面,以处理发送到该页面的信息。发送信息后,所有会话似乎都未设置。您的表单似乎未正确设置/处理。让我看看你表格中的代码。@Zenox我在这里重新创建了你的测试游戏:。。。那么,告诉我这似乎有什么问题?如果会话工作正常,您可以进行调试,创建两个测试页面,一个会话_start()$_会话['test']=“test”;然后是第二页,session_start();变量转储($\会话);在运行第一个页面后,查看是否有测试,然后运行第二个页面。如果显示,则可能是表单有问题,或者您忘记在任何输入之前添加session\u start。
<?php echo $_SESSION['bar']; ?> // outputs ''; session is forgotten