-
- /** 쿠키 클래스 쿠키 데이터를 저장하고, 읽고, 업데이트하고, 지웁니다. 접두사를 설정할 수 있습니다. 강제 시간 초과. 데이터는 문자열, 배열, 객체 등이 될 수 있습니다.
- * 날짜: 2013-12-22
- * 작성자: fdipzone
- * 버전: 1.0
- * 편집: bbs.it-home.org
- * 기능:
- * 공개 세트 쿠키 설정
- * 공개 get 쿠키 읽기
- * 공개 업데이트 쿠키 업데이트
- * 공개 지우기 쿠키 지우기
- * 공개 setPrefix 접두사 설정
- * 공개 setExpire 만료 시간 설정
- * 개인 인증 코드 암호화 /decryption
- * 개인 팩 팩 데이터
- * 개인 압축 풀기 데이터
- * 개인 getName 쿠키 이름 가져오기, 접두사 추가 처리
- */
-
- 클래스 쿠키{ / / 클래스 시작
- private $_prefix = ''; // 쿠키 접두사
- private $_securekey = 'ekOt4_Ut0f3XE-fJcpBvRFrg506jpcuJeixezgPNyALm'; // 암호화 키
- private $_expire = 3600; // 기본 만료
-
- / **초기화
- * @param String $prefix 쿠키 접두사
- * @param int $expire 만료 시간
- * @param String $securekey 쿠키 보안 키
- */
- 공용 함수 __construct($prefix='', $expire=0, $securekey=''){
-
- if(is_string($prefix) && $prefix!= ''){
- $this->_prefix = $prefix;
- }
-
- if(is_numeric($expire) && $expire>0){
- $this ->_expire = $expire
- }
-
- if(is_string($securekey) && $securekey!=''){
- $this->_securekey = $securekey; }
-
- /**쿠키 설정
- * @param String $name 쿠키 이름
- * @param 혼합 $value 쿠키 값은 문자열, 배열, 객체 등일 수 있습니다.
- * @param int $expire 만료 시간
- */
- 공개 함수 세트($name, $value, $expire=0){
-
- $cookie_name = $this- >getName( $name); $cookie_expire = time() ($expire? $this->_expire)
- $cookie_value = $this->pack($value, $cookie_expire ); > $cookie_value = $this->authcode($cookie_value, 'ENCODE', $this->_securekey)
-
- if($cookie_name && $cookie_value && $cookie_expire){
- setcookie($ cookie_name, $cookie_value, $cookie_expire);
- }
- }
-
- /**读取cookie
- * @param String $name 쿠키 이름
- * @return 혼합 쿠키 값
- */
- 공용 함수 get($name){
-
- $cookie_name = $this->getName($name);
-
- if(isset($_COOKIE[$cookie_name])){
-
- $cookie_value = $this->authcode ($_COOKIE[ $cookie_name], 'DECODE', $this->_securekey)
- $cookie_value = $this->unpack($cookie_value);
-
- return isset($cookie_value[0 ])? cookie_value[0] : null;
-
- }else{
- return null
- }
- }
-
- /**쿠키를 업데이트하고, 내용만 업데이트해야 하는 경우 set 메소드를 사용하세요
- * @param String $name cookie name
- * @param mix $value cookie value
- * @ 부울 반환
- */
- 공개 함수 업데이트 ($name, $value){
- $cookie_name = $this->getName($name)
-
- if(isset($_COOKIE[$cookie_name])){
- $old_cookie_value = $this->authcode($_COOKIE[$cookie_name], 'DECODE', $this->_securekey)
- $old_cookie_value = $this->unpack($old_cookie_value)
-
- if (isset($old_cookie_value[1]) && $old_cookie_vlaue[1]>0){ // 이전 만료 시간 가져오기
-
- $cookie_expire = $old_cookie_value[1]
-
- // 데이터 업데이트
- $cookie_value = $this->pack($value, $cookie_expire)
- $cookie_value = $this->authcode($cookie_value, 'ENCODE', $this-> ;_securekey);
-
- if($cookie_name && $cookie_value && $cookie_expire){
- setcookie($cookie_name, $cookie_value, $cookie_expire)
- return true; }
- false 반환
- }
-
- /**쿠키 지우기
- * @param String $name 쿠키 이름
- */
- 공용 함수clear($name){
- $cookie_name = $this-> ;getName($ name);
- setcookie($cookie_name);
- }
-
- /**접두사 설정
- * @param String $prefix 쿠키 접두사
- */
- public function setPrefix($prefix){
- if( is_string($prefix) ) && $prefix!=''){
- $this->_prefix = $prefix
- }
- }
-
- /**만료 시간 설정
- * @param int $expire cookieexpire
- */
- 공개 함수 setExpire($expire){
- if(is_numeric($expire) && $expire>0){
- $this-> _expire = $만료;
- }
- }
-
- /**获取쿠키 이름
- * @param String $name
- * @return String
- */
- 비공개 함수 getName($name){
- return $this->_prefix? $this->_prefix.'_'.$name : $name;
- }
-
- /**pack
- * @param 혼합 $data 데이터
- * @param int $expire 판단에 사용되는 만료 시간
- * @return
- */
- 전용 함수 팩($data, $expire){
- if($data===''){
- return '';
- }
-
- $cookie_data = 배열();
- $cookie_data['값'] = $data;
- $cookie_data['expire'] = $expire;
- return json_encode($cookie_data);
- }
-
- /**unpack
- * @param 혼합 $data 데이터
- * @return 배열(데이터, 만료 시간)
- */
- 비공개 함수 unpack($data){
- if($data===''){
- return array(' ', 0);
- }
-
- $cookie_data = json_decode($data, true);
- if(isset($cookie_data['value']) && isset($cookie_data['expire'])){
- if(time()<$cookie_data['expire']){ // 未过期
- return array($cookie_data['value'], $cookie_data['expire']);
- }
- }
- return array('', 0);
- }
-
- /**데이터 암호화/복호화
- * @param String $str 원본 텍스트 또는 암호문
- * @param String $Operation ENCODE 또는 DECODE
- * @return String 설정에 따라 일반 텍스트 또는 암호문 반환
- */
- 개인 함수 authcode($string, $operation = 'DECODE'){
- $ckey_length = 4; // 随机密钥长degree 取值 0-32;
- $key = $this->_securekey;
-
- $key = md5($key);
- $keya = md5(substr($key, 0, 16));
- $keyb = md5(substr($key, 16, 16));
- $keyc = $ckey_length ? ($작업 == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
-
- $cryptkey = $keya.md5($keya.$keyc);
- $key_length = strlen($cryptkey);
-
- $string = $Operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf(' 0d', 0).substr(md5($string.$keyb), 0, 16).$string;
- $string_length = strlen($string);
-
- $result = '';
- $box = 범위(0, 255);
-
- $rndkey = 배열();
- for($i = 0; $i <= 255; $i ) {
- $rndkey[$i] = ord($cryptkey[$i % $key_length]);
- }
-
- for($j = $i = 0; $i < 256; $i ) {
- $j = ($j $box[$i] $rndkey[$i ]) % 256;
- $tmp = $box[$i];
- $box[$i] = $box[$j];
- $box[$j] = $tmp;
- }
-
- for($a = $j = $i = 0; $i < $string_length; $i ) {
- $a = ($a 1) % 256;
- $j = ($j $box[$a]) % 256;
- $tmp = $box[$a];
- $box[$a] = $box[$j];
- $box[$j] = $tmp;
- $result .= chr(ord($string[$i]) ^ ($box[($box[$a] $box[$j]) % 256]));
- }
-
- if($Operation == 'DECODE') {
- if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
- return substr($result , 26);
- } else {
- return '';
- }
- } else {
- return $keyc.str_replace('=', '', base64_encode($result));
- }
- }
-
- } // 수업 종료
- ?>
제제대码
2,演示示例 데모.php
-
- 'Cookies.class.php'가 필요합니다.
-
- $type = isset($_GET['type'])? strtolower($_GET['type']) : '';
-
- if(!in_array($type, array('set','get','update','clear'))){
- exit('유형이 존재하지 않음');
- }
-
- $obj = 새 쿠키('구성원', 10); // obj
-
- switch($type){
-
- case 'set': // 设置
- $data = array(
- 'name' => 'fdipzone',
- '성별' => '남성'
- );
- $obj->set('나', $data, 5);
- echo '쿠키 설정';
- 휴식;
-
- 케이스 'get': // 读取
- $result = $obj->get('me');
-
- echo '
'; </li>
<li> print_r($result); </li>
<li> echo ' ';
-
- echo '쿠키 가져오기';
- 휴식;
-
- 케이스 '업데이트': // 更新
- $data = array(
- 'name' => 'angelababy',
- 'gender' => 'female'
- );
- $flag = $obj->update('me', $data);
-
- if($flag){
- echo '쿠키 업데이트 성공';
- }else{
- echo '쿠키 업데이트 false';
- }
-
- 휴식;
-
- 케이스 'clear': // 清除
- $obj->clear('me');
- echo '쿠키 지우기';
- 휴식;
- }
- ?>
复代代码
附,PHP Cookies操work类的源码下载地址
|