无法从一个php paganother获取会话信息

时间:2018-06-10 13:18:14

标签: php html xml session login

我一直在寻找一些答案,但到目前为止我没有任何作用。我正在学习HTML,在进行简单登录时遇到了一些问题。我使用XML作为“数据库”和PHP来获取信息。这就是我的PHP代码的外观:

<?php
$error = false;
if(isset($_POST['login'])){
    $username = $_POST['username'];
    $password = $_POST['password'];
    if (file_exists('users/'.$username.'.xml')){
        $xml = new SimpleXMLElement('users/'.$username.'.xml',0,true);
        if($password == $xml->password){
            session_start();
            $_SESSION['username'] = $username;
            $direccion = $xml->direccion;
            $_SESSION['direccion'] = $direccion;
            header('Location: carta.php');
            die;
        }
    }
    $error = true;
}
?>

我知道我能够搜索XML文件并正确找到用户,因为它将我重定向到carta.php并且它给出了一个错误如果它没有建立,但在另一个php页面我无法从以下信息获取信息:< / p>

<?php echo $_SESSION['username']; ?> // This code is inside html code

我得到的错误是:注意:未定义的索引:C中的用户名:....

考虑到我已经使用

初始化会话
<?php session_start();?>

一开始,为什么我不能从回声中获取信息?

提前致谢,

卢卡。

1 个答案:

答案 0 :(得分:0)

一旦初始化,PHP会话就可以正常运行。 PHP可以通过两种常规方式处理会话,如后端服务器上的cookie会话或本地存储的会话。最后一个是默认的。 PHP也可以使用Memcache / Redis进行会话。

请确保您的PHP会话首先正常运行。你可以通过简单的测试来做到这一点。还要记住,session_start()需要包含在您希望使用会话环境的所有文件中!

<?PHP
 session_start();
 $_SESSION["mytest"] = time();
?>

然后尝试从另一个文件中回显那个Unix时间戳。

<?PHP
 session_start();
 echo "SESSION var(mytest): ".$_SESSION["mytest"]."\n";
?>

这应该按预期产生SESSION变量&#34; mytest&#34;设置在一个文件中,可以从另一个文件中检索。不要忘记在每个文件中启动该会话。这就是&#34;检索&#34; SESSION环境。

如果这对您有用,那么您可以继续使用$ _SESSION [&#34;用户名&#34;]代码,并且您知道代码有问题,而不是会话环境。

此外,session_start()需要初始化为第一件事,在你的条件下初始化它通常不是好习惯。