이 글은 주로 PHP 세션 적용 관련 정보를 자세하게 소개하고 있으니 필요한 친구들은 참고하시면 됩니다.
php 세션 고급 응용
웹 페이지는 웹 기술에서 매우 중요합니다. 눈에 보이지 않는 상태 연결 프로그램이므로 사용자의 브라우징 상태를 알 수 없습니다. 세션을 통해 사용자가 다시 웹 서버에 요청을 제출할 때 확인을 위해 사용자의 관련 정보가 기록될 수 있습니다.
예: 사용자가 전자상거래 웹사이트를 탐색할 때 세션이 없다면 사용자는 탐색할 때마다 계정 비밀번호를 입력해야 합니다.
관련 주제 추천: php 세션 (사진, 텍스트, 동영상, 사례 포함)
1, 세션 임시 파일
서버에서 모든 사용자 세션이 임시 디렉터리에 저장되는 경우 , 서버의 보안과 효율성이 저하됩니다. 서버에 저장된 사이트를 여는 것은 매우 느립니다.
PHP 함수 session_save_path() 함수를 사용하여 세션 임시 파일을 저장하면 임시 파일 저장으로 인해 발생하는 서버 효율성 저하 및 사이트 열기 속도 저하 문제를 완화할 수 있습니다.
샘플 코드는 다음과 같습니다.
<?php $path ="./tmp/"; //设置session存储的路径 session_save_path($path); session_start(); $_SESSION['userName']=true; ?>
참고
session_save_path()는 session_start()보다 먼저 실행되어야 합니다.
2, 세션 캐싱
세션 캐싱은 웹 페이지의 콘텐츠를 IE 클라이언트의 Temporary INternet Files 폴더에 임시 저장하는 것으로, 캐시 시간을 설정할 수 있습니다.
세션 캐시는 session_cache_limiter() 함수를 사용하며 그 구문은 다음과 같습니다.
string session_cache_limiter([string cache_limiter]);
cache_limiter 매개변수는 공개 또는 비공개입니다. 동료 세션은 서버 측이 아니라 클라이언트 측에 있습니다. 서버에는 표시되지 않습니다.
캐시 시간을 설정하려면 session_cache_expire() 함수를 사용하세요. 구문은 다음과 같습니다.
int session_cache_expire([int new_cahche_expire]);
매개변수 new_cahche_expire는 세션 캐시의 시간(분)입니다.
참고:
이 두 세션 함수는 session_start() 함수 이전에 실행되어야 합니다.
세션 캐시 페이지의 샘플 코드는 다음과 같습니다.
<?php session_cache_limiter("private"); $cache_limit =session_cache_limiter(); //开启客户端缓存 echo "缓存限制为:".$cache_limit."\n"; session_cache_expire(30); $cache_expire = session_cache_expire(); //设定客户端缓存时间 echo "客户端缓存时间为:".$cache_expire."分钟\n"; session_start(); ?>
실행 결과는 다음과 같습니다.
3, 세션 데이터베이스 저장
PHP에서 세션의 데이터베이스 저장은 주로 session_set_save_handler() 함수를 통해 구현됩니다. 구체적인 구문은 다음과 같습니다.
bool session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)
다음은 이러한 6개의 매개변수(함수)로 구분됩니다. 당신은 배우고 있습니다. 객체 지향 프로그래밍을 마치면 모든 사람이 더 명확하게 이해하게 될 것입니다.
(1) session_open() 함수를 캡슐화합니다. 코드는 다음과 같습니다.
function _session_open($save_path,$session_name){ global $handle; $handle =mysql_connect('localhost','root','root')or die('数据库连接失败!'); mysql_select_db('db_database11',$handle)or die('数据库不存在'); return(true); }
(2) session_close() 함수를 캡슐화합니다. 코드는 다음과 같습니다.
function _session_close(){ global $handle; mysql_close($handle); return(true); }
(3) session_read() 함수를 캡슐화합니다. , UNIX 타임스탬프 기능에서 현재 시간을 설정하고 $key를 기반으로 세션 명함 및 콘텐츠를 검색합니다. 코드는 다음과 같습니다.
function _session_read($key){ golbal $handle; //全局变量$handle 连接数据库 $time =time(); //设定当前时间 $sql ="select session_data from tb_session where session_key = '$key' and session_time>'$time'"; $result =mysql_query($ssql,$handle); $row =mysql_fetch_array($result); if($row){ return($row['session_data']); }else{ return(false); } }
(4) session_write() 함수를 캡슐화합니다. 이 함수는 세션의 만료 시간을 설정하고 쿼리 결과가 비어 있는 경우 세션의 이름과 내용을 찾습니다. 그런 다음 session_id, session_name 및 만료 시간을 기반으로 페이지의 세션을 데이터베이스에 삽입합니다. 쿼리 결과가 비어 있지 않으면 $key를 기준으로 데이터베이스의 Session 저장소 정보를 수정합니다. 코드는 다음과 같습니다:
function _session_write($key,$data){ global $handle; $time = 60*60; $lapse_time =time()+$time; //得到UNIX时间戳 $sql = "select session_data from tb_session where session_key ='$key' and session_time>$lapse_time"; $result =mysql_query($sql,$handle); if(mysql_num_rows($result)==0){ //没有结果 $sql ="insert into tb_session values('$key','$data',$lapse_time)"; $result =mysql_query($sql,$handle); }else{ $sql ="update tb_session set session_key='$key',session_data ='$data',session_time =$lapse_time where session_key ='$key'"; $result =mysql_query($sql,$handle); } return($result); }
(5) session_destroy()를 캡슐화하고 $key를 기반으로 데이터베이스에서 Sessin을 삭제합니다. 코드는 다음과 같습니다.
function _session_destroy(){ global $handle; $sql ="delete from tb_session where session_key ='$key'"; $result =mysql_query($sql,$handle); }
(6) session_gc()를 캡슐화하고 만료된 세션을 기반으로 삭제합니다. 세션 만료 시간에 대한 샘플 코드는 다음과 같습니다.
functin _session_gc($expiry_time){ global $handle; $sql ="delete from tb_session where session_expiry_time<$expiry_time"; $result =mysql_query($sql,$handle); return($result); }
구체적인 코드 실행은 하지 않겠습니다. 객체지향 프로그래밍 학습이 끝나면 보여드리겠습니다.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.
관련 권장사항:
php 및 codeigniter에서는 session-쿠키를 자세히 사용합니다.
위 내용은 PHP 세션 적용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!