2012-03-04 55 views
-1

所以我做了一个带有登录功能的网站。您只能在注册并登录后访问网站。注册工作和会话是在登录按钮被按下时启动的,但是当我被重定向到受保护的页面时,我得到了错误。 我获得以下错误的:登录后指向受保护的页面时出错

警告:不能更改头信息 - 头已经发出(输出开始/webdata/domains/cim-gmbh.ch/vhosts/www/htdocs/login.php:7) in /webdata/domains/cim-gmbh.ch/vhosts/www/htdocs/login.php on line 40

警告:无法修改标题信息 - 已经发送的标题(在/ webdata/domains/cim- gmbh.ch/vhosts/www/htdocs/login.php:7)中的线44 /webdata/domains/cim-gmbh.ch/vhosts/www/htdocs/login.php

和这里是整个l ogin.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

会话开始,因为我可以访问受保护的页面,如果我没有登录,它会将我重定向到login.php。 – 2012-03-04 14:43:55

+0

随时可以自行尝试。 www.cim-gmbh.ch – 2012-03-04 14:57:49

+0

好吧,它不是字节顺序标记!在Dreamweaver中打开它,它没有启用。它不断给我在这两个标题中的错误: 'if($ num!= 0){ $ _SESSION ['angemeldet'] = true;如果(php_sapi_name()=='cgi'){ 如果($ _SERVER ['SERVER_PROTOCOL'] =='HTTP/1.1'){ header('Status:303 See Other'); } else { header('HTTP/1.1 303 See Other'); } } header('Location:index.php'); exit;' – 2012-03-04 16:51:33

回答

1

确保有第一openeng标签之前<?php你有没有空间/缩进:

<?php 

include "mysql_connectinfo.php"; 

另外,还要确保你没有mysql_connectinfo.php文件回音/输出任何东西。

由于您使用$_SESSION,你还需要确保你在你的脚本开始有session_start()

<?php 
session_start(); 
// more code 
+0

'mysql_connectinfo。php'用于连接到mysql db/tables,并包含无法连接时的错误消息! – 2012-03-04 14:33:42

+0

@NickMüller:这可能是潜在的问题。由于它会输出错误,因此可能会导致标题错误。同时检查我提到的其他原因。 – Sarfraz 2012-03-04 14:34:57

+0

好吧,所以我删除了'mysql_connectinfo.php'的错误信息,但我仍然得到了上述错误。 – 2012-03-04 14:39:30

0

确保该文件在代码编辑器中不包括BOM。我知道一个事实,即记事本++和其他一些默认包含此功能。如果包含它,它会在您的文档中插入不可见的字符,这看起来像输出到服务器,导致您看到的错误消息。尝试将代码复制并粘贴到没有BOM的新文档中。

几个星期前我有同样的问题,并在没有BOM(字节顺序标记)的情况下在Dreamweaver中创建一个新的php文档来解决问题。

+0

我正在使用记事本++和在不同的论坛中提出了问题。我应该使用什么编辑器?我对这个问题感到非常厌烦! – 2012-03-04 15:13:51

+0

仍然无法正常工作。将整个login.php复制并粘贴到一个不使用notepad ++而是正常记事本的新文档中。 – 2012-03-04 15:27:37

+0

您必须在您的首选项中的某处指定不使用BOM。我自己使用Dreamweaver,但我相信还有其他选项。要删除BOM:只需在Notepad ++中打开该文件,然后选中格式→不含BOM的UTF-8。或者,您可以在十六进制编辑器中打开该文件,并从文档的开头删除“EF BB boyfriend”。 – adamdehaven 2012-03-04 16:35:16

相关问题