本文目录一览:
php服务器端怎样获得session?
你可以按下面的步骤试一下:
一、首先确认你在首页上对session已经正确赋值(测试的方法是在首页赋值一个session后再取出并显示,看看结果是否能够输出)
二、你确认你在子页面中取出的session就是首页所赋值的session,没有写错字符,是否把0看成了O,把1看成了L
三、session_start()函数不但在赋值页需要打开,在取值页面也是要开的,而且你确认session_start位于所有输出之前开启的吗?(也就是说,在session_start()函数之前,不能存在什么echo
/print/print_r/var_dump/之类的能够在网页上打印文本的语句!)
四、你是否确定你测试你自己网站所使用的浏览器开启了cookie,是否因为防止广告跟踪等关闭了浏览器的cookie(因为session基于cookie)
五、如果还是不行,你打开你的php.ini文件,查找到[Session],然后在里面看一下session到底有没有开启、目录设置在哪里,PHP是否对所设置的目录拥有读写权限(Linux)、是否使用了数据库存储等等
如果你确认了以上这几条,还是没办法解决这个问题,你可以短信我,我给你我的Q之后远程帮你调试。
PHP(或其他语言) 的Session 运行机制是?
session实现与工作原理
浏览器和服务器采用http无状态的通讯,为了保持客户端的状态,使用session来达到这个目的。然而服务端是怎么样标示不同的客户端或用户呢?
假如你参加一个晚会,认识了很多人,你会采取什么方式来区分不同的人呢!你可能根据脸型,也有可能根据用户的名字,或者人的身份证,即采用一个独一无二的标示。在session机制中,也采用了这样的一个唯一的session_id来标示不同的用户,不同的是:浏览器每次请求都会带上由服务器为它生成的session_id.
简单介绍一下流程:当客户端访问服务器时,服务器根据需求设置session,将会话信息保存在服务器上,同时将标示session的session_id传递给客户端浏览器,
浏览器将这个session_id保存在内存中(还有其他的存储方式,例如写在url中),我们称之为无过期时间的cookie。浏览器关闭后,这个cookie就清掉了,它不会存在用户的cookie临时文件。
以后浏览器每次请求都会额外加上这个参数值,再服务器根据这个session_id,就能取得客户端的数据状态。
如果客户端浏览器意外关闭,服务器保存的session数据不是立即释放,此时数据还会存在,只要我们知道那个session_id,就可以继续通过请求获得此session的信息;但是这个时候后台的session还存在,但是session的保存有一个过期
时间,一旦超过规定时间没有客户端请求时,他就会清除这个session。
下面介绍一下session的存储机制,默认的session是保存在files中,即以文件的方式保存session数据。在php中主要根据php.ini的配置session.save_handler来选择保存session的方式。如果要做服务器的lvs,即多台server的话,我们一般使用memcached的方式session,否则会导致一些请求找不到session。
一个简单的memcache配置:
session.save_handler = memcache
session.save_path = "tcp://12.8.1.8:1000"
当然如果一定要使用files文件缓存,我们可以将文件作nfs,将所有的保存session文件定位到一个地方。返回给用户的session-id最终保存在内存中,这里我们也可以设置参数将其保存在用户的url中。
php中session和cookie的区别
php中session和cookie的区别
本文较为详细的比较了php中session与cookie区别。分享给大家供大家参考。具体分析如下:
1、存放的位置
cookie保存在客户端,session保存在服务器端的文件系统/数据库/memcache等。
2、安全性
session因为保存有服务器端,安全性无疑更高一些。
3、网络传输量
cookie通过网络在客户端与服务器端传输,会占用一些带宽;而session保存在服务器端,不需要传输。
4、保存时间(生命周期),以20分钟为例
cookie的生命周期是累计的,从创建时就开始计算,20分钟后生命周期就结束,即cookie无效;
session的生命周期是间隔的。从创建时开始计时,如果20分钟内,没有访问过session,那么session会在20分钟时失效。而如果在20分钟内的任一时间访问过session,那么,session的.生命周期将重新开始计算。
5、session和cookie的生效路径
cookie在默认情况下,cookie只在当前文件的目录下生效,一般需要设置setcookie的第四个参数为根目录,使得整个网站所在页面都生效;session默认情况下是根目录下生效(可以通过查看cookie的PHPSESSID信息知道,或者通过php.ini文件里的session.cookie_path来设置)。
希望本文所述对大家的php程序设计有所帮助。
;