在PHP类中设置会话

时间:2013-01-07 22:30:49

标签: php class session

我正在创建一个用户类来处理我的登录。由于我希望在验证用户名和密码后在类中设置会话,我是否必须在类的顶部使用session_start(),在要设置会话的公共函数内,或实例的位置产生的?也许它可以进入函数_construct()?

这就是我要打电话给班级的方式:

<php

include('user_class.php');
$user = new user;
$user->login($username,$password);


?>

3 个答案:

答案 0 :(得分:5)

你可以添加session_start();在文件的顶部,您将该课程包括在内。

所以

<?php
  session_start();
  include('user_class.php');
  $user = new user;
  $user->login($username,$password);
?>

会起作用。

答案 1 :(得分:2)

在您的用户类旁边创建一个会话类。

然后,用户类只是将自己存储到会话类中,而不需要关心调用session_start,这是会话类的工作。

<php

include('session_class.php');
include('user_class.php');


$session = new session;

if ($session->hasRegisteredUser()) {
    $user = $session->getRegisteredUser();
} else {
    $user = new user;        
    $user->login($username, $password);
    $session->setRegisteredUser($user);
}

这是否回答了您的问题,或者您现在需要知道如何使用会话类进行操作?

答案 2 :(得分:2)

是的,您可以在类中使用会话,因为会话是php中的全局变量。

代码示例(添加新的会话变量):

<?php
    class sessionControle{
        ...
        ...
        public function addSession($index, $value){
            $_SESSION[$index] = $value;
            return $_SESSION[$index];
        }
    }
?>

在您的主要php文件中,您可以包含功能$_SESSIONS 全球 主文件中的代码:

<?php
    session_start();
    include_once("myClass.php");
    $Se = new sessionControle;
    echo $Se->addSession('User', 'Crx');

    //Double check here !!
    echo $_SESSION['User'];
?>

输出:Crx