【二十五】cookie与session学习总结
一:cookie
1.创建cookie
关键字:setcookie 用于保存cookie
原理:当浏览器访问cookie.php页面时,我们的服务器就会以set-cookie的方式将cookie信息回送到http响应,当浏览器获取到信息后,会保存在本机
- //第一个参数:cookie(key).第二个参数:表示val.第三个参数表示cookie值
- setcookie("name","huahua",time()+3600);
- echo "成功";
2.查询cookie(获取客户端的cookie信息)
cookie信息是保存在$_COOKIE超全局数组中的
- // 超全局数组
- echo "<pre>";
- print_r($_COOKIE);
- echo "</pre>";
- //获取指定的键对应的值
- $name=$_COOKIE['name'];
- echo "$name";
3.更新cookie(重新设置cookie)
关键字:setcookie:参考创建cookie
4.删除cookie
- // 删除某个键值对
- setcookie("password","",time()-3600);
- // 删除所有键值对
- foreach ($_COOKIE as $key => $value) {
- setcookie("$key","$value",time()-3600);
- }
实例:判断你是否第一次登陆
- if (!empty($_COOKIE['lastvisit'])){
- echo "您上次登陆的时间为".$_COOKIE['lastvisit'];
- setcookie('lastvisit',date("Y-m-d H:i:s"),time()+3600);
- }else{
- echo "您是第一次登陆";
- setcookie('lastvisit',date("Y-m-d H:i:s"),time()+3600);
- }
二:session
1.添加session
- <?php
- session_start();
- // 字符串
- $_SESSION["name"]="huahua";
- // 数字
- $_SESSION['aeg']=18;
- // 布尔值
- $_SESSION["isgirl"]=true;
- // 数组
- $arr1=array("hah","我们");
- $_SESSION["arr1"]=$arr1;
- // 对象
- class Dog{
- private $name;
- private $intro;
- function __construct($name,$intro){
- $this->name=$name;
- $this->intro=$intro;
- }
- public function getname(){
- return $this->name;
- }
- }
- $d=new Dog("xiaogou","i am good");
- $_SESSION["dog1"]=$d;
- echo "ook";
- // 使用超全局数组查看session
- echo "<pre>";
- print_r($_SESSION);
- echo "</pre>";
- ?>
2.获取cookie数据
- <?php
- // 获取所有的session数据
- echo "获取session数据";
- // 需要开启session
- session_start();
- echo "<pre>";
- print_r($_SESSION);
- echo "</pre>";
- // 字符串
- echo "name=".$_SESSION["name"];
- echo "<br/>";
- // 数字
- echo "age=".$_SESSION["aeg"];
- echo "<br/>";
- // 数组
- foreach ($_SESSION["arr1"] as $key => $value) {
- echo "$key=$value<br/>";
- }
- // 取对象数据
- // 需要加载类的信息。因为是从session中取得数据,而session中并没有保存类的信息
- class Dog{
- private $name;
- private $intro;
- function __construct($name,$intro){
- $this->name=$name;
- $this->intro=$intro;
- }
- public function getname(){
- return $this->name;
- }
- }
- $xiaogou=$_SESSION["dog1"];
- echo $xiaogou->getname();
- ?>
3.更新session数据
- <?php
- session_start();
- $_SESSION["name"]="hei";
- $_SESSION["aeg"]=99;
- echo "更新成功";
- echo "<pre>";
- print_r($_SESSION);
- echo "</pre>";
- ?>
4.删除session数据
- <?php
- session_start();
- // 删除指定键值对
- unset($_SESSION['name']);
- // 删除所有的session信息
- session_destroy();
- ?>
购物大厅例题:
buy.php
- <?php
- echo "<h1>购物大厅</h1>";
- if (isset($_GET['PHPSESSID'])) {
- session_id($_GET['PHPSESSID']);
- // 重置该页面的ssesion_id
- }
- session_start();
- $sid=session_id();
- // echo SID; SID的输出为PHPSESSID=mpsav4071jlu8iue98tiujdp91
- echo "<a href='shoppre.php?bookid=sn001&bookname=天龙八部&PHPSESSID=$sid'>天龙八部</a><br/>";
- echo "<a href='shoppre.php?bookid=sn002&bookname=聊斋&PHPSESSID=$sid'>聊斋</a><br/>";
- echo "<a href='shoppre.php?bookid=sn003&bookname=红楼梦&PHPSESSID=$sid'>红楼梦</a><br/>";
- echo "<a href='shoppre.php?bookid=sn004&bookname=西游记&PHPSESSID=$sid'>西游记</a><br/>";
- echo "<a href='buylist.php?PHPSESSID=$sid'>查看您购买的商品列表</a>";
- ?>
showpre.php
- <?php
- if (isset($_GET['PHPSESSID'])) {
- session_id($_GET['PHPSESSID']);
- }
- //注意:sid的设置在session_start之前还是之后
- $sid=session_id();
- session_start();
- // 接收书号和书名
- $bookid=$_GET['bookid'];
- $bookname=$_GET['bookname'];
- $_SESSION["$bookid"]="$bookname";
- echo "购买商品成功";
- echo "<a href=buy.php?PHPSESSID=$sid>返回购物大厅</a>";
- ?>
buglist.php
- <?php
- if (isset($_GET['PHPSESSID'])) {
- session_id($_GET['PHPSESSID']);
- }
- session_start();
- echo "购物车商品有:<br/>";
- foreach ($_SESSION as $key => $value) {
- echo "书号是$key,书名是$value<br/>";
- }
- ?>
界面显示:
问题:当用户禁用cookie后,怎样使用session技术共享多个页面呢?(重写url)
- 在每个超链接上添加一个 PHPSESSID=session id。同时每个页面判断是是否有已生成的session id 。看上例子
- 使用常量SID。
- 设置php.ini下的session.use_trans_sid = 1
【二十五】cookie与session学习总结的更多相关文章
- Python 爬虫(二十五) Cookie的处理--cookielib库的使用
Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持. 该模块主要功能是提供可存储cookie的对象.使用此模块捕获cookie并 ...
- python3.4学习笔记(二十五) Python 调用mysql redis实例代码
python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...
- C#学习基础概念二十五问
C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...
- 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧
目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...
- WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇]
原文:WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇] 在[WS标准篇]中我花了很大的篇幅介绍了WS-MEX以及与它相关的WS规范:WS-Policy.WS-Tra ...
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...
- 二十五种网页加速方法和seo优化技巧
一.使用良好的结构 可扩展 HTML (XHTML) 具有许多优势,但是其缺点也很明显.XHTML 可能使您的页面更加符合标准,但是它大量使用标记(强制性的 <start> 和 <e ...
- 剑指Offer(二十五):复杂链表的复制
剑指Offer(二十五):复杂链表的复制 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/bai ...
- Bootstrap <基础二十五>警告(Alerts)
警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...
- VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池
VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池 终端服务池是指由一台或多台微软终端服务器提供服务的桌面源组成的池.终端服务器桌面源可交付多个桌面.它具有以下特征: 1.终端 ...
随机推荐
- 模仿J2EE的session机制的App后端会话信息管理
此文章只将思想,不提供具体完整实现(博主太懒,懒得整理),有疑问或想了解的可以私信或评论 背景 在传统的java web 中小型项目中,一般使用session暂存会话信息,比如登录者的身份信息等.此机 ...
- CentOS7.2非HA分布式部署Openstack Pike版 (实验)
部署环境 一.组网拓扑 二.设备配置 笔记本:联想L440处理器:i3-4000M 2.40GHz内存:12G虚拟机软件:VMware® Workstation 12 Pro(12.5.2 build ...
- 一些常用软件的静默安装参数(nsis,msi,InstallShield,Inno)
打包的时候,经常需要安装一些其它的环境库,而又不想让用户繁锁的去选择,这时就需要静默安装,而不同的文件所加的参数了不一致,比如VS的环境库vcredist_x86.exe(这是32位的环境库)后面加/ ...
- KNN--用于手写数字识别
优点:精度高,对异常值不敏感,无数据输入假定 缺点:计算复杂度高,空间复杂度高 适用数据范围:数值型和标称型 一般流程: (1). 收集数据(网络抓取) (2).处理数据,将数据处 ...
- UVA 1508 - Equipment dp状态压缩
题意: 已知n个5元组,从中选出k组,使得这些组中5个位置,每个位置上最大数之和最大. 分析:当k>5时,就是n个5元组最大的数之和,当k<5时,就当做5元组,状态压缩,用00000表示 ...
- 51Nod 1084 矩阵取数问题 V2 双线程DP 滚动数组优化
基准时间限制:2 秒 空间限制:131072 KB 一个M*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,先从左上走到右下,再从右下走到左上.第1遍时只能向下和向右走,第2遍时只能向 ...
- PHP能引起安全的函数
php中需要禁用以下函数来提高安全性 打开php.ini 找到 disable_functions .然后禁用以下函数 disable_functions = pcntl_alarm, pcntl_ ...
- git操作之上传gitthub
push 失败解决方法: 分支操作: 分支操作之覆盖: 主master操作:
- 数据结构与算法(C/C++版)【栈与队列】
第三章<栈与队列> (一)栈简介 栈(Stack):只允许在一端进行插入或删除操作的线性表.首先栈是一种线性表,但是限定这种线性表只能在某一端进行插入和删除操作栈顶(top):线性表允许 ...
- 2017最新PHP面试题
这几天在面试,下面分享一下这几天面试所遇到的笔试题,目前还不打算工作,面试题会持续更新的,有些不想写答案了,有心的可以自己看着面试题查一下感觉记忆更深点.下面分享一下这几天遇到的php面试题. 掌贝面 ...