我正在使用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,因此会话管理并不是必需的。
感谢您的帮助
答案 0 :(得分:1)
我可以肯定地指出一件事......你的session_start()应该是打开php tahg之后的第一行
<?php
session_start();
应该在每个要调用$_SESSION
的页面上调用它。
否则会话将无法正常访问