Php 如何避免已发送的标题并更改与cookie相关的设置

Php 如何避免已发送的标题并更改与cookie相关的设置,php,session,header,Php,Session,Header,我正在尝试创建一个函数来安全地为我的脚本启动一个新会话,并修改cookie设置 这就是功能: public function sessionStart($sessID, $noCache) { session_start(); if($noCache) { header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");

我正在尝试创建一个函数来安全地为我的脚本启动一个新会话,并修改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
有没有办法让我的功能发挥作用


亲切的问候

此错误通常是由于代码中重复了
会话\u start()

确保每个脚本只启动一次会话。实现这一点的一种方法是安装一个echo/logging系统,这样您就可以看到函数被点击了多少次

请参见此处:

另外,在
session\u start()
之前设置
ini\u集([…])
也是一个好主意,这样您就可以确保它在运行时的行为符合预期