标头重定向和Session start()生成错误

时间:2009-12-28 05:47:56

标签: php

我正在使用以下代码。我收到错误:

警告:无法修改标头信息 - 已经发送的标头(输出从/home/public_html/mc/cpanel/Source/verifylogin.php:11开始)

警告:session_start()[function.session-start]:无法发送会话cookie - 已经发送的标头(输出从/home/public_html/mv/cpanel/Source/verifylogin.php:11开始)

警告:session_start()[function.session-start]:无法发送会话缓存限制器 - 已发送的标头(输出从/home/public_html/mv/cpanel/Source/verifylogin.php:11开始)

<?php
    error_reporting(E_ALL^ E_NOTICE);
    ob_start();
    require("../Lib/dbaccess.php");

    $inQuery = "SELECT mhuserid, mhusername FROM cpanelusers WHERE mhusername = '". $_POST['UserName'] ."' AND mhpassword = '". hash('sha512', $_POST['Password']) ."'";

    try
    {
        $Result = dbaccess::GetRows($inQuery);
        echo $Result;
        $NumRows = mysql_num_rows($Result); 
        if ($NumRows > 0)
        {
            header("Location: http://www.example.com/cpanel/mainwindow.php");
            session_start();
        }   
        else
        {
            header("Location: http://www.example.com/cpanel/");
            echo "Last login attempt failed.";
            exit;
        }
    }
    catch(exception $e)
    {

    }
    ob_clean();
?>

我做了所有更改并减少了下面的代码,但它仍无法正常工作。

<?php
    ob_end_clean();
    error_reporting(E_ALL^ E_NOTICE);
    require("../Lib/dbaccess.php");
    ob_start(); 
    $inQuery="SELECT mhuserid, mhusername FROM cpanelusers WHERE mhusername = '".$_POST['UserName']."' AND mhpassword = '".hash('sha512', $_POST['Password'])."'";
    try
    {
        $Result=dbaccess::GetRows($inQuery);
        $NumRows=mysql_num_rows($Result); 
        if ($NumRows>0)
        {
            header("mainwindow.php");
        }   
        else
        {
            header("index.html");
        }
    }
    catch(exception $e)
    {
    }
?>

2 个答案:

答案 0 :(得分:1)

session_start()和header()都要求没有任何内容写入页面。您正在第11行使用echo,因此将内容写入页面。

出于某种原因,你的ob_start似乎不起作用。可能在PHP配置中禁用了输出缓冲?

答案 1 :(得分:0)

找出问题所在。这是产生错误的“require ...”语句。我添加了连接字符串和在同一文件中执行查询的函数。