php重定向没有发生

时间:2015-09-09 05:31:23

标签: php redirect

我有一个问题..

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);
    }

当我打印它们时,回声正在发生,但问题是它没有将我重定向到预期的页面...... 在第一个条件我想重定向到有消息的当前页面 即localhost / test / index.php?app_not_found 但这没有发生

1 个答案:

答案 0 :(得分: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.com https://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';
}