session,储存于服务器端(默认以文件方式存储session),根据客户端提供的session id来得到用户的文件,取得变量的值,session id可以使用客户端的cookie或者http1.1协议的query_string(就是访问的url的“?”后面的部分)来传送给服务器,然后服务器 读取session的目录……。也就是说,session id是取得存储在服务上的session变量的身份证。当代码session_start();运行的时候,就在服务器上产生了一个session文件, 随之也产生了与之唯一对应的一个session id,定义session变量以一定形式存储在刚才产生的session文件中。通过session id,可以取出定义的变量。跨页后,为了使用session,你必须又执行session_start();将又会产生一个session文件,与之对应 产生相应的session id,用这个session id是取不出前面提到的第一个session文件中的变量的,因为这个session id不是打开它的“钥匙”。如果在session_start();之前加代码session_id($session id);将不产生新的session文件,直接读取与这个id对应的session文件。
php中的session在默认情况下是使用客户端的cookie来保存session id的,所以当客户端的cookie出现问题的时候就会影响session了。必须注意的是:session不一定必须依赖cookie,这也是 session相比cookie的高明之处。当客户端的cookie被禁用或出现问题时,php会自动把session id附着在url中,这样再通过session id就能跨页使用session变量了。但这种附着也是有一定条件的,即“php.ini中的session.use_trans_sid = 1“,或者编译时打开打开了“--enable-trans-sid”选项。
用过论坛的朋友都知道,在进入论坛的时候,往往会提示你检查cookie是否打开,这是因为大多数论坛都是基于cookie的,论坛用它来保存用户名、密 码等用户信息,方便使用。而且很多朋友都认为cookie不安全(其实不是这样),往往禁用它。其实在php程序中,我们完全可以用session来代替 cookie,它可以不依赖于客户端是否开启cookie。
所以,我们可以抛开cookie使用session,即假定用户关闭cookie的情况下使用session,其实现途径有以下几种:
1. 设置php.ini配置文件中的“session.use_trans_sid = 1”,或者编译时打开打开了“--enable-trans-sid”选项,让php自动跨页传递session id。
2. 手动通过url传值、隐藏表单传递session id。
3. 用文件、数据库等形式保存session id,在跨页过程中手动调用。
途径1举例说明:
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
运行以上代码,在客户端cookie正常的情况下,应该可以在得到结果中华人民共和国。
现在你手动关闭客户端的cookie,再运行,可能得不到结果了吧。如果得不到结果,再设置php.ini文件中 的”session.use_trans_sid = 1“,或者编译时打开打开了”--enable-trans-sid选项”,又得到结果“中华人民共和国”。
途径2举例说明:
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
途径3举例说明:
-------------------------------------------------------------------------------------------------------------------
login.html
login
璇风
