PHP COOKIE详细讲解及应用实现

news/2024/5/18 14:12:16 标签: cookie, php

首先了解一下什么是cookie

cookie服务器留在用户计算机中的一小段文本信息

可以实现多个页面的数据交换

下面来张图了解一下cookle的机制


当用户访问浏览器时,服务器会生成对应的cookie并发送到浏览器,浏览器会保存这个cookie,当用户下次再访问时浏览器会带上这个cookie一并请求服务器


cookle的创建

  setcookie(name,value,[expire,path,domain,secure]);

   name : cookie的变量名;

    value: cookie变量的初始值

    expire:cookie 的有效时间(当不设置时间时,默认会在浏览器关闭时cookie失效)

    path:cookie 的相关路径

    domain:变量可使用的域

    secure:在https的安全传输时才有效

注:cookie创建使用的一些限制

  1.     cookie变量名和值是必须要有的并且只能是字符串
  2.     需在脚本文件的内容输出之前设置,否则设置不成功(在创建cookie之前不能有任何输出内容)
  3.     cookie设置完成后不能马上读取(设置cookie以后,下次访问时浏览器才会带上访问,所以不能马上读取)
  4.     一个页面的cookie总数不超过20 总大小小于40kb

cookie的获取

    获取cookie的值使用 $_COOKIE及修改

$_COOKIE其实是一个数组所以使用时可以用$_COOKIE['名']

php"><?php 
	//查看名为lie的cookie
	print_r($_COOKIE['lie']);
	//cookie的修改
	setcookie('lie','aaa'); //把名字为lie的cookie内容改为aaa;
	
 ?>

COOKIE 的删除

    1.可以把cookie的值设置为null 或‘’;

    2.用cookie过期来删除cookie的值

php"><?php 
	//将cookie的值设为空
	setcookie('lie','');
	//将cookie的值设置为null 
	setcookie('lie',null);
	//将cookie的时间过期一般用过期来删除cookle
	/*		
		time() + N 代表N秒后过期
		time() - N 代表以过期N秒 
	*/
	setcookie('lie','aaa',time()-10);
 ?>

那接下来我们来个小练习

COOKIE实现URL浏览记录

php"><?php 
	/*cookle实现url浏览记录
		思路:
			1.获取当前的url
			2.把url放到cookle中
			3.读取cookle的值
	
	*/
	/*获取当前url用到了$_SERVER['REQUESR_URL'] 
		cookle只能存放一条数据 存放多条数据需要用到数组
		但cookle的值只能是字符串   
		解决方案:用到系统内置的序列化函数serialize()与 反序列化函数unserialize()
		所谓序列化函数serizlize()就是把数组转换成字符串
		相反 unserialize()就是把转换成的字符串在转换为数组
		$arr = [1,2,3];
		$newArr = serialize($arr);  // 
		print_r(unserialize($newArr)) ; // 
	*/	
		//获取到url地址
		$url = $_SERVER['REQUEST_URI'];
		$arr = [];
		//首先要判断是否有浏览记录如果有的话那就把它提取提取出来如果没有的话就新建一个
		if (isset($_COOKIE['lie'])) {
			$arr = unserialize($_COOKIE['lie']);  //cookie['lie']提取出来的是字符串所以用反序列化函数
			array_unshift($arr, $url);		//将最新的记录放在数组的最开始
			$arr = array_unique($arr);		//去除重复的浏览记录
			if(count($arr) > 10){			//只让显示10条浏览记录
				array_pop($arr);
			}
			setcookie('lie',serialize($arr)); //将浏览记录放入cookie中
		} else {
			$arr[] = $url;
			setcookie('lie',serialize($arr));
		}
		echo "URL浏览记录:";
		echo "<ol>";
			foreach ($arr as $key => $value) {
				echo "<li>".$value."</li>";
			}
		echo "</ol>";
		echo '<hr /><a href="?id='.mt_rand(1,100).'">随机产生地址</a>';
 ?>

结果图如下:



http://www.niftyadmin.cn/n/736978.html

相关文章

会话之Session

1. 什么是Session&#xff1f;Session其实是保存在服务器端的&#xff0c;保存的方式可以是文件&#xff0c;或数据库类型&#xff08;默认是保存的是文件&#xff09;Session的运行依赖session_id&#xff0c;而session_id是存在cookie中的以&#xff0c;如果当浏览器禁用了co…

Spring的bean自动装配

基于xml自动装配 //使用设值注入方式装配Person实例<bean id"person1" class"com.mengma.assembly.Person"><property name"name" value"zhangsan" /><property name"age" value"20" /></be…

居中,等高,负边距

一些常用的基本样式总结 当由内容撑开的div水平垂直居中 <style>* {padding:0px;margin:0px;}.contianer {width: 600px;height: 300px;border: 1px solid red;position:relative;}.item {background-color: gray;position: absolute;top:50%;left: 50%;transform:transl…

js常用样式---持续更新

图片平铺,无论怎么缩小浏览器窗口都始终处于居中状态 /** 1.当视口调整时&#xff08; window.onresize() &#xff09;动态改变背景图的位置&#xff08;img.backgroundPositionX&#xff09;&#xff0c;向左侧移动的距离 &#xff08;设计图最大宽度 - 视口宽度&#xff09…

PHP文件处理

今天学习一下文件的基本处理 1.打开文件 fopen&#xff08;$filename,$mode&#xff09;;$filename 表示要打开的文件路径$mode 表示打开的方式&#xff08;读&#xff0c;写&#xff09;例如&#xff1a;fopen ($file , "ab");强烈建议用fopen&am…

持续更新——文件管理系统(查看当前所有目录)

先来一张效果图&#xff1a;其实就是查看当前的文件目录&#xff1a; 了解这个之前我们先来了解一下什么是递归 递归&#xff1a;函数自己调用自己的一种编程方法&#xff0c;类似于循环&#xff0c;所以递归函数中必须要有终止条件&#xff0c;否则就成了死循环 来个例子&…

单体模式

对象只要利用自己的属性完成了自己的任务&#xff0c;那该对象就是承担了责任。除了维持了自身的一致性&#xff0c;该对象无需承担其他任何责任。如果该对象还承担着其他责任&#xff0c;而其他对象又依赖于该特定对象所承担的责任&#xff0c;我们就需要得到该特定对象。 将类…

php常用函数总结

PHP常用函数总结 数学函数 1.abs(): 求绝对值 $abs abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999); // 10 浮点数进一取整 3.floor(): 舍去法取整echo floor(9.999); // 9 浮点数直接舍去小数部分 4.fmod(): 浮点数取余?1234$x 5.7;$y 1.3; // 两…