好的,所以我正在尝试创建一个登录脚本,但是当我执行它时会出现这两个错误:
警告: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处开始输出)< / p>
我的代码是这样的:
<?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");
}
?>
请帮帮我!谢谢: - )
答案 0 :(得分:3)
这里输出:res / mysql.php第2行。
答案 1 :(得分:1)
如果您回显任何内容(除非您使用输出缓冲),标题也将被发送。
在您发布的代码中,我没有看到任何回显的内容,但您还包括../res/mysql.php
。如果这与内容相呼应,则仅通过包含该文件来发送标题。
请注意,您实际上并不需要回应任何事情。在开始<?
之前或结束?>
之后的任何空格也可能导致问题。因此,通常建议完全删除结束?>
。
答案 2 :(得分:0)
根据http://php.net/manual/en/function.header.php
中所述的PHP文档请记住,在任何实际输出之前必须调用header() 通过普通HTML标记,文件中的空行或PHP发送。 使用include或require读取代码是一个非常常见的错误, 函数或其他文件访问函数,并且有空格或空 调用header()之前输出的行。一样的问题 使用单个PHP / HTML文件时存在。
只需在脚本开头传递标题,这样可以确保标题正确传递并可以下载文件。
答案 3 :(得分:-1)
错误清楚地告诉我OP已经开始
output started at /home/henrirkm/public_html/res/mysql.php:2