繁体   English   中英

验证用户是否已登录以及会话和数据库是否匹配

[英]Authenticate if user is loggedin and if session and db matches

我的页面控制器上有这个。

protected $auth = array();

function __construct(){
parent::__construct();
$this->auth['result'] = $this->is_logged_in();
}

这是我位于核心文件夹的核心/基本控制器。

public function is_logged_in(){
$session = $this->session->userdata();
if(isset($session['logged_in'])){
    return $session;
}else{ return FALSE; }
}

以上代码够吗? 还是我缺少进行合法身份验证的东西?(我第一次尝试进行用户身份验证)

另外,例如,可以吗?

我在帐户表上添加了列“ isLoggedin ”。

int(1),NULL.

每当我的登录功能被调用并且有人成功登录时,我还将添加一个值作为' isLoggedin '插入1。1 1=true, 2=false

因此,例如在我的页面控制器中,由于每次加载时,它将在我的基本控制器中运行is_logged_in()函数,并将从那里返回会话数据。

我会将从我的基本控制器返回的会话数据与帐户表中的“ isLoggedin ” col设置为1的会话数据进行比较。

另外,快速提问。

在我的模型中,有一条查询行: $result = $this->db->insert('accounts',$data);

如果我返回$result ,它是否根据查询的成功或失败返回TRUE / FALSE?(如果插入= 1?)

我已经做了一个print_r($result); 但它显示为1。我不确定此1是否仅在int值中表示TRUE。

另外,如何声明布尔值? 因此它将打印为TRUE或FALSE。

我已经尝试过, boolean $result但是它将作为解析错误返回。

在codeigniter中,如果为TRUE则返回1,但如果为FALSE则不返回任何内容,如果您执行print_r()检查结果结果。但是如果您执行var_dump()则将向您显示bool(false)/ bool(true )值。 因此,如果您必须根据代码检查会话是否维护,则可以像这样检查:

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*/
        }
    }

对于第一个问题,对于一个非常简单的情况,这已经足够。 但是在一个相当复杂的项目中,您需要检查更多参数(例如有效时间,密码更改等)。

至于您的第二个代码,虽然您没有在代码或描述中指定,但是从您的方法规范来看,我认为代码很可能基于CodeIgniter。

你是对的。 根据此处的CodeIgniter文档,insert TRUE on success, FALSE on failure返回TRUE on success, FALSE on failure则返回TRUE on success, FALSE on failure ,返回值应为bool类型。

insert([$table = ''[, $set = NULL[, $escape = NULL]]])

Parameters: 
    $table (string) – Table name
    $set (array) – An associative array of field/value pairs
    $escape (bool) – Whether to escape values and identifiers
Returns:    
    TRUE on success, FALSE on failure
Return type:    
    bool

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM