>  기사  >  백엔드 개발  >  Easyrecoveryprofessional 세션은 PHP 클래스 공유를 위해 데이터베이스에 저장됩니다.

Easyrecoveryprofessional 세션은 PHP 클래스 공유를 위해 데이터베이스에 저장됩니다.

WBOY
WBOY원래의
2016-07-29 08:46:57954검색

复代码 代码如下:


class SessionToDB
{
private $_path = null ;
비공개 $_name = null;
비공개 $_pdo = null;
비공개 $_ip = null;
비공개 $_maxLifeTime = 0;
공용 함수 __construct(PDO $pdo)
{
session_set_save_handler(
array(&$this, 'open'),
array(&$this, 'close'),
array(&$this, '읽기'),
array(&$this, '쓰기'),
array(&$this, '파괴'),
array(&$this, ' gc')
);
$this->_pdo = $pdo;
$this->_ip = !empty($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null;
$this->_maxLifeTime = ini_get('session.gc_maxlifetime');
}
공개 함수 open($path,$name)
{
return true;
}
공개 함수 close()
{
return true;
}
공용 함수 읽기($id)
{
$sql = 'SELECT * FROM 세션 where PHPSESSID = ?';
$stmt = $this->_pdo->prepare($sql);
$stmt->execute(array($id));
if (!$result = $stmt->fetch(PDO::FETCH_ASSOC)) {
null을 반환합니다.
} elseif ($this->_ip != $result['client_ip']) {
return null;
} elseif ($result['update_time'] $this->_maxLifeTime < time()){
$this->destroy($id);
널을 반환합니다.
} else {
return $result['data'];
}
}
공용 함수 쓰기($id,$data)
{
$sql = 'SELECT * FROM 세션 where PHPSESSID = ?';
$stmt = $this->_pdo->prepare($sql);
$stmt->execute(array($id));
if ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
if ($result['data'] != $data) {
$sql = 'UPDATE 세션 SET 업데이트_시간 =? , 날짜 = ? PHPSESSID = ?';
$stmt = $this->_pdo->prepare($sql);
$stmt->execute(array(time(), $data, $id));
}
} else {
if (!empty($data)) {
$sql = '세션에 삽입(PHPSESSID, update_time, client_ip, data) VALUES (?,?,?, ?)';
$stmt = $this->_pdo->prepare($sql);
$stmt->execute(array($id, time(), $this->_ip, $data));
}
}
true를 반환합니다.
}
공용 함수 destroy($id)
{
$sql = 'DELETE FROM 세션 WHERE PHPSESSID = ?';
$stmt = $this->_pdo->prepare($sql);
$stmt->execute(array($id));
참을 반환합니다.
}
공용 함수 gc($maxLifeTime)
{
$sql = 'DELETE FROM 세션 WHERE update_time < ?';
$stmt = $this->_pdo->prepare($sql);
$stmt->execute(array(time() - $maxLifeTime));
참을 반환합니다.
}
}
시도{
$pdo = new PDO('mysql:host=localhost;dbname=rphp4zf', 'root','rickyfeng');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
새 SessionToDB($pdo);
} catch(PDOException $e) {
echo '오류: '.$e->getMessage();
}

以上就介绍了easyrecoveryprofessional은 php类分享, 包括了easyrecoveryprofessional 방식으로 사용 가능합니다.助。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.