PHP 会话错误和警告

PHP Session Errors and Warnings

我正在尝试检查用户是否已在 index.php 页面上登录。如果用户未登录,我想将用户重定向到 login.php 页面。

错误日志如下:

> PHP Warning: Cannot modify header information - headers already sent
> by (output started at
> /home/consolem/public_html/megalibrary/index.php:2) in
> /home/consolem/public_html/megalibrary/session.php on line 6
> 
> PHP Warning: session_start(): Cannot send session cookie - headers
> already sent by (output started at
> /home/consolem/public_html/megalibrary/index.php:2) in
> /home/consolem/public_html/megalibrary/session.php on line 3
> 
> PHP Warning: session_start(): Cannot send session cache limiter -
> headers already sent (output started at
> /home/consolem/public_html/megalibrary/index.php:2) in
> /home/consolem/public_html/megalibrary/session.php on line 3

请查看我的session.php代码:

<?php
//Start session
session_start();
//Check whether the session variable SESS_MEMBER_ID is present or not
if (!isset($_SESSION['id']) || (trim($_SESSION['id']) == '')) {
    header('location: login.php');
    exit();
}
$session_id=$_SESSION['id'];
?>

请检查行号。我的 2 个 index.php:

<?php include('session.php'); ?>

我的代码有什么问题?如果有人可以指导解决这些错误,我将不胜感激。

提前致谢。

你用header();在 session_start() 之前;在 index.php ??

如果这样做,session_start 必须位于页面顶部或尝试将其从 session.php 删除到 index.php

的顶部

问题是您在会话开始之前在第一行发送了 DOCTYPE。

<!DOCTYPE html> 
<?php include('session.php'); ?> 
<?php include('dbcon.php'); ?> 
<html lang="en">

改为

<?php include('session.php'); ?> 
<!DOCTYPE html> 
<?php include('dbcon.php'); ?> 
<html lang="en">

确保包含在第一行