簡體   English   中英

PHP標頭重定向-不起作用

[英]PHP header redirect - Not Working

這是代碼:

if($rowCheck>0) {
  session_start();

  while($row = mysql_fetch_assoc($check)) {
    $_SESSION['developer'] = $row;          
  }

  header("Location: http://".$_SERVER['SERVER_NAME']."/index.php");
}
else
    echo 'Invalid Password or Email!';  

除了header之外,其他所有東西都工作正常,如果我在header之后寫一個echo ,它將正常工作。 另外,如果我打印了location ,它將顯示正確和正確的location

我正在運行Mamp和MacOS。 所以它在本地主機上。

有什么幫助嗎?

正如scott所說的,您需要在標頭之后使用exit()或die()。

另外,請檢查在打開和關閉php標記之前或之后是否沒有空格,如下所示:

   <?php

這將導致標頭功能失敗,因為它被視為輸入。 任何相關的包含文件也應檢查。

只需注釋所有內容,然后粘貼到header("Location: http://".$_SERVER['SERVER_NAME']."/index.php"); 看看它是否有效。 如果不是,請檢查BOM編碼。

在標題行之后添加exit()或die()。 標頭功能不會停止執行腳本的其余部分。

夫妻的事。

首先,我將放置ini_set("display_errors", 1); 在PHP代碼的頁面頂部。 您可能會收到“標題已發送”錯誤。

在標頭后添加出口,以防止腳本繼續運行:

header("Location: http://".$_SERVER['SERVER_NAME']."/index.php");
exit;

最后,這點沒有意義。

  while($row = mysql_fetch_assoc($check)) {
    $_SESSION['developer'] = $row;          
  }

您只需設置一次該會話變量,因此就不需要那一會兒了。 您還將其設置為等於mysql資源(您可能打算這樣做),但是也許您只需要一列即可

$row = mysql_fetch_assoc($check);
$_SESSION['developer'] = $row['username']; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM