我一直在寻找一些答案,但到目前为止我没有任何作用。我正在学习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();?>
一开始,为什么我不能从回声中获取信息?
提前致谢,
卢卡。
答案 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()需要初始化为第一件事,在你的条件下初始化它通常不是好习惯。