刷新后无法检测到PHP会话

时间:2013-03-25 16:35:56

标签: php session

我正在使用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,因此会话管理并不是必需的。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我可以肯定地指出一件事......你的session_start()应该是打开php tahg之后的第一行

<?php
   session_start();

应该在每个要调用$_SESSION的页面上调用它。 否则会话将无法正常访问