Php 验证用户是否为loggedin以及会话和数据库是否匹配
我的页面控制器上有这个Php 验证用户是否为loggedin以及会话和数据库是否匹配,php,database,codeigniter,session,Php,Database,Codeigniter,Session,我的页面控制器上有这个 protected $auth = array(); function __construct(){ parent::__construct(); $this->auth['result'] = $this->is_logged_in(); } 这是我的core/base控制器,位于core文件夹中 public function is_logged_in(){ $session = $this->session->userdata(); if
protected $auth = array();
function __construct(){
parent::__construct();
$this->auth['result'] = $this->is_logged_in();
}
这是我的core/base控制器,位于core文件夹中
public function is_logged_in(){
$session = $this->session->userdata();
if(isset($session['logged_in'])){
return $session;
}else{ return FALSE; }
}
以上代码是否足够?还是我错过了一些合法身份验证的事情?我第一次尝试用户身份验证
还有,比如说,如果可以的话
我在accounts表中添加了一列“isLoggedin”
int(1),NULL.
每当我的登录函数被调用,并且有人成功登录时,我也会将一个值作为'isLoggedin'插入到1中。1=正确,2=错误
例如,在我的pages控制器中,因为每次加载时,它都会在我的基本控制器中运行is_logged_函数,并从那里返回会话数据
我会将从我的基本控制器返回的会话数据与“isLoggedin”列设置为1的accounts表中的会话数据进行比较
还有,快速提问
在我的模型中,有一个查询行:$result=$this->db->insert'accounts',$data
如果我返回$result,它是否根据查询的成功或失败返回TRUE/FALSE?如果inserted=1
我已经打印了$r$结果;但它显示了1。我不确定这个1在int值中是否表示TRUE
另外,如何声明布尔值?所以它会打印为真或假
我已经试过了,布尔$result,但它会作为解析错误返回。对于您的第一个问题,对于一个非常简单的案例,这就足够了。但在一个相当复杂的项目中,您需要检查更多的参数,如有效期、密码更改等 至于您的第二个,虽然您没有在代码或描述中指定,但从您的方法规范来看,我相信代码很可能是基于CodeIgniter的 你是对的。根据CodeIgniter文档,insert在成功时返回TRUE,在失败时返回FALSE,并且返回值应为bool类型
在codeigniter中,如果为TRUE,则返回1,如果为FALSE,则不返回任何内容,如果您打印r以检查结果。但是如果您执行var_dump,则将显示boolfalse/booltrue值。因此,如果您必须根据您的代码检查会话是否维护,您可以这样检查:-
function __construct()
{
parent::__construct();
$this->auth['result'] = $this->is_logged_in();
if(($this->auth['result']))
{
echo "session is set";/*Here your session is set*/
}
else
{
echo "session is not set";/*Here your session is not set*/
}
}
function __construct()
{
parent::__construct();
$this->auth['result'] = $this->is_logged_in();
if(($this->auth['result']))
{
echo "session is set";/*Here your session is set*/
}
else
{
echo "session is not set";/*Here your session is not set*/
}
}