企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 会话技术 * 什么是会话 打开浏览器,访问某个网站的很多资源(页面=)通过超链接),当你关闭浏览器后,一个会话结束。 * 思考一个问题 在意个会话中,用户会产生一些数据,比如购物车,每个用户查看购物车的时候,看到自己的选择,怎么实现? * 再思考一个问题? 为什么优酷网看视频时,会记录及看过的电影? * 解决之道 会话技术-cookie session ### Ø  会话技术 Cookie技术 Cookie的初步介绍: 1、  Cookie(小甜饼)是客户端技术,服务器把每个用户的数据保存在客户端本地的磁盘上。比如登录用户名吗,账号,等信息。 2、原理图 ![](https://box.kancloud.cn/2016-06-03_5750fd9079d90.jpg) ### 3、  Cookie的基本使用 3.1 如何创建Cookie ~~~ <?php //演示如何创建cookie信息 //把用户名和密码保存的客户端的cookie setcookie("name","jsh",time()+3600); setcookie("password","1234567",time()+3600); setcookie("addr","北京",time()+3600); echo "set OK!"; ?> ~~~ ### 3.2 获取Cookie ~~~ <?php /* echo "<pre>"; print_r($_COOKIE); echo "</pre>"; */ if(!empty($_COOKIE['name'])){ echo $_COOKIE['name']; echo "</br>"; }else{ echo "name=NULL"; } if(!empty($_COOKIE['password'])){ echo $_COOKIE['password']; echo "</br>"; }else{ echo "password=NULL"; } if(!empty($_COOKIE['addr'])){ echo $_COOKIE['addr']; echo "</br>"; }else{ echo "addr=NULL"; } ?> ~~~ ### 3.3 如何更新Cookie ~~~ <?php //Update setcookie("addr","上海",time()+3600); echo "更新成功"; ?> ~~~ ### 3.4 删除 Cookie ~~~ <?php //DEL setcookie("addr","",time()-200); echo "删除成功!"; //DEL all /* foreach ($_COOKIE as $key=>$val){ setcookie("$key","",time()-200); } */ ?> ~~~ ### 具体实例: 1)保存登录时间: ~~~ <?php //保存登录时间 date("D M j G:i:s T Y"); date_default_timezone_set('UTC'); if(!empty($_COOKIE['last_time'])){ echo "上次登录的时间是".$_COOKIE['last_time']; setcookie("last_time",date("D M j G:i:s T Y"),time()+24*3600*30); }else{ setcookie("last_time",date("D M j G:i:s T Y"),time()+24*3600*30); } ?> ~~~ 在测试过程中,可能会提示时区错误的时间: 1、在PHP文件中设置 ~~~ date_default_timezone_set('UTC'); ~~~ 2、在PHP.ini文件中 date.timezone = Asia/Chongqing 2)获得用户名或密码的通用函数 ~~~ <?php function getCookieVal($key){ if(empty($_COOKIE[$key])){ return ""; }else{ return $_COOKIE[$key]; } } ?> ~~~ 注:如果没有 ~~~ setcookie("addr","上海");中没有设置过期时间,只能在一次会话中保存,当关闭网页后,在打开将不会显示, ~~~ ### session 技术 思考问题: 1、我们在浏览网站,去购物的时候,张三和李四,可以购买不同的商品,并且在查看购物车的时候,可以查看各自购买的商品? 思路:1、数据库 2、Cookie 3、 2、当你登录某个网站的时候,可以在任何网站显示登录的用户名 思路:1、数据库 2、Cookie 3、session文件 3、网站安全性问题? 用户无需登录,就可以访问到我们的管理界面,别且不需要登录就能直接进行增删查改用户。 Ø  Session初步认识 ① session是服务器技术 Session 是服务器技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个为其独享的session文件,当用户去访问服务器中的其他的web资源时,可以从用户各自的seesion中取出数据为用户服务。Seesion是总重要的用户行为的跟踪技术(防止用户非法登录/验证码等)。是重点和难点。 ②示意图 ###   ![](https://box.kancloud.cn/2016-06-03_5750fd909359c.jpg) ③基本操作 1、   保存Session数据 ~~~ <?php echo "演示如何报错session数据"; //初始化,可以在配置中设置php.ini 开启session.auto_start=1 session_start(); //保存数据 $_SESSION['name']="sjin"; //保存数组 $arr=array("beijing","shanghai"); $_SESSION['arr1']=$arr; echo "set OK!"; ?> ~~~ * 保存数据格式: name|s:4:"sjin" Name KEY值 S:数据类型 4:字节数 Sjin:值 * 可以保存的数据类型 数组,字符串,对象等等 2、   如何获取session ~~~ <?php //获得session数据 //初始化session session_start(); /* //获取所有session echo "<pre>"; print_r($_SESSION); echo "</pre>"; */ //2 通过key值获取 echo $_SESSION['name']; $arr1=$_SESSION['arr1']; echo "</br>"; print_r($arr1); //3 获取对象的必须把类的声明引用下 ?> ~~~ 注意:获取对象的必须把类的声明引用下 3、   更新session ~~~ <?php //更新session session_start(); //保存数据 $_SESSION['name']="peipei"; ?> ~~~ 理论上就是重新设置。 4、   删除session ~~~ <?php //删除session session_start(); //删除指定的 unset($_SESSION['name']); //删除所有的,只会删除当前会话的session文件删除掉 //一个会话对应一个session文件 session_destroy(); ?> ~~~ 当用户打开浏览器,访问某个网站时操作session时,服务器就会在服务器的磁盘为该浏览器分配一个保存session的信息的文件,该文件被这个浏览器独自访问。Session 细节问题总结: 1、session数据默认存在的时间为1440S(24min),在php.ini中可以配置。session.gc_maxlifetime = 1440 2、设定session文件在服务器的存放路径:在PHP.ini文件中配置,session.save_path=“”; 3、一次会话只能产品一个session文件。  ![](https://box.kancloud.cn/2016-06-03_5750fd90ac7e4.jpg) ![](https://box.kancloud.cn/2016-06-03_5750fd90c281c.jpg)