所以我创建了一个具有登录功能的网站。您只能在注册和登录后访问该网站。注册工作和会话在按下登录按钮时启动,但在重定向到受保护页面时出现错误。 我得到以下错误:
警告:无法修改标头信息 - 已在/ webdata / domains / cim-gmbh中发送的标头(在/webdata/domains/cim-gmbh.ch/vhosts/www/htdocs/login.php:7处开始输出)第40行的.ch / vhosts / www / htdocs / login.php
警告:无法修改标头信息 - 已在/ webdata / domains / cim-gmbh中发送的标头(在/webdata/domains/cim-gmbh.ch/vhosts/www/htdocs/login.php:7处开始输出)第44行的.ch / vhosts / www / htdocs / login.php
这是整个login.php文件:
<?php
include "mysql_connectinfo.php";
if (isset($_SESSION['angemeldet']) || $_SESSION['angemeldet']) {
header('Location: index.php');
exit;
}
else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$passwort = $_POST['passwort'];
$sql = mysql_query("SELECT $mysqlname FROM $mysqltable WHERE $mysqlname='$username'AND $mysqlpwd='$passwort'");
$num = mysql_num_rows($sql);
if ($num != 0) {
$_SESSION['angemeldet'] = true;
if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
if (php_sapi_name() == 'cgi') {
header('Status: 303 See Other');
}
else {
header('HTTP/1.1 303 See Other'); //this is line 40
}
}
header('Location: index.php'); //this is line 44
exit;
}
else {
echo mysql_error();
}
}
?>
答案 0 :(得分:1)
在首次打开标记<?php
之前,请确保没有空格/缩进:
<?php
include "mysql_connectinfo.php";
还要确保不在mysql_connectinfo.php
文件中回显/输出任何内容。
由于您使用的是$_SESSION
,因此您还需要确保在脚本开始时session_start()
:
<?php
session_start();
// more code
答案 1 :(得分:0)
确保您的代码编辑器在文档中不包含BOM。我知道记事本++和其他一些默认包含这个的事实。如果包含它,它将在您的文档中插入不可见的字符,这看起来像输出到服务器,导致您看到的错误消息。尝试将代码复制并粘贴到没有BOM的新文档中。
几周前我遇到了同样的问题,在Dreamweaver中创建一个没有BOM(字节顺序标记)的新php文档解决了这个问题。