PHP__Session&Cookie

本文深入讲解了Cookie和Session的工作原理及应用技巧,包括如何设置生命周期、实现七天免登录等功能,并探讨了它们在HTTP请求中的作用。此外还介绍了通过序列化处理数据的方法以及使用Ajax进行异步操作的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cookie 是存在本地客户端的
1/ setcookie(); 设置cookie
/**
* 参1 cookie的名字
* 参2 cookie的值
* 参3 生命周期,为 0 时代表当前对话, 可以自定义设置时间,自定义时间的时候要加上当前时间
* 参4 作用目录 / 代表根目录 整个项目都能访问,如果没设置 默认为当前目录
*/
setcookie( 'a' , 123 , 0 , '/' );

2/ 七天免登陆思想
//更改session_name,必须放在session_start之前
//更改session_name为了更安全
session_name('hdphp');
//当开启session时,客户端会自动生成一个cookie文件,服务器端也会自动生成一个session文件
// 并且服务器端和客户端的session_name和session_id 值一样 判断是否是同一用户
//但是cookie默认生命周期为0 session默认生命周期为1440秒
session_start();
//所以再次拿到服务端的session文件的name和id值,重新设置一条生命周期为7天的,覆盖之前的
//这样就算关闭浏览器,下次登录时,秘钥还会在,就实现7天免登陆了
//setcookie(session_name(),session_id(),time() + 3600 * 24 * 7,'/');

3/ 逻辑
//以http头部信息向服务器发送请求
session_start();
//设置一条cookie信息
setcookie('a',2);
//第一次报错是因为先创建还没拿出来,第二次刷新页面才能调用
echo $_COOKIE['a'];

4/ input checkbox 复选表单
当被勾选时,会接收到name值和value值,没有被勾选中时,什么都没有
所以用isset($_POST['name'])函数来判断是否被勾选

5/ serialize 序列化 unserialize 反序列化
序列化是为了存储非字符串字符


Session 是存在服务器端的tmp文件夹里
1/ session_start(); 开启session 一个页面中只能开启一次,否则会报错
2/ session_id(); 获取设置session_id

3/ session_name() 获取设置session_name

4/ unset($_SESSION[ 'web' ]); 删除session变量

6/ session_unset(); 释放当前在内存中已创建的所有$_SESSION变量
但不删除session文件以及不释放对应的session id

7/ session_destroy 删除当前用户对应的session文件以及释放session id
内存中的$_SESSION变量内容依然保留

8/ 释放用户的session所有资源
session_unset(); session_destroy();

9/ session_save_path(); 会话数据的路径.如果指定的路径,将数据保存到路径中

10/ session垃圾回收

Ajax
1/ 举例:分页浏览不刷新页面
// 因为ajax是借助于jQuery运行的,所以要先引入jQuery
<script src="./jquery-1.10.2.min.js"></script>
<script>
$(function(){
// 给.pagination所有的a便签添加点击事件
$('.pagination a').click(function(){
//用户当前点击的页码的值
var page = $(this).html();
// ajax异步发送
$.ajax({
// 请求地址
url:'./handle.php',
// 发送数据
data:{p:page},
// 发送方式
type:'get',
// 收到的数据类型,默认为text类型,还有html类型
dataType:'json',
// 处理反馈回来的数据
success:function(response){
// 空字符串,用来存储
var str = '';
// 遍历
$.each(response,function (k,v) {
// 追加
str += '<tr><td>'+v.id+'</td><td>'+v.title+'</td></tr>';
})
// 把代码写入
$('tbody').html(str);
}
})
})
})
</script>

2/ json_encode();
在php中将数据转成json格式,js才能读取

3/ ajax 中的serialize序列化 只是在获取表单中所有内容时才用, 如果单独一一抓取form表单会很麻烦 ,所以一般直接抓取整个form表单的内容,然后给它序列化成一个符合json格式的字符串,在ajax直接用即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值