Files
mina_auth/application/services/qcloud/minaauth/Csessioninfo_Service.php
2016-10-28 17:26:21 +08:00

190 lines
6.1 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: ayisun
* Date: 2016/10/1
* Time: 15:15
*/
class Csessioninfo_Service
{
public function __construct()
{
require_once('system/db/mysql_db.php');
}
/**
* @param $skey
* @param $create_time
* @param $last_visit_time
* @param $open_id
* @param $session_key
* @return bool
*/
public function insert_csessioninfo($params)
{
$insert_sql = 'insert into cSessioninfo SET skey = "' . $params['skey'] . '",create_time = ' . $params['create_time'] . ',last_visit_time = ' . $params['last_visit_time'] . ',open_id = "' . $params['openid'] . '",session_key="' . $params['session_key'] . '",user_info=\''.$params['user_info'].'\'';
$mysql_insert = new mysql_db();
return $mysql_insert->query_db($insert_sql);
}
/**
* @param $id
* @param $skey
* @param $last_visit_time
* @return bool
*/
public function update_csessioninfo_time($params)
{
$update_sql = 'update cSessioninfo set last_visit_time = ' . $params['last_visit_time'] . ' where id = ' . $params['id'];
$mysql_update = new mysql_db();
return $mysql_update->query_db($update_sql);
}
public function update_csessioninfo($params)
{
$update_sql = 'update cSessioninfo set last_visit_time = ' . $params['last_visit_time'] . ',skey = "' . $params['skey'] .'",user_info=\''.$params['user_info'].'\' where id = ' . $params['id'];
$mysql_update = new mysql_db();
return $mysql_update->query_db($update_sql);
}
/**
* @param $id
* @param $skey
* @return bool
*/
public function delete_csessioninfo($open_id)
{
$delete_sql = 'delete from cSessioninfo where open_id = "' . $open_id . '"';
$mysql_delete = new mysql_db();
return $mysql_delete->query_db($delete_sql);
}
public function delete_csessioninfo_by_id_skey($params)
{
$delete_sql = 'delete from cSessioninfo where id = ' . $params['id'];
$mysql_delete = new mysql_db();
return $mysql_delete->query_db($delete_sql);
}
/**
* @param $id
* @param $skey
* @return array|bool
*/
public function select_csessioninfo($params)
{
$select_sql = 'select * from cSessioninfo where id = ' . $params['id'] . ' and skey = "' . $params['skey'] . '"';
$mysql_select = new mysql_db();
$result = $mysql_select->select_db($select_sql);
if ($result !== false && !empty($result)) {
$arr_result = array();
while ($row = mysql_fetch_array($result)) {
$arr_result['id'] = $row['id'];
$arr_result['skey'] = $row['skey'];
$arr_result['create_time'] = $row['create_time'];
$arr_result['last_visit_time'] = $row['last_visit_time'];
$arr_result['open_id'] = $row['open_id'];
$arr_result['session_key'] = $row['session_key'];
$arr_result['user_info'] = $row['user_info'];
}
return $arr_result;
} else {
return false;
}
}
/**
* @param $open_id
* @return bool
*/
public function get_id_csessioninfo($open_id)
{
$select_sql = 'select id from cSessioninfo where open_id = "' . $open_id . '"';
$mysql_select = new mysql_db();
$result = $mysql_select->select_db($select_sql);
if ($result !== false && !empty($result)) {
$id = false;
while ($row = mysql_fetch_array($result)) {
$id = $row['id'];
}
return $id;
} else {
return false;
}
}
public function check_session_for_login($params){
$select_sql = 'select *_time from cSessioninfo where open_id = "' . $params['openid'] . '"';
$mysql_select = new mysql_db();
$result = $mysql_select->select_db($select_sql);
if ($result !== false && !empty($result)) {
$create_time = false;
while ($row = mysql_fetch_array($result)) {
$create_time = $row['create_time'];
}
if($create_time == false){
return false;
}else{
$now_time = time();
if(($now_time-$create_time)/86400>$params['login_duration']){
$this->delete_csessioninfo($params['openid']);
return true;
}else{
return true;
}
}
} else {
return true;
}
}
public function check_session_for_auth($params){
$result = $this->select_csessioninfo($params);
if(!empty($result) && $result !== false && count($result) != 0){
$now_time = time();
$create_time = $result['create_time'];
$last_visit_time = $result['last_visit_time'];
if(($now_time-$create_time)/86400>$params['login_duration']) {
$this->delete_csessioninfo_by_id_skey($params);
return false;
}else if(($now_time-$last_visit_time)>$params['session_duration']){
return false;
}else{
$params['last_visit_time'] = $now_time;
$this->update_csessioninfo_time($params);
return $result['user_info'];
}
}else{
return false;
}
}
/**
* @param $skey
* @param $create_time
* @param $last_visit_time
* @param $open_id
* @param $session_key
* @return bool
*/
public function change_csessioninfo($params)
{
if($this->check_session_for_login($params)){
$id = $this->get_id_csessioninfo($params['openid']);
if ($id != false) {
$params['id'] = $id;
if ($this->update_csessioninfo($params))
return $id;
else
return false;
} else {
return $this->insert_csessioninfo($params);
}
}else{
return false;
}
}
}