繁体   English   中英

如果不执行后的PHP代码

[英]PHP code after IF not executed

我有这个功能

public function logout() {
    if ($this -> user_model -> is_logged() === TRUE) {

        $user_id = $this -> user_model -> get_id();

        if (get_cookie('cookie_name') != FALSE) {

            delete_cookie('cookie_name');

            $new_cookie = md5(sha1(rand() . time() . $user_id));

            $this -> db -> set('cookie', $new_cookie);

            $this -> db -> update('users') -> where('id = ' . "'" . $user_id . "'");
        }

        $this -> session -> unset_userdata('user_id');

        echo "logged out? <a href=" . base_url() . ">click here</a>";
    } else {
        echo "no";
    }

}

什么时候

if (get_cookie('cookie_name') != FALSE) {

为true,如果执行了if括号内的代码,则执行另外两行代码:

   $this -> session -> unset_userdata('user_id');

   echo "logged out? <a href=" . base_url() . ">click here</a>";

当if代码未执行时,这些行将正确执行。

if内的代码已正确执行,因为然后删除了cookie并更新了数据库。

我正在使用Codeigniter 2.1.0,但我认为问题不在于此。

我的PHP版本是Ubuntu 11.04上的localhost下的5.3

如上所述,您的更新语句需要分开。 您需要修改这一行:

$this -> db -> update('users') -> where('id = ' . "'" . $user_id . "'"); 

对此:

$this->db->where('id = ' . "'" . $user_id . "'"); 
$this->db->update('users');

请注意,在update语句之后where子句被“清空”,并且如果您打算将来进行多个更新,则必须重复where子句。

暂无
暂无

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

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