Php 头错误

Php 头错误,php,header,Php,Header,好的,我正在尝试创建一个登录脚本,但在执行时会出现以下两个错误: 警告:session_regenerate_id()[function.session regenerate id]:无法重新生成会话id-标题已在第29行的/home/henrirkm/public_html/login/login.php中发送 警告:无法修改标题信息-标题已由第47行/home/henrirkm/public_html/res/mysql.php:2)中的/home/henrirkm/public_html/

好的,我正在尝试创建一个登录脚本,但在执行时会出现以下两个错误:

警告:session_regenerate_id()[function.session regenerate id]:无法重新生成会话id-标题已在第29行的/home/henrirkm/public_html/login/login.php中发送

警告:无法修改标题信息-标题已由第47行/home/henrirkm/public_html/res/mysql.php:2)中的/home/henrirkm/public_html/login/login.php发送

我的代码是这样的:

<?php

session_start();

// MYSQL database connection

include "../res/mysql.php";

$username = mysql_real_escape_string($_POST['username']);

$password = mysql_real_escape_string($_POST['password']);



//select from login table

$qry = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";

$result=mysql_query($qry);



//Check whether the query was successful or not

    if($result) {

        if(mysql_num_rows($result) == 1) {

            //Login Successful

            session_regenerate_id();

            $member = mysql_fetch_assoc($result);

            $_SESSION['id'] = $member['id'];

            $_SESSION['username'] = $member['username'];

            $_SESSION['email'] = $member['email'];

            session_write_close();







            header("location: ../home/index.php");

            exit();

        }else {

            //Login failed

            header("location: index.php?info=loginerror");

            exit();

        }

    }else {

        die("Query failed");

    }

?>


请帮帮我!谢谢:-)

根据以下PHP文档:

记住,必须在调用任何实际输出之前调用header() 通过普通HTML标记、文件中的空行或PHP发送。 使用include或require读取代码是非常常见的错误, 函数或其他文件访问函数,并具有空格或空 在调用header()之前输出的行。同样的问题 使用单个PHP/HTML文件时存在


只需在脚本开始时传递头,这将确保正确传递头并可以下载文件。

在此处输出:res/mysql.php第2行。

如果您回送任何内容(除非使用输出缓冲),头也将被发送

在您发布的代码中,我没有看到任何回音内容,但您也包括
。/res/mysql.php
。如果这与内容相呼应,则仅通过包含该文件即可发送标题


记住,你实际上不需要回应任何东西。打开
之前的任何空白也可能导致问题。因此,通常建议将关闭的
?>
一起删除。

该错误清楚地告诉您OP是从哪里开始的

output started at /home/henrirkm/public_html/res/mysql.php:2

我想你调用了两次
会话\u regenate\u id()
看看你是否在任何include文件中执行它,并且会话必须是脚本文件中没有空格的第一件事。你尝试过谷歌
头已经发送了
?你能试着移动
头(“位置:../home/index.php”)
会话_write_close()之前
?我猜您的
./res/mysql.php
文件中也有
session\u start()
。OP的
位置:
头取决于php逻辑,不能简单地移动到脚本的开头。您能确定上面代码中的哪一行将发送影响
头调用的输出吗?@Joseph:我同意头依赖于PHP逻辑,但通过将其放在开头,您可以避免任何会发送头的输出被回响。在这里,
include
文件还可以发送一个输出,这将使头声明在脚本中的其他地方变得无用。因此,在我个人看来,我将始终使用逻辑,记住标题不应被修改。我理解,但该解决方案不适用于此问题,正如AbraCadaver所指出的,它可以通过另一种方式解决。有时重新定位
标题
调用是不可行的。该错误明确地告诉您输出从何处开始。