热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【二十五】cookie与session学习总结

一:cookie1.创建cookie关键字:setcookie用于保存cookie原理:当浏览器访问cookie.php页面时,我们的服务


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

";
print_r($_COOKIE);
echo "
";
//获取指定的键对应的值
$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 "

";
print_r($_SESSION);
echo "
";
?>

2.获取COOKIE数据



php
// 获取所有的session数据
echo "获取session数据";
// 需要开启session
session_start();
echo "

";
print_r($_SESSION);
echo "
";
// 字符串
echo "name=".$_SESSION["name"];
echo "
";
// 数字
echo "age=".$_SESSION["aeg"];
echo "
";
// 数组
foreach ($_SESSION["arr1"] as $key => $value) {
echo "$key=$value
";
}
// 取对象数据
// 需要加载类的信息。因为是从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 "

";
print_r($_SESSION);
echo "
";
?>

4.删除session数据



php
session_start();
// 删除指定键值对
unset($_SESSION['name']);
// 删除所有的session信息
session_destroy();
?>


 购物大厅例题:


buy.php



php
echo "

购物大厅

";
if (isset($_GET['PHPSESSID'])) {
session_id($_GET['PHPSESSID']);
// 重置该页面的ssesion_id
}
session_start();
$sid=session_id();
// echo SID; SID的输出为PHPSESSID=mpsav4071jlu8iue98tiujdp91
echo "$sid'>天龙八部
";
echo "$sid'>聊斋
";
echo "$sid'>红楼梦
";
echo "$sid'>西游记
";
echo "$sid'>查看您购买的商品列表";
?>

showpre.php



1 php
2 if (isset($_GET['PHPSESSID'])) {
3 session_id($_GET['PHPSESSID']);
4 }
5 //注意:sid的设置在session_start之前还是之后
6 $sid=session_id();
7 session_start();
8 // 接收书号和书名
9 $bookid=$_GET['bookid'];
10 $bookname=$_GET['bookname'];
11
12 $_SESSION["$bookid"]="$bookname";
13 echo "购买商品成功";
14 echo "$sid>返回购物大厅";
15 ?>


buglist.php



1 php
2 if (isset($_GET['PHPSESSID'])) {
3 session_id($_GET['PHPSESSID']);
4 }
5 session_start();
6 echo "购物车商品有:
";
7 foreach ($_SESSION as $key => $value) {
8 echo "书号是$key,书名是$value
";
9 }
10 ?>


界面显示:




 


 



问题:当用户禁用COOKIE后,怎样使用session技术共享多个页面呢?(重写url)


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

 


转载于:https://www.cnblogs.com/8013-cmf/p/8079789.html



推荐阅读
author-avatar
月雨淅淅
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有