cookie和session

当代码启用session,

<?php
    session_start();
    //setcookie('cookie_test_name', 'yuanjunq',time()+5*60);
    //$_SESSION['name'] = 'NAME';
    //$_SESSION['age'] = 20;
    echo "<pre>";
    var_dump($_SESSION, $_COOKIE);

请求这段代码:
在这里插入图片描述

此时服务器端,在/tmp目录下,会生成一个session文件:
在这里插入图片描述

再次刷新:
在这里插入图片描述

阅读一下cookie里面的信息(mac 下 chrome的cookie文件是 ~/Library/Application Support/Google/Chrome/Default/Cookies):

使用 vim Cookies可以知道这是一个SQLite文件,可以使用sqlite3命令查看内容:
在这里插入图片描述

编辑代码

<?php
    session_start();
    setcookie('cookie_test_name', 'yuanjunq',time()+5*60);
    $_SESSION['name'] = 'NAME';
    $_SESSION['age'] = 20;
    echo "<pre>";
    var_dump($_SESSION, $_COOKIE);

刷新页面,打印信息:
在这里插入图片描述

再次刷新页面,会重新set-cookie的过期时间:
在这里插入图片描述

再查看一下cookie里面的信息
在这里插入图片描述

查看一下 cookies表结构:
在这里插入图片描述

#格式化之后

CREATE TABLE cookies (
creation_utc INTEGER NOT NULL,
host_key TEXT NOT NULL,
name TEXT NOT NULL,
value TEXT NOT NULL,
path TEXT NOT NULL,
expires_utc INTEGER NOT NULL,
is_secure INTEGER NOT NULL,
is_httponly INTEGER NOT NULL,
last_access_utc INTEGER NOT NULL,
has_expires INTEGER NOT NULL DEFAULT 1,
is_persistent INTEGER NOT NULL DEFAULT 1,
priority INTEGER NOT NULL DEFAULT 1,
encrypted_value BLOB DEFAULT '',
firstpartyonly INTEGER NOT NULL DEFAULT 0,
UNIQUE (host_key, name, path)
);

查看session文件里的内容:在这里插入图片描述



session_save_path('/tmp/mysession');设置session文件的存储目录 , 需在 session_start()函数之前调用

session_save_path('3;/tmp/mysession');将创建如下目录的session存储:"/tmp/mysession/7/h/l/sess_7hl5bijf1rpk1l4pcg59bjpjt0"

如果浏览器禁用COOKIE, 则需要使用URL或者FORM表单传递PHPSESSID, 服务端使用 session_id()函数 设置PHPSESSID .


自定义session处理方式:

<?php

	session_set_save_handler('open1','close1','read1','write1','destroy1','gc1');
	function open1($path='',$name=''){
		echo 'this is open.';
		return true;
	}
	function close1(){
		echo 'this is close1.';
		return true;
	}
	function read1($id=0){
		return 'name|s:5:"kNAME";age|i:520;';  // 直接copy 某个session文件里的内容,所以可以正常解析
	}
	function write1($id=0,$data=[]){
		echo 'this is write1.';
		return true;
	}
	function destroy1($id=0){
		echo 'this is destroy1.';
		return false;
	}
	function gc1($time){
		echo 'this is gc1.';
		return true;
	}

	session_start();

	echo "<pre>";
	var_dump($_SESSION, $_COOKIE);

运行结果:
在这里插入图片描述

参考:
SQLite
SQLite 教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值