PHP标题(“Location:$ url”);

时间:2012-04-07 00:45:29

标签: php session http-headers

  

可能重复:
  Headers already sent by PHP

这里我有一个奇怪的问题来保护我的网页,检查会话是否开始,如果没有重定向登录,

    <?php 
require_once ('includes/config.inc.php'); 

// Start output buffering:
ob_start();

// Initialize a session:
session_start();

// Check for a $page_title value:
if (!isset($page_title)) {
    $page_title = 'User Registration';
}

// If no first_name session variable exists, redirect the user:
if (!isset($_SESSION['first_name'])) {

    $url = BASE_URL . 'index.php'; 
    ob_end_clean(); // Delete the buffer.
    header("Location: $url");
    exit(); // Quit the script.

}
?>

我收到了这个错误:第8行:

  

session_start()[function.session-start]:无法发送会话缓存限制器 - 已发送的标头

有人可以发布一个好的解决方案来检查会话是否已启动,如果没有重定向到登录页面,那么留在页面上? Txanks

2 个答案:

答案 0 :(得分:5)

这是你的问题:

    <?php 
^^^^

在发送标头之前,您无法输出任何内容;包括空白。

答案 1 :(得分:1)

每当你看到headers already sent时,就意味着在PHP发送标题之前输出了一些东西。

在你的情况下,正如Oli Charlesworth所说,它是PHP标签之前的其他来源。