2012-03-04 90 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

相關問題