>  기사  >  백엔드 개발  >  php_php 기술에 구현된 SESSION 클래스

php_php 기술에 구현된 SESSION 클래스

WBOY
WBOY원래의
2016-05-16 20:29:321015검색

이 기사의 예에서는 PHP로 구현된 SESSION 클래스를 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

PHP에서 SESSION의 적용은 필수적이며 가장 중요한 기능 중 하나입니다. SESSION은 네트워크 응용 프로그램에서 "세션"이라고 합니다. 이러한 방식으로 사용자가 웹 사이트 페이지 간에 이동할 때 저장된 SESSION 값은 손실되지 않고 사용됩니다. 세션 내내 지속됩니다. 쉽게 말하면 사용자 A가 온라인에 접속하면 ID(a) 값이 생성되어 저장되며, ID(A) 값이 로그아웃되지 않은 경우 다음 접속 시 웹사이트는 귀하의 ID(A)를 기억합니다. ) 값, 이때 온라인으로 귀하의 ID(A) 값을 호출할 수 있습니다. 예를 들어 귀하의 ID(A) 값을 다시 방문하시면 됩니다.

PHP에서 SESSION 값을 적용하는 방법은 매우 간단합니다. 상단에 session_start()만 입력하면 SESSION을 사용할 수 있습니다. 또한 SESSION 주기, SESSION 호출, SESSION 데이터 유효 기간, SESSION 저장, SESSION 로그아웃 등 많은 속성이 있습니다. 이러한 속성이 있으면 비교적 표준화된 SESSION 응용 세션인 것 같습니다.

다음은 Session의 가장 기본적인 속성 값을 통합한 완전한 Session 클래스입니다. 그 중 열기, 닫기 및 정리가 PHP 프로그래밍 사양에 부합하는 것도 좋은 습관입니다. 참고로 웹사이트에서 Session 클래스를 광범위하게 사용하지 않는 경우 기본적으로 SESSION 클래스를 사용할 필요가 없습니다.

코드 복사 코드는 다음과 같습니다.
/**
* 파일 설명 세션 클래스
* ================================================ ================
* 파일명 session.class.php
*------------------------------------------------ - ---------------
* 적용환경 : PHP5.2.x / mysql 5.0.x
*------------------------------------------------ - ---------------
* 저자 04ie. com
*------------------------------------------------ - ---------------
*작성시기 2010-2-1
* ================================================ ================
*/
수업 세션
{
/**
*세션 기본 유효 시간
* @접속 공개
* @var ineger $_expiry
*/
공개 $_expiry = 3600;
/**
* 유효한 도메인 이름
* @접속 공개
* @var 문자열 $_domain
*/
공개 $_domain = '.jb51.net';
//初始화
공개 함수 __construct()
{
ini_set('session.use_trans_id', 0);
ini_set('session.gc_maxlifetime', $this->_expiry);
ini_set('session.use_cookie', 1);
ini_set('session.cookie_path', '/');
ini_set('session.cookie_domain', $this->_domain);
session_module_name('사용자');
session_set_save_handler(
array(&$this, 'open'),
배열(&$this, '닫기'),
배열(&$this, '읽기'),
배열(&$this, '쓰기'),
array(&$this, '파괴'),
배열(&$this, 'gc')
);
세션_시작();
}
/**
*타회 세션
* @접속 공개
* @param 문자열 $savePath
* @param 문자열 $sName
* @return true
*/
공개 함수 open($savePath, $sName)
{
$this->_conn = mysql_connect('localhost', 'root', '');
mysql_select_db('데이터베이스');
mysql_query('SET NAMES "utf8"');
사실을 반환;
}
/**
* 关闭세션
* @접속 공개
* @return 부울
*/
공개 함수 close()
{
return mysql_close($this->_conn);
}
/**
* 读取 세션
* @접속 공개
* @param string $sid 세션ID
* @return 혼합
*/
공개 함수 읽기($sid)
{
$sql = "sessionid='%s'인 세션에서 데이터를 선택하세요.";
$sql = 스프린트f($sql, $sid);
$res = mysql_query($sql, $this->_conn);
$row = mysql_fetch_assoc($res);
반환!$행 ? null : $row['데이터'];
}
/**
* 쓰기 세션
* @접속 공개
* @param string $sid 세션ID
* @param string $data 직렬화된 세션 콘텐츠 직렬화
* @return
*/
공개 함수 쓰기($sid, $data)
{
$만료 = 시간() $this->_expiry;
$sql = "세션으로 교체(sessionid,expiratio
n,데이터) VALUES ('%s', '%d', '%s')";
$sql = sprintf($sql, $sid, $expiry, $data);
mysql_query($sql, $this->_conn);
사실을 반환;
}
/**
* 销毁 세션
* @접속 공개
* @param string $sid 세션ID
* @return
*/
공개 함수 파괴($sid)
{
$sql = "sessionid='%s'인 세션에서 삭제";
$sql = 스프린트f($sql, $sid);
mysql_query($sql, $this->_conn);
사실을 반환;
}
/**
* 만료된 세션 정리
* @접속 공개
* @param 정수 $time
* @return
*/
공개 함수 gc($time = 0)
{
$sql = "만료 < '%d'인 세션에서 삭제";
$sql = sprintf($sql, 시간());
mysql_query($sql, $this->_conn);
mysql_query('OPTIMIZE 테이블 세션');
사실을 반환;
}

希望本文所述对大家的PHP程序设计有所帮助。

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