会话技术

Posted 尼农小道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了会话技术相关的知识,希望对你有一定的参考价值。

会话技术

    http属于无连接,无状态的协议,服务器无法识别,同一个客户端同一个浏览器的这次请求与上一次请求是否来自同一客户端。每一次请求都是一次会话。由于http协议的无连接,无状态的特性,所以有了会话技术来弥补此"缺点"。

    会话技术就是通过某种方式能够识别,请求来自哪一个客户端。

会话技术分cookie与session

cookie技术

cookie    甜点(小点心)

    利用http协议将数据保存在客户端电脑上。

http协议实现cookie

利用header(\'set-cookie:名=值\');

示例:服务器php代码

客户端cookie数据

setcookie函数

setcookie(\'名\',\'值\',【过期时间【,路径【,作用域】】】)

示例

主机:表示是哪个服务器保存在客户端的cookie数据

路径:指是服务器的那个目录的文件保存在客户端的cookie数据

过期时间:如果不指定,表示当前会话(浏览关闭之前一直存在)

指定有效时间

setcookie(name,value,time);

说明:

    time是一个时间戳,以时间原点来起点。

示例:

读取cookie

$_COOKIE系统预设置变量

 

cookie的执行原理

提示:

    客户端携带数据是http协议自动完成的,服务器端数据的写入$_COOKIE中也是http协议自动完成。

路径

    默认哪个脚本文件设置的cookie,客户端中cookie数据中主机就是此脚本文件所在的目录。

    默认cookie只能向上访问,不能向下访问。

示例1:

    设置cookie的文件在20151229/code/01demo_cookie.php

    读取cookie的文件在20151229/01demo_read_cookie.php

    此种方向读取是不可以

示例2:

    设置cookie的文件在20151229/code/01demo_cookie.php

    读取cookie的文件在20151229/code/son/01demo_son_read_cookie.php

    此种方向读取是可以

一般情况cookie是整站有效。

语法:

    setcooke(name,value,expire,\'/\');

示例:

跨域

域名:

顶级域名        

    .cn        表示中国

    .us        表示美国

    .hk        表示香港

    .jp        表示小日本

 

一级域名

    gov.cn        政府部门

    mil.cn        军事部门

    edu.cn        教育机构

    org.cn        非盈利组织

 

二级域名

    news.baidu.com

    zhaidao.baidu.com

    tieba.baidu.com

    music.baidu.com

cookie特点

    cookie只能保存字符串。

    由于[]对于php来说,就是一个定义数组的语法,所以在set_cookie在cookie的名后加[],作为cookie,当cookie被返回到服务器,php会将其解析成数组

示例:

cookie的总结

    cookie是存储在客户端的数据,那么此数据不安全(用户可以任意更改),所以由不安全,所以不会使用cookie来保存重要的数据。

 

session技术

    会话技术的一种,session是以cookie为基础,将一个标识通过cookie写到客户端,再在服务器以此标识为依据存储一个数据在$_SESSION中。

类比:

    将一个标识通过cookie写到客户端 相当于银行为用户发放一个卡号。

    以此标识为依据存储一个数据在$_SESSION中 相当于在银行为用户开记一个账户,账户里写金额信息。

PHP中session有一套独立的机制

session的使用

手动session

开启session

session_start();

语法:

向session中写数据

$_SESSION,就是一个数组,用于存储session中的数据,只有在session机制开启之后才会存在。

读取数据

在手动session中,对session的任何操作都必须先开启session

原理:

自动session

 

删除session

语法:

    session_destroy();

删除当前进程中的session

第1步:

    在admin/template/top.html的退出链接的herf属性设置如下:

第2步:

    由于退出按钮是以get方式向privlege.php文件中传递action,但是登陆界面数据的传递是使用post方式,冲突, 所以使用$_REQUEST代替。

第3步:

    由于退出也属于用户行的,所以在privilege.php文件中进行判断

 

以上是关于会话技术的主要内容,如果未能解决你的问题,请参考以下文章

会话技术

会话技术--cookie

会话技术--cookie

会话技术

会话技术基础学习

会话及会话管理技术