[英]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";
參考文獻:
http://php.net/manual/en/function.header.php
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP.
這就是為什么:
<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.