一: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)

  1. 在每个超链接上添加一个 PHPSESSID=session id。同时每个页面判断是是否有已生成的session id 。看上例子
  2. 使用常量SID。
  3. 设置php.ini下的session.use_trans_sid = 1

【二十五】cookie与session学习总结的更多相关文章

  1. Python 爬虫(二十五) Cookie的处理--cookielib库的使用

    Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持. 该模块主要功能是提供可存储cookie的对象.使用此模块捕获cookie并 ...

  2. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  3. C#学习基础概念二十五问

    C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...

  4. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

  5. WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇]

    原文:WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇] 在[WS标准篇]中我花了很大的篇幅介绍了WS-MEX以及与它相关的WS规范:WS-Policy.WS-Tra ...

  6. JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

    JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...

  7. 二十五种网页加速方法和seo优化技巧

    一.使用良好的结构 可扩展 HTML (XHTML) 具有许多优势,但是其缺点也很明显.XHTML 可能使您的页面更加符合标准,但是它大量使用标记(强制性的 <start> 和 <e ...

  8. 剑指Offer(二十五):复杂链表的复制

    剑指Offer(二十五):复杂链表的复制 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/bai ...

  9. Bootstrap <基础二十五>警告(Alerts)

    警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...

  10. VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池

    VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池 终端服务池是指由一台或多台微软终端服务器提供服务的桌面源组成的池.终端服务器桌面源可交付多个桌面.它具有以下特征: 1.终端 ...

随机推荐

  1. ASP.NET异常处理机制

    try{ //获取并使用资源,可能出现异常}catch(DivideByZeroException de){}catch(ArithmeticException ae){}catch(Exceptio ...

  2. spark2.2 DataFrame的一些算子操作

    Spark Session中的DataFrame类似于一张关系型数据表.在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现.可以参考,Scala提供的Dat ...

  3. 用echartsjs 实现散点图与table表格双向交互,以及实现echarts取自于table数据,和自定义echarts提示内容

    本人研究echarts已经有一段时间了,今天就分享几个关于echarts的小技巧.虽然看起来简单,但做起来却很繁琐,不过实用性倒是很好. 在一个大的页面中,左边为table表格,右边为echarts的 ...

  4. [面试没答上的问题1]http请求,请求头和响应头都有什么信息?

    最近在找工作,面试官问了一些问题自己并没有回答上,这里做一个小结. http请求,请求头和响应头都有什么信息? 页面和服务器交互最常见的方式就是ajax,ajax简单来说是浏览器发送请求到服务端,然后 ...

  5. 计算机网络初探(ip协议)

    粗读了两遍计算机网络(谢希仁),对于计算计算机网络算是有了一个初步的了解,所以打算写一篇文章(希望是教程)进行巩固(主要围绕IP协议). 局域网 因特网的产生和广泛使用极大地改变了我们的生活,但对于不 ...

  6. 51Nod 1090 3个数和为0 set 二分优化

    给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从中找出所有和 = 0的3个数的组合.如果没有这样的组合,输出No Solution.如果有多个,按照3个数中最小的数从小到 ...

  7. 如果Centos没有桌面,怎么修改IP地址

    修改前备份!!! 修改前备份!!! 修改前备份!!! [PHP] 纯文本查看 复制代码 ? 1 vi /etc/sysconfig/network-scripts/ifcfg-eth0 编辑,输入以下 ...

  8. [PHP基础]有关isset empty 函数的面试题

    用isset()和empty()判断下面的变量. $str = ''; $int = 0 ; $arr = array(); isset($str) 返回的是 true 还是 false empty( ...

  9. Etcd全套安装教程

    一.安装 1.1 二进制安装 从这里下载: etcd-v3.2.11-linux-amd64.tar.gz 下载包后解压即可运行: # 解压 tar zxvf etcd-v3.2.11-linux-a ...

  10. Netty4 学习笔记之三:粘包和拆包

    前言 在上一篇Netty 心跳 demo 中,了解了Netty中的客户端和服务端之间的心跳.这篇就来讲讲Netty中的粘包和拆包以及相应的处理. 名词解释 粘包: 会将消息粘粘起来发送.类似吃米饭,一 ...