function sec_session_start() {
$session_name = 'exon_id_sessfval';
$secure = false;
$httponly = true;
ini_set('session.use_only_cookies', 1);
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
session_name($session_name);
session_start();
session_regenerate_id();
}
以下代码生成一个与session_start()相关的已发送警告的警告,即使我在第一行使用ob_start()来尝试忽略该问题。
它在如下页面上调用:
<?php
include('./inc/sessions.php');
sec_session_start();
header("Location: index.php");
有什么建议吗?当然,标题包含在逻辑运算符中以检查用户是否已登录,但它不输出任何内容。回溯到session_start()所以我认为它与仅cookie会话有关。
警告:session_start():无法发送会话缓存限制器 - 已在/ customers中发送的标头(在/customers/b/2/5/edited.com/httpd.www/beta/login.php:1处开始输出)第11行/b/2/5/edited.com/httpd.www/beta/inc/sessions.inc.php
警告:session_regenerate_id():无法重新生成会话ID - 已发送的标头 /customers/b/2/5/edited.com/httpd.www/beta/inc/sessions.inc.php on 第12行
警告:无法修改标头信息 - 已发送的标头 (输出始于 /comersomers/b/2/5/edited.com/httpd.www/beta/login.php:1)in 第13行/customers/b/2/5/edited.com/httpd.www/beta/login.php
答案 0 :(得分:2)
你显然有一个文件上面的输出,可能在你包含的文件中。高于<?php
的任何内容都被视为输出。
“Anything”可以是HTML,文本,空格,标签,BOM(byte order mark),甚至是Cookie。
答案 1 :(得分:1)
是的,我刚刚检查过。
我在Notepad +++中选择了没有BOM的编码UTF-8,它解决了这个问题。
感谢。
答案 2 :(得分:0)
将ob_start();
放在脚本的开头。它启用输出缓冲,因此在脚本完成之前不会打印任何内容(或者您手动刷新缓冲区)。
还要记住任何字符(包括空格,换行符和类似的东西)都被视为输出。任何PHP文件的第一个字符都必须是<?php
。