一: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. 《Linux命令行与shell脚本编程大全》第十二章 使用结构化命令

    许多程序要就对shell脚本中的命令施加一些逻辑控制流程. 结构化命令允许你改变程序执行的顺序.不一定是依次进行的 12.1 使用if-then语句 如下格式: if command then     ...

  2. 用MVC导入导出

    导入导出对于刚做的人一脸懵逼,但是明白思路之后就感觉非常容易,我也是研究了好久,才总算做了出来,放在这里给大家分享一下 一.先看下导出 视图脚本 <script type ="text ...

  3. No bean named 'sqlSessionFactory' is defined

    其实程序给出这个错误已经很明确了,说你的sqlSessionFactory是未定义的. 首先你要查看一下自己的web.xml文件是否配置了application*.xml <!--设置sprin ...

  4. Natural Merge Sort(自然归并排序)

    This is a Natural Merge Sort program from my textbook. It works, but I don't think it's good. // Nat ...

  5. CathyCMS-后台管理v1.0

    摘要: 最近开发CathyCMS系统作为练手项目,后台管理部分v1.0暂时告一段落.目前只包含了基本的登录.权限管理.频道管理.文章管理功能. 项目地址: https://github.com/cat ...

  6. Unity3D手机斗地主游戏开发实战(04)_出牌判断大小(已完结)

    之前我们实现了叫地主.玩家和电脑自动出牌主要功能,但是还有个问题,出牌的时候,没有有效性检查和比较牌力大小.比如说,出牌3,4,5,目前是可以出牌的,然后下家可以出任何牌如3,6,9. 问题1:出牌检 ...

  7. Wannafly挑战赛3 record

    B 遇见 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 65536K,其他语言131072K64bit IO Format: %lld题目描述A和B在同一条路上,他们之间的距离为 k ...

  8. 玲珑学院-ACM比赛1014 - Absolute Defeat

    1014 - Absolute Defeat Time Limit:2s Memory Limit:64MByte Submissions:257Solved:73 DESCRIPTION Eric ...

  9. sublime text 3.0新版本注册码

    -– BEGIN LICENSE -– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA ...

  10. javassist:字节码编辑器工具

    简介: javassist是一款可以在运行时生成字节码的工具,可以通过它来构造一个新的class对象.method对象,这个class是运行时生成的.可以通过简短的几行代码就可以生成一个新的class ...