>백엔드 개발 >PHP 튜토리얼 >PHP 세션의 애플리케이션 코드 예제에 대한 자세한 소개

PHP 세션의 애플리케이션 코드 예제에 대한 자세한 소개

黄舟
黄舟원래의
2017-03-22 09:42:281579검색

본 글은 php세션의 세부적용에 관한 내용을 주로 소개하고 있으며, 필요한 친구들은

php세션 고급적용

을 참고하세요. 🎜>웹 기술에서는 세션이 매우 중요합니다. 웹 페이지는 무상태 연결 프로그램이므로 사용자의 탐색 상태를 알 수 없습니다. 세션을 통해 사용자가 다시 웹 서버에 요청을 제출할 때 확인을 위해 사용자의 관련 정보가 기록될 수 있습니다.

예를 들어 사용자가 전자상거래 웹사이트를 탐색할 때 세션이 없으면 사용자는 탐색할 때마다 계정 비밀번호를 입력해야 합니다.

1. 세션 임시 파일

서버에서 모든 사용자 세션을 임시 디렉터리에 저장하면 세션의 보안과 안전성이 저하됩니다. 서버. 효율성. 서버에 저장된 사이트를 여는 것은 매우 느립니다.

PHP 함수session_save_path() 함수를 사용하여 세션 임시 파일을 저장하면 임시 파일 저장으로 인한 서버 효율성 저하 및 사이트 열기 속도 저하 문제를 완화할 수 있습니다.

샘플 코드는 다음과 같습니다.

<?php
$path ="./tmp/";    //设置session存储的路径
session_save_path($path);
session_start();
$_SESSION[&#39;userName&#39;]=true;
?>

참고


session_save_path()는 session_start()보다 먼저 실행되어야 합니다.

2, 세션 캐시

세션 캐싱은 웹 페이지의 콘텐츠를 IE 클라이언트의 임시 인터넷 파일 폴더에 임시 저장하는 것입니다. , 캐시 시간을 설정할 수 있습니다.


세션 캐시는 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();

?>

실행 결과는 다음과 같습니다.


PHP 세션의 애플리케이션 코드 예제에 대한 자세한 소개

3, 세션 데이터베이스 저장

PHP에서 세션 데이터베이스 저장은 주로 session_set_save_handler() 함수를 통해 구현됩니다. 구체적인 구문은 다음과 같습니다.

bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc)

PHP 세션의 애플리케이션 코드 예제에 대한 자세한 소개

6개의 매개변수(함수)는 아래 패키지로 나누어져 있습니다.

객체지향프로그래밍을 학습하고 나면 누구나 더 명확하게 이해할 수 있습니다.

(1) session_open() 함수를 캡슐화합니다. 코드는 다음과 같습니다.

function _session_open($save_path,$session_name){
global $handle;
$handle =mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;)or die(&#39;数据库连接失败!&#39;);
mysql_select_db(&#39;db_database11&#39;,$handle)or die(&#39;数据库不存在&#39;);
return(true);
}

(2) session_close() 함수를 캡슐화합니다. 코드는 다음과 같습니다.

function _session_close(){
global $handle;
mysql_close($handle);
return(true);
}

(3) session_read() 함수를 캡슐화하고 함수에 현재 시간의 UNIX

타임스탬프 를 설정하고 $key를 기준으로 Session 명함 및 내용을 검색합니다. 코드는 다음과 같습니다.

function _session_read($key){
golbal $handle;     //全局变量$handle 连接数据库
$time =time();     //设定当前时间
$sql ="select session_data from tb_session where session_key = &#39;$key&#39; and session_time>&#39;$time&#39;";
$result =mysql_query($ssql,$handle);
$row =mysql_fetch_array($result);
if($row){
return($row[&#39;session_data&#39;]);
}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 =&#39;$key&#39; and session_time>$lapse_time";
$result =mysql_query($sql,$handle);
if(mysql_num_rows($result)==0){  //没有结果
$sql ="insert into tb_session values(&#39;$key&#39;,&#39;$data&#39;,$lapse_time)";
$result =mysql_query($sql,$handle);
}else{
$sql ="update tb_session set session_key=&#39;$key&#39;,session_data =&#39;$data&#39;,session_time =$lapse_time where session_key =&#39;$key&#39;";
$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 =&#39;$key&#39;";
$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 세션의 애플리케이션 코드 예제에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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