【发布时间】:2013-03-25 16:35:56
【问题描述】:
我正在开发一个需要使用会话的 PHP 应用程序。 我使用三层架构开发了我的应用程序。
我只使用一个 PHP 页面和虚拟表单来提交用户操作,所有处理都是通过实体/函数特定的类进行的。
第一次打开页面时,我会检查变量,如果之前从未打开过,我会显示登录表单。
当我收到来自此表单的帖子时,我会检查用户,如果用户正常,我会开始会话
if(isset($_POST['login']))
{
if($_POST['login']=='login')
{
//valida user
$accoes=$du->login($_POST['username'],$_POST['password']);
if($accoes===false)
{
echo "<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">";
echo "alert('Erro no Login');";
echo "</SCRIPT>";
unset($accoes);
}
else
{
//utilizador valido
echo "<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">";
echo "alert('Utilizador válido');";
echo "</SCRIPT>";
session_start();
$user="teste";
$screen="logged";
$_SESSION['user']=$user;
}
}
}
虽然通过用户操作刷新此页面时,我看不到会话 ID 或会话变量。
我是否遗漏了诸如 session_commit 或其他指令之类的内容?
在尝试检查会话变量之前是否也应该出现 session_start()?
可能是 PHP.ini 文件中缺少某些内容吗?
当我重新加载时,我要做的第一件事是检查会话变量
if(session_id() != '') {
$user=$_SESSION['user'];
}
我知道我应该知道如何解决这个问题,但是直到现在我对 PHP 的体验还只是 Flex/Flash,所以实际上并不需要会话管理。
感谢您的帮助
【问题讨论】:
-
你是否在每个页面的顶部调用了 session_start()?
-
在尝试检查会话变量之前是否也应该出现 session_start()? 是的