我的页面只是:
<?php
session_start();
?>
服务器响应标头显示:
HTTP/1.1 200 OK
Date: Fri, 01 Jul 2011 03:30:07 GMT
Server: Apache
X-Powered-By: PHP/5.2.11
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=zOk****************; path=/
Content-Type: text/html
我期待start/run/cookies
中的文件类似于:
user@mysite[1]
但没有。
为什么不呢?
我的终点是让每个页面都有通常的登录/未登录测试,包括启动页面......
答案 0 :(得分:4)
会话数据存储在服务器上而不是客户端。
要在客户端上存储会话数据,您必须启用session.use_only_cookies
。
答案 1 :(得分:0)
感谢大家的帮助。
我下载了一个名为fiddler的程序,它让我能够看到在我的服务器和客户端之间传回和转发的字符。
我在服务器上创建了一个仅包含
的php文件[A]session_start();
echo "<a href='/testsessstill.php'>test again</a>";
我创建了一个php文件[B] testsessstill.php,只是回应了“hi”
我从浏览器中拨打了A.
客户端请求标头中的PHPSESSID = xxxx? NO
服务器响应标头中的PHPSESSID = xxxx? YES
客户端计算机cookie文件夹中的Cookie文件? NO
server / tmp文件夹中的文件? NO
我通过A
中的链接呼叫了B.客户端请求标头中的PHPSESSID = xxxx? YES
服务器响应标头中的PHPSESSID = xxxx? NO
客户端计算机cookie文件夹中的Cookie文件? NO
server / tmp文件夹中的文件? NO
我在我的客户端计算机上搜索了任何文件中是否存在字符串“SESSID”,但没有找到。
因此,如果我错了,我的信念和正确的答案如下:
当调用session_start()时,它会在标头中向客户端返回一个SESSID,SESSID将被保留,并与会话与客户端内存相关的站点相关联,并且不会写入客户端上的文件。 / p>
当客户端请求标头以请求标头中的PHPSESSID值到达时,服务器会读取它,但不会将SESSID保留在任何位置。 SESSID的值仅存在于客户端的内存中。服务器不会将响应头中的SESSID返回给客户端。如果请求在头部中带有SESSID,则服务器将其接受为SESSID。
[显然,下一步是设置与SESSID相关的值,但它至少帮助我探索了上面的内容。它有助于理解我认为的安全性。
我怎么走?那都是准确的评估吗?
答案 2 :(得分:0)
会话由两部分组成:
启动会话时,服务器会在系统目录中创建一个随机文件(可通过session.save_path
选项进行配置),在该目录中,它会将您写入的所有数据存储到$_SESSION
中。它使用随机会话ID 向客户端发送cookie。此会话ID本身就没有价值,它只是帮助服务器将某个会话与特定客户端关联起来。客户端在后续请求时将此会话ID cookie返回给服务器,服务器在调用session_start()
以重新激活已存在的会话时接收该请求。
session_start()
。