我在每个请求上使用Zend_Session :: start(),因为我需要在各种请求之间保存值(例如用户和密码,以便在将来访问db时重用它)。
我想知道在使用Zend_Session :: start()时是否创建了cookie,最重要的是我可以看到存储路径(服务器和客户端)。
我读过,实际上会话的使用涉及到cookie的创建,但我不确定Zend_Session是否也是如此,因为Zend_Http_Cookie
答案 0 :(得分:2)
所有会话都需要某种方式让客户端进行身份验证。
意思是,服务器将为客户端提供密钥(或会话ID),通常以cookie的形式,并将会话变量链接(在服务器端内部)到该ID。
当客户端发送请求时,它还会发送带有cookie的会话ID,这允许服务器获取与该ID相关联的变量,并允许程序员使用。
每个浏览器更改Cookie的路径。
这意味着客户端只有ID ,客户端不知道会话变量中有什么,他看不到它们。
现在我不太了解Zend,但我认为Zend_Session
用于会话,而Zend_Http_Cookie
用于实际cookie(其中变量本身的值存储在cookie中) )。不要将关键信息存储在cookie中,因为它易于阅读和更改。
答案 1 :(得分:2)
Zend_Session扩展了标准的PHP会话功能,因此启动会话会设置cookie。存储会话数据的位置取决于您的配置,默认情况下,数据存储在文件中,文件的位置由配置值session.save_path
控制。
您通常不会在会话中存储密码 - 一旦用户通过身份验证,您可能只会在会话中存储用户名以供以后访问。如果您使用该组件,Zend_Auth将为您处理所有这些。
忘记Zend_Http_Cookie,它与用户cookie无关。
答案 2 :(得分:2)
Zend_Session在内部使用普通的PHP ext / session函数,所有熟悉的配置选项和设置都适用(参见http://www.php.net/session)
您还可以使用Zend_Session
配置Zend_Session::setOptions()
的某些行为:
Zend_Session::setOptions(array(
'use_only_cookies' => 'on',
'remember_me_seconds' => 864000
));