资讯专栏INFORMATION COLUMN

php中的会话机制(1)

Anchorer / 2236人阅读

摘要:什么是会话机制这个太过抽象,也挺复杂的,只能说一下自己的理解。

①什么是会话机制:

这个太过抽象,也挺复杂的,只能说一下自己的理解。在b/s架构下,会话机制,其实就是服务器(server)和浏览器(browser)之间的对话的一种方式!这种对话方式,能够使得web站点能够对用户的行为进行追踪,在同一个站点下用户所需的数据实现共享!

②为什么要使用会话机制

归根到底是由于,b/s的访问方式是基于http协议的,而http协议本身又是无状态的,所谓无状态,就是指服务器端无法区分发起请求的是否是同一个人(有兴趣的同学可以自己好好研究一下http的无状态性)!每次请求都会被当做独立的请求,并不能将两次访问联系到一起!

③核心设计思想

核心设计思想:允许服务器对同一个客户端的的连续请求进行跟踪,对同一个访问者的请求数据,在多个页面之间实现共享!

④php中实现会话机制的方法:

1)在两个页面(较少页面之间)通过$_GET或者$_POST数组之间实现数据的共享!
2)使用cookie将用户的信息存放在客户端的计算机中,用于保存并不重要的数据
3)通过session将用户的信息保存在服务器中

通过$_GET和$_POST方式获得数据较为简单,这里就不再介绍!


cookie会话机制实现的注意点

1)当我们通过setCookie()函数来新增或者改变cookie中的值的时候,setCookie()函数前面不能够有任何实际的输出,即使是空格也不可以!
这是因为setCookie()函数最终是改变http响应头信息我们有理由相信setCookie()方法,底层就是通过header()方法进行的设置的头信息,我们都应该知道在header函数前面是不能够有任何实际的输出的(除非是开启了ob缓存)!

2)在cookie中是只能够保存字符串的,但是,如果我们想将一个数组变量保存到cookie中,在不进行序列化的情况下,其实也是可以办到的,代码如下:





> 得到的结果如下:
>     array(3) {
>       [""name""]=>
>           array(2) {
>             [""xing""]=>
>             string(5) "liang"
>             [""ming""]=>
>             string(2) "bo"
>           }
>       [""age""]=>
>       string(2) "23"
>       [""addr""]=>
>       string(6) "吉林"
>     }

3)cookie的$path参数,只有在指定的路径下的网页才可以获取cookie中的值!demo如下:


该页面所处的路径"/",也就是网站的根目录!

接受的代码如下:


改代码文件所在的路径如下:/talkphp/secondtalk/
执行结果如下:string(7) "liangbo"

同样的接受代码:但是所处的路径不同,是在根目录“/”下,
得到的结果如下:null

4)cookie的跨域问题:
个人认为跨域问题,主要是值存在同一个网站下,有多个二级域名,在多个二级域名下cookie数据的共享问题!
在cookie中,如果设置的domain参数是一级域名的话,那么cookie中的数据在各个二级域名之间是都可用的!demo如下:




该代码所在的网站域名是:php.test.com 页面路径是:/talkphp/secondtalk/getcookie.php
运行结果如下:string(7) "liangbo"

同样的代码,该代码所在的域名是:jquery.test.com 页面所在的路径是:/talkphp/secondtalk/getcookie.php
运行结果如下:string(7) "liangbo"
可见,如果domain参数中设置的是一级域名的话,那么在各个二级域名之间$_COOKIE中的数据是可以共享的
在一级域名中.test.com,中test前的"."其实是可以省略的,但是加上的话,浏览器的兼容会更好!

我们来看另外一种情况:


这里,我们将domain设置为了二级域名php.test.com


该代码所在的网站域名是:php.test.com 页面路径是:/talkphp/secondtalk/getcookie.php
运行结果如下:string(7) "liangbo"

同样的代码,该代码所在的域名是:jquery.test.com 页面所在的路径是:/talkphp/secondtalk/getcookie.php
运行的结果如下:null
可见,如果设置的domain参数是二级域名的话,那么cookie中的数据只能够在该二级域名下面使用!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/20701.html

相关文章

  • php中的会话机制(2)

    摘要:会话机制如果是基于的会话机制,在调用之前,是不能够有任何实际的输出的,即使是空格或者是空行因为函数调用的时候,其实是通过函数向中设置了这个,对应的是一个随机的唯一的位字符串而前面是不可以有任何实际的输出的注意这里的名字是在文件中进行的配置配 session 会话机制: 1)如果是基于cookie的会话机制,在调用session_start()之前,是不能够有任何实际的输出的,即使是空...

    ConardLi 评论0 收藏0
  • PHP面试常考之会话控制

    摘要:一的会话也称为。如果启动会话成功,则函数返回,否则返回。会话启动后就可以载入该会话已经注册的会话变量以便使用。但数组创建的在会话结束后就会失效。预告本周三更新面试常考之网络协议,敬请期待。 你好,是我琉忆,欢迎您来到PHP面试专栏。本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面试常考之会话控制周三:PHP面试常考之网络协议周五:PHP面试常考题之会话控制和...

    lsxiao 评论0 收藏0
  • session和cookie

    摘要:的作用就是为了解决协议无状态的缺陷所作的努力。的内容主要包括名字,值,过期时间,路径和域。这种生命期为浏览器会话期的被称为会话。而机制采用的是一种在服务器端保持状态的解决方案。中的有效期默认分钟,也就是说,客户端超过分钟,当前就会失效。 会话控制是什么? cookie和session都是跟踪整个会话过程的技术手段。而会话,就是用户通过浏览器和服务器的一次通话。 为什么要有会话控制? 因...

    ruicbAndroid 评论0 收藏0
  • 详解Session

    摘要:会在脚本执行完毕或调用函数之后调用此回调函数。此回调函数操作成功返回,反之返回。在回调函数中,以传入的作为,以的值作为中的值存入,并设置过期时间为秒方法以传入的为从取出相应的的值。 1 Session的基本概念和设置 Session存储在服务端,本质上和Cookie没有区别,都是针对http协议的局限性而提出的一种保持客户端和服务端间会话状态的机制。Session经常用来网站的上下文间...

    joy968 评论0 收藏0

发表评论

0条评论

Anchorer

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<