2015-09-09 52 views
0

我有一個問題..PHP重定向沒有發生

function curPageURL() { 
    $pageURL = 'http'; 
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
    $pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80") { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
    } 
    return $pageURL.'?app_not_found'; 
} 

通過功能我獲取當前的URL .... 現在我有兩個條件

if($databaseAppVersion == $appVersionName) 
    { 
     //echo curPageURL(); 
     header('Location: '.curPageURL()); 
    } 
    else 
    { 
     $url ="www.google.com"; 
     //echo $url; 
     header('Location: '.$url); 
    } 

當我打印他們的回聲正在發生,但問題是,它不會將我重定向到預定頁面... 在第一個條件我想重定向到當前頁面有消息 ie localhost/test/index.php? app_not_found 但這是不會發生

+0

只是一個小題目,但對於https,您的代碼將追加:443因爲您只查找隱式端口80 – JoSSte

+0

您看過錯誤日誌嗎?是否有任何代碼在調用header('location')之前發送任何內容? – JoSSte

+0

nopes ....你看過我的代碼 –

回答

0

,如果你的網頁是這樣的:

<?php 

function curPageURL() { 
    $pageURL = 'http'; 
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
    $pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80") { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
    } 
    return $pageURL.'?app_not_found'; 
} 

if($databaseAppVersion == $appVersionName) 
    { 
     //echo curPageURL(); 
     header('Location: '.curPageURL()); 
    } 
    else 
    { 
     $url ="www.google.com"; 
     //echo $url; 
     header('Location: '.$url); 
    } 

我不會期望以外的任何其他重定向到www.google.com,因爲你沒有設置$databaseAppVersion$appVersionName隨時隨地

如果您在標頭調用之前有任何echoprint函數,重定向將不起作用,因爲標頭已經發送。見How to fix "Headers already sent" error in PHP

在不同的筆記上;您curPageURL()不一定返回你所期望的:

如果你給它http://www.example.com將返回http://www.example.comhttps://www.example.com將返回https://www.example.com:443因爲你只檢查端口80

您可以輕鬆地修改代碼:

function curPageURL() { 
    $pageURL = 'http'; 
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
    $pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80" || ($_SERVER["SERVER_PORT"] != 443 && $_SERVER["HTTPS"] == "on")) { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
    } 
    return $pageURL.'?app_not_found'; 
}