簡體   English   中英

使用標頭,重定向在PHP中不起作用

[英]Redirect is not working in php, using header

我想知道為什么這不能將我重新定位到聯系頁面?

    <?php session_start(); ?>


    <?php

    function setSessions($page){
        switch($page)
        {
            case "contact":
                $_SESSION['contact_name'] = $_GET['name'];
                $_SESSION['contact_address'] = $_GET['address'];
                $_SESSION['contact_phone'] = $_GET['phone'];
                header('Location:contact.php');
                exit;
                break;
            case "employment":
                break;
            case "position":
                break;
            default:
                break;
        }

    }




    $current_page = $_REQUEST['page'];
    setSessions($current_page);


    ?>

我很肯定這將在聯系案例中進行。 謝謝您的幫助

-edit:NVM,它可以工作。 謝謝!

調用header()之前不能發送任何輸出。

您將必須刪除:

<html>

echo "i got in here";

參考文獻:

這就是為什么:

 <html>

如果已向瀏覽器輸出任何內容,則無法調用header()。 將重定向代碼移到該html標記上方,然后刪除該回顯,您應該就可以了。

為了將來參考,在調用標頭之前,白色html空格也將阻止其工作。 (第2和3行)

使用header()之前,您無法獲得任何輸出。 switch語句中的echo語句被認為是輸出,是使代碼混亂的事情。

任何發射都會在PHP中發送標頭,一旦發送標頭,您將無法再發送任何標頭。 即使是空格也可以做到這一點,但是您將輸出字符串<html> 你不能那樣做。

更好的解決方案是在構建完要輸出的所有內容之后,不執行此操作並保存所有排放。

較差的解決方案是使用輸出緩沖。 在腳本的開頭,但是ob_start() 然后,標題將正常工作。

問題是您沒有獲得$current_page的正確值; 您可以回顯該值,您將看到它為空。 因此,您需要做的是使用此函數在此處獲取當前頁面值:

function getMyurl(){

  $url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

  echo $url;

}

now $current_page=getMyurl();

您應該知道getMyurl將返回您的網站或應用程序的完整url,因此,如果您是書面聯系人,則應對其進行修改,應將其替換為“ yourwebsite / contact”。

現在應該為您工作

暫無
暫無

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

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