我正在尝试创建一个函数来安全地为我的脚本启动一个新会话,并修改cookie设置。
这是功能:
public function sessionStart($sessID, $noCache)
{
session_start();
if($noCache)
{
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
}
// **PREVENTING SESSION HIJACKING**
// Prevents javascript XSS attacks aimed to steal the session ID
ini_set('session.cookie_httponly', 1);
// **PREVENTING SESSION FIXATION**
// Session ID cannot be passed through URLs
ini_set('session.use_only_cookies', 1);
// Uses a secure connection (HTTPS) if possible
ini_set('session.cookie_secure', 1);
session_name($sessID);
// Finally start a new session.
}
我已经尝试了所有'谷歌'给我看,但我仍然有关于标题的错误:
Cannot modify header information - headers already sent
有没有办法使我的功能有效?
亲切的问候!
答案 0 :(得分:0)
此错误通常是由您在代码中重复session_start()
引起的。
确保每个脚本只启动一次会话。实现此目的的一种方法是建立一个回声/记录系统,以便您可以看到该功能被击中的次数。
见这里:PHPaste Snippet。
此外,在ini_set([...])
之前添加session_start()
内容可能是个好主意,因此您确保它在运行时的行为符合预期。