我正在创建一个用户类来处理我的登录。由于我希望在验证用户名和密码后在类内设置会话,我是否必须在类的顶部使用 session_start() ,在要设置会话的公共函数内,或者实例在哪里创建?也许它可以进入函数_construct()?
这就是我想调用类的方式:
<php
include('user_class.php');
$user = new user;
$user->login($username,$password);
?>
您可以添加 session_start(); 在您要包含该类的文件的顶部。
所以
<?php
session_start();
include('user_class.php');
$user = new user;
$user->login($username,$password);
?>
会工作。
在您的用户类旁边,也为您自己创建一个会话类。
然后用户类只是将自己存储到会话类中,不需要关心是否调用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);
}
这是否回答了您的问题,还是您现在需要知道如何使用会话课程来解决问题?
是的,您可以在类中使用会话,因为会话是 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