如何使用会话将用户活动存储到数据库:Codeigniter

时间:2015-12-15 10:22:02

标签: php database codeigniter session

我有这个网站http://mxcounters.com/traffictack/

用户来到网站注册并登录。登录后,他们搜索他们的域名以进行一些seo评论。现在我想将每个用户搜索分别存储到数据库中。然后,我将每个用户显示搜索到的域名到他们的帐户页面。

我已经尝试了一些最后的活动方法来存储在数据库中,但它没有那么有用,请帮助我:

       $time_since = now() - $this->session->userdata('last_activity');
       $interval = 300;
       // Do nothing if last activity is recent
       if ($time_since < $interval) return;
       // Update database
       $updated = $this->db
       ->set('last_activity', now())
       ->where('id', $user_id)
       ->update('users');

2 个答案:

答案 0 :(得分:2)

试试这个

在conteroller中

$userId = $this->session->userdata('user_id');
if(empty($userId)){
    redirect('login'); # this for user not logged
}
else{
    $search  = $this->input->post('domain');

    $resut = $this->method_name->serach_domain($userId, $search);
    if(!empty($resut)){

        #have data. if user come here set another methods for Insert data
        $this->model_name->insert_search_result(($userId, $search);

    }
    else{

        # nodata
        echo "No result found"
    }

}

在模型中

function insert_search_result(($userId, $search){

    $data = array(
       'user_id' => $userID ,
       'search' => $search,
       'timestamp' => date('Y-m-d H:i:s')
    );

    $this->db->insert('mytable', $data);
}

答案 1 :(得分:0)

如果要插入每个搜索,可以使用:

首先创建一个存储记录的表。

CREATE TABLE `usersearchs` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` VARCHAR(50) NOT NULL DEFAULT '0',
`search` VARCHAR(50) NOT NULL DEFAULT '0',
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX `id` (`id`)
)
ENGINE=InnoDB
;

在此表中,时间戳会自动添加到条目中。

然后在每次搜索时使用插入查询:

INSERT INTO usersearch (user_id, search) VALUES ($user_id, $search_string);

如果您只想更新last_activity列:

更改您的表格,在每次更新表格后,更新last_activity并使用第二列,例如将searchString命名为包含最后搜索的项目。

ALTER TABLE `users`
CHANGE COLUMN `last_activity` `last_activity` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
ADD COLUMN `searchString` VARCHAR(50) NOT NULL AFTER;

然后对每次搜索使用查询:

UPDATE users SET searchString = `$searchstring` WHERE id = $userID

使用数据库时请使用右转义(PDO预处理语句是一个不错的选择)