php保存图片到本地(§12.PHP会话技术)PHP教程 / PHP会话管理...

wufei123 发布于 2024-06-15 阅读(14)

本文献给本专栏的19位粉丝1703年,英语里有了cookie一词,它源于荷兰语的koekje,意为“小蛋糕”1994年,网景公司的程序员Lou Montulli提出了将cookie用于网络会话的想法

Cookie提出者Lou Montulli1.会话及会话技术1)为什么需要会话技术?HTTP协议是无状态、无记忆的多次请求之间,无任何联系,无法把请求的状态保存下去,即同一用户请求同一网站的不同页面,服务器无法识别是否是同一用户发起的请求。

用户无法进行连续的业务逻辑2)会话技术同一浏览器对服务器的多次请求中,将数据持久化存储的技术,以实现连续的业务逻辑3)会话周期从打开浏览器直至关闭浏览器为止,这个时间间隔为会话周期会话周期结束可能导致某些数据失效。

4)分类如果持久化数据保存在浏览器端为cookie技术如果持久化数据保存在服务器端为session技术2.Cookie

图片注释被我吃了1)原理① 当第一次请求时,服务器会在响应时给浏览器一个储存信息的cookie② 这个cookie会保存在浏览器中,当下次请求的时候会携带cookie2)设置Cookiesetcookie($name,[$value=""][$expire=0][$path=""][$domain=""][$secure][$httponly])

· expire 过期时间戳,time()+有效时间不写则默认会话结束后过期,设为PHP_INT_MAX则是永久有效,手动设定失效为time()- 1· path Cookie有效的服务器路径,设置成 / 时,Cookie对整个域名有效。

如设成 /foo/,Cookie 仅对域名中 /foo/ 目录及其子目录有效默认值是设置 Cookie 时的当前目录,但同级文件夹或父文件夹则获取不到· domain Cookie的有效域名/子域名· secure

设置这个Cookie是否仅通过 HTTPS协议传给客户端· httponly设置TRUE,Cookie仅可通过 HTTP 协议访问即Cookie无法通过类似 JS的语言访问,有效减少 XSS 攻击的身份窃取行为。

3)数据类型只能是标量类型,如果是中文字符串,查看时会显示为乱码4)读取$_COOKIE可以读取,但无法修改,且只能获取本网站的cookie,不同浏览器不共用cookie,各自独立5)修改设置相同cookie名,用新值覆盖旧值即可

6)删除Setcookie(‘aaa’,‘’)3.Session---为了实现业务逻辑的连续性,将部分信息持久化存储在服务器端,可以保证数据的安全性及各个脚本之间的共享Session基于Cookie,Cookie基于浏览器,更换浏览器会造成 Session数据的重新创建。

1)原理① 浏览器想获取服务器的session,必须有一个身份认证信息② 服务器的session数据可以被多个脚本共享访问2)开启·在php配置文件中将session.auto_start=0改为1·在需要开启的页面写入

seesion_start(),默认存储目录为c:/windows/temp·在php配置文件中搜索 session.save_path 来修改保存路径2)设置下标法设定数组$_Session [‘name’] = ‘’

3)数据类型可以是标量与复合类型4)删除Unset($_Session[‘要删除的 Session名称’])删除session所有数据可直接给它赋一个空数组$_SESSION = [];※虽然unset($_SESSION)

可删除所有数据,但$_SESSION被释放了,再次使用的时候需要进行初始化5)销毁临时文件session_destroy ( void )6)Session_start()Session_start首先查看Cookie中是否有PHPSESSID,如果没有会根据浏览器的相关信息创建一个能够确保唯一的字符串,然后再创建一个以sess_ 开头,以刚才的字符串结尾的文件如果有PHPSESSID信息,则 直接读取Session文件数据

7)配置项---在PHP配置文件中设置下列各项

※一般只修改Session的默认名称※Session生命周期为0,默认会话结束后销毁,延长方法:· 第一种方法在session_start()前调用 session_set_cookie_params函数,该函数的第一个参数就是延长session中的cookie生命周期,是整形,它的生命周期是按照当前时间开始算 + 参数的值(单位为秒)

· 第二种方式是在session_start后,通过setcookie修改cookie的有效期属性4.二者区别

Cookie与Session主要区别联系:Session依赖Cookie(浏览器的身份信息)进行数据的传递,禁用Cookie后,Session无法正常使用5.Cookie被脑残用户主动禁用了怎么破?---只要保证始终通过get方式传递一个值就行,

用浏览器的地址栏进行“记忆”session_id ([ string $id ] )上述函数可获取/设置当前会话的 ID,如果指定了 id 参数的值, 则使用指定值作为会话 ID必须在调用 session_start() 函数之前调用 session_id() 函数。

6.Session回收机制---php的Session的文件回收是采用概率性的回收机制概率的计算方式:sesssion.gc_probability 分子session.gc_divisor 分母

只要有代码调用 session_start函数就产生一定的概率,通常大公司的概率会比较低

通过一定的概率,计算文件是否过期,文件是否过期的依据是 当前时间 – 修改时间如果当前时间 – 修改时间 > 1440 秒,则认为文件过期,需要删除如果当前时间 – 修改时间 < 1440 秒,则认为文件没有过期,不会进行删除操作

因为删除session缓存文件会消耗资源,所以我们不会每次调用session_start函数就删除数据文末彩蛋:Love May

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻82048