我在尝试设置登录系统时遇到错误。我尝试了多种解决方案"但是没有一个能够将start_session放在所有脚本的顶部。
警告:session_start():无法发送会话缓存限制器 - 标头 已发送(输出开始于 test4 \ index.php: 311 )in 第4行的test4 \ classes \ Login.php
第311行:
<?php // line 311
if (version_compare(PHP_VERSION, '5.3.7', '<')) {
exit("Please upgrade the PHP version to 5.3.7 or higher.");
} else if (version_compare(PHP_VERSION, '5.5.0', '<')) {
require_once("libraries/password_compatibility_library.php");
}
require_once("config/db.php");
require_once("classes/Login.php");
$login = new Login();
班级第28行/ Login.php:
<?php
class Login {
private $db_connection = null;
public $errors = array();
public $messages = array();
public function __construct() {
session_start(); // line 28
提前谢谢!
答案 0 :(得分:3)
session_start()
函数应该在您的文件之上,如下所示:
<?php
session_start(); // Should be on top when using $_SESSION
class Login {
private $db_connection = null;
public $errors = array();
public $messages = array();
public function __construct() {
// Rest of your scripts
导致此错误的原因是已发送的标头已经发送,因此加载session_handler()
的时间也很晚,这就是为什么您必须将其置于文件顶部以使用标头加载它。
如果您使用包含页面的框架,则只需在主文件中使用session_start()
一次(例如 index.php ),其中包含其他文件
我希望这会对你有所帮助。
答案 1 :(得分:3)
session_start()函数调用只是顶部。
<?php
session_start();