-1

好的,所以我正在尝试制作一个登录脚本,但是当我执行它时出现这两个错误:

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

警告:无法修改标头信息 - 第 47 行 /home/henrirkm/public_html/login/login.php 中的标头已由(输出开始于 /home/henrirkm/public_html/res/mysql.php:2)发送

我的代码是这样的:

<?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");

    }

?>

请帮我!谢谢 :-)

4

4 回答 4

3

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

于 2013-10-08T19:39:28.000 回答
1

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

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

请注意,您实际上不需要回显任何内容。打开之前<?或关闭之后的任何空格?>也可能导致问题。因此,通常建议?>完全删除关闭。

于 2013-10-08T19:39:31.580 回答
0

根据以下 PHP 文档:http: //php.net/manual/en/function.header.php

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

只需在脚本开头传递您的标头,这将确保标头正确传递并且可以下载文件。

于 2013-10-08T19:37:10.030 回答
-1

THE ERROR CLEARLY TELL U WHERE THE OP HAS STARTED

output started at /home/henrirkm/public_html/res/mysql.php:2
于 2013-10-08T19:40:59.767 回答