1

我正在开发一个需要使用会话的 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,所以会话管理并不是真正必要的。

谢谢您的帮助

4

1 回答 1

1

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

<?php
   session_start();

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

于 2013-03-25T16:40:35.903 回答