4. PHP 会话控制

HTTP简介

​ HTTP协议:Hypertext transfer protocol web浏览器与web服务器之间的一问一答的交互过程必须遵循一

​ 的规则,这个规则就是Http协议。

​ 浏览器与服务器的交互过程,是以请求-响应的方式进行的。一次请求包含3部分:请求行,请求头,请求内

​ 容。一次响应也包含3部分:响应行,响应头,响应内容。

​ Http链接是一种无状态的链接。


HTTP1.1简介

​ HTTP1.1的特点:

​ (1).在一个TCP连接上可以传送多个HTTP请求和响应。

​ (2).多个请求和响应过程可以重叠。

​ (3).增加了更多的请求头和响应头,比如:Host、If-Unmodified-Since请求头等。

​ 而HTTP1.0协议上,一次连接只能是一次请求,一次响应。

img


浏览器访问多图网页

​ 在一个HTML页面中如果包含标签的话,当解析到该标签时,还会向服务器请求访问标记中的指定文

​ 件,即再次建立连接并发出HTTP请求。

​ 如果HTML页面中有一个超链接:xxx,当点击到这个链接时,也会触发浏览器与web服

​ 务器开始一次新的HTTP通信。


HTTP请求信息和响应信息

​ HTTP请求信息

​ client连接上server后,向服务器请求某个web资源,称之为client向server发送了一个HTTP请求。

​ 一个完整的HTTP请求包括如下内容:请求行、若干请求头,其中消息头和正文都是可选的,消息头和正

​ 文内容之间要用空行隔开。

img

img

​ HTTP响应信息

​ 一个HTTP响应代表服务器向客户端回发的数据,主要包括:状态行、若干消息头、以及响应正文,其中

​ 一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开。

img

​ HTTP状态行

​ 格式:HTTP版本号 状态码 原因叙述

​ 举例:HTTP/1/1 200 OK

img


会话控制

什么是会话控制

​ 会话控制是一种面向连接的可靠通信方式,通常根据会话控制记录判断用户的登录行为。

为什么要用会话控制

​ 当需要在网站中跟踪Web用户以及对同一个访问者的请求需要在多个页面之间共享数据,这是我们就需

​ 要用到会话控制了。

如何使用会话控制

​ 我们在浏览网页时,使用的都是http协议,由于http协议是无状态的,当一个用户请求一个页面以后,再

​ 请求同一个网站上的另一个页面时,HTTP协议不能告诉我们这两个请求是来自同一个用户,会被当做

​ 独立的请求,而不会将这两次访问联系在一起。

​ 使用超链接或者header()函数等重定向方式,将需要传递的信息传递过去。

​ 客户端技术Cookie,将用户的会话信息,存放在客户端电脑之中。

​ 服务器端技术Session,将用户的会话信息保存在服务器端。


Cookie机制

​ Cookie是一种客户端技术,是服务器将客户端资料保存在用户的电脑系统当中。这样能提高网页处理的效率

​ 降低服务器的负担。

​ 设置Cookie

​ setCookie(string name[,stringvalue[,int n a m e [ , s t r i n g v a l u e [ , i n t expire[,string path[,string p a t h [ , s t r i n g domain[,bool $secyre]]]]]);

​ setCookie()函数定义一个和其余HTTP头一起发送的Cookie,它的所有参数是对应HTTP头Cookie资料的

​ 属性,而我们经常使用的只有前3个。

img

​ setCookie(name) <==> setCookie(name, ”),销毁某一个cookie

​ 当2次设置相同的Cookie识别标志,后面的会将前面的覆盖。

​ 读取Cookie

setCookie('username', 'hkf', 0);

        echo $_COOKIE['username'];

        setCookie('user[username]', 'hkf');

        setCookie('user[pwd]', md5('123456'));

        setCookie('user[gender]', 'male');

        foreach(_COOKIE['user'] as key => $value) 

        {

            echo key . ":" . value . "\n";

        }

​ 删除Cookie

​ 第一种方式,利用setCookie()函数仅导入第一个Cookie识别名称,其他参数为空,这样当浏览器关闭时

​ 自动删除Cookie。

​ 第二种方式,利用setCookie()函数,把目标Cookie设定为“已过期”状态。

        <?php

            setCookie("Account");    //第一种方式

            setCookie("isLogin", "", time()-3600);    //第二种方式

        ?>

Session机制

​ Session概述

​ Session是一种服务器端技术,服务器将会话信息保存在服务器,使用者无法停止Session的使用。

​ Cookie和Session的情景再现:

img

​ Session就是这样,在客户端仅需要保存由服务器为用户创建的一个Session标志符,称为Session ID

​ 而在服务器端保存Session变量的值。Session ID会保存在客户端的Cookie里,当用户请求服务器时

​ 就会把Session ID发送给服务器,再通过Session ID提取保存在服务器中的Session变量。

​ Session是存放在服务器中的,为了避免对服务器系统造成过大的负荷,因此Session并不像Cookie是一

​ 种半永久性的存在。Session会在以下2种情况下失效。

​ (1)使用者关闭浏览器,client与server失去连接之后。

​ (2)Session指定的有效期限到期。一般而言PHP系统中对于Session的生存时间并无定义,也就是说

​ 预设值为0,但可以通过修改php.ini中的session.cookie.life_time配置。默认为0,即“至

​ 到浏览器关闭”。当系统赋予Session有效期限后,不管浏览器是否关闭,Session都会自动

​ 消失。

​ 配置Session

​ php.ini中关于Session的一些配置描述如下:

img

​ Session的声明和使用

​ Session的设置不同于Cookie,必须先启动,以便让PHP核心程序,将和Session相关的内建环境变量预

​ 先载入至内存中。

​ session_start()函数的语法格式如下所示:bool session_start(viod)

​ 该函数有2个作用,一是开始一个会话,二是返回已经存在的会话。这个函数没有参数,返回的皆是

​ TRUE。如果你使用的是基于Cookie的Session,在调用session_start()函数开启时,不能有任何的输

​ 出。因为基于Cookie的Session在开启时,会生成一个唯一的Session ID保存在客户端的电脑Cookie

​ 中。如果Session已经开启,再次调用该函数时,会根据Session ID返回已经存在的Session。

​ 设置Session和获取Session

        <?php

            session_start();

            $_SESSION['username'] = 'this is test';

            $_SESSION['pwd'] = md5('123456');

        ?>

​ 销毁Session

        <?php

            session_start();

            //    删除所有的Session变量,也可以使用unset($_SESSION[xxx])逐个删除

            $_SESSION = array();

            //    删除保存Session ID的Cookie文件

            $cookie_path = ini_get('session.cookie_path');

            if (isset($_COOKIE[session_name()])) {

                setCookie(session_name(), time()-3600, $cookie_path);

            }

            //    彻底销毁Session

            session_destory();

        ?>

注意:session_destory()可以用来结束当前会话,并清空会话中的所有资源。但该函数并不会释放和当前session相关的变量,也不会删除保存在客户端Cookie中的Session ID。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值