仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 775|回复: 8
打印 上一主题 下一主题

[学习教程] PHP网页编程之再探PHP session

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-16 22:12:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在一个团队之中或者说是在一个公司的工作岗位上,需要注重团队之间的交流合作;在学习或工作上都要端正自己的态度,要以认真的态度来对每件事,这样才能让自己更快的投入、更快的学习,而不至于浪费自己的时间。转载请说明来自souldak,微博:@evagle
之前对session和cookie实在仍是迷迷糊糊的,明天用yii框架的时分碰到session_regenerate_id():Sessionobjectdestructionfailed这个毛病,以是又看了看session的事情机理。


从W3Cschool中截取session的界说:

当您运转一个使用程序时,您会翻开它,做些变动,然后封闭它。这很像一次会话。盘算机分明你是谁。它晓得你什么时候启动使用程序,并在什么时候停止。可是在因特网上,存在一个成绩:服务器不晓得你是谁和你做甚么,这是因为HTTP地点不克不及保持形态。
经由过程在服务器上存储用户信息以便随后利用,PHPsession办理了这个成绩(好比用户称号、购置商品等)。不外,会话信息是一时的,在用户分开网站后将被删除。假如您必要永世贮存信息,能够把数据存储在数据库中。
Session的事情机制是:为每一个会见者创立一个独一的id(UID),并基于这个UID来存储变量。UID存储在cookie中,亦或经由过程URL举行传导。
我们先来看看session的性命周期,这个关于了解session很主要。
1.session什么时候创立?
复杂的说Sessinon在用户会见第一次会见服务器时创立,session是由php,jsp,asp等web言语创立的,会见静态html页面是不会创立的。我们以php为例:
a)当用户X会见一个php页面,假如页面最入手下手有session_start()函数,那这个时分服务器端就会创立一个session,会发生一个session_id。这个ID是独一的,每一个用户分歧。
b)这个sessionid会存储在PHP的$_SESSION变量中,我们同时能够设置cookie在用户的扫瞄器上。

c)然后用户跳转到网站其他页面时,只需告知扫瞄器这个cookie里存储的sessionid,然后服务器就掏出这个sessionid对应的存储的信息,就晓得这个用户是谁,那在另外一个页面也能显现用户的这些信息。
d)session创立以后,就能够存储其他用户相干的信息了,比方存储用户购物车的物品信息。
e)Session天生后,只需用户持续会见,服务器就会更新Session的最初会见工夫,并保护该Session。用户每会见服务器一次,不管是不是读写Session,服务器都以为该用户的Session“活泼”了一次。


以是,用户会见一个网站,一般来讲从翻开到停止(除非session太快生效)都是在统一个session里,不管他在这个网站中怎样跳转,都可以会见这个session内容。
PHP中session_id()函数能够看到以后的session_id的信息。由于一个网站能够有良多个用户同时会见,PHP会为每一个用户天生独一的session_id。如许不会互相搅扰,由于每一个用户都是由自力的历程在处置的,用户A地点的历程存储了A的session_id,直到这个session生效。
总之,通常为在用户登录网站的时分设置好session,然后用户加入的时分封闭大概清算session(封闭仍是清算随营业需求)。

2.session什么时候生效?

a)因为会有愈来愈多的用户会见服务器,因而Session也会愈来愈多。为避免内存溢出,服务器会把长工夫内没有活泼的Session从内存删除。这个工夫就是Session的超不时间。假如凌驾了超不时间没会见过服务器,Session就主动生效了。
b)挪用Session的invalidate办法。


参考:http://www.w3school.com.cn/php/php_sessions.asp
然后经常使用的几个PHP的session相干的函数:

session_start―Startneworresumeexistingsessionsession入手下手
session_id―Getand/orsetthecurrentsessionid取得sessionid
session_status―Returnsthecurrentsessionstatus取得sessionstatus,有三个形态
<ulclass="itemizedlist"><liclass="listitem">PHP_SESSION_DISABLEDifsessionsaredisabled.<liclass="listitem">PHP_SESSION_NONEifsessionsareenabled,butnoneexists.<liclass="listitem">PHP_SESSION_ACTIVEifsessionsareenabled,andoneexists.session_regenerate_id―Updatethecurrentsessionidwithanewlygeneratedone为如今的session从头分派
session_destroy―Destroysalldataregisteredtoasession完全删除全部session
session_unset―Freeallsessionvariables删除以后session所存储的一切变量

更多请参考:http://www.php.net/manual/en/ref.session.php











在学习HTML中我想边学边做是最有效的方式,当然这一方式对于学习PHP同样是最有效的。
柔情似水 该用户已被删除
沙发
发表于 2015-1-18 22:55:53 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
再见西城 该用户已被删除
板凳
发表于 2015-1-24 14:12:29 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
透明 该用户已被删除
地板
发表于 2015-2-1 16:47:16 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
海妖 该用户已被删除
5#
发表于 2015-2-7 10:01:08 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-2-21 17:37:37 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
精灵巫婆 该用户已被删除
7#
发表于 2015-3-6 21:01:20 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
小女巫 该用户已被删除
8#
发表于 2015-3-13 09:12:06 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
谁可相欹 该用户已被删除
9#
发表于 2015-3-20 19:18:33 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-4 19:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表