重定向不能在php中使用标头

时间:2013-02-05 03:13:50

标签: php redirect

我想知道为什么不将我重新安置到联系页面?

    <?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,它有效。谢谢!

6 个答案:

答案 0 :(得分:2)

在拨打header()之前,您无法发送任何输出。

您必须删除:

<html>

echo "i got in here";

参考文献:

答案 1 :(得分:1)

这就是原因:

 <html>

如果您向浏览器输出任何内容,则无法调用header()。将重定向代码移动到此html标记上方并删除该回显,您应该没问题。

答案 2 :(得分:1)

为了将来参考,在调用标头之前的白色html空间也会阻止它工作。 (第2和第3行)

答案 3 :(得分:0)

在使用header()之前,你不能拥有任何输出。你的switch语句中的echo语句被认为是输出,这是弄乱你的代码的东西。

答案 4 :(得分:0)

任何发送都会在PHP中发送标头,一旦您发送了标头,就无法再发送标头了。即使是空格也会这样做,但是你输出了字符串<html>。你不能这样做。

更好的解决方案是在你构建了想要输出的所有内容之后,不要这样做并保存所有发射。

更糟糕的解决方案是使用输出缓冲。在脚本开头但是ob_start()。然后,标题将正常工作。

答案 5 :(得分:0)

问题是您没有获得$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将返回你的网站或应用程序的完整网址,所以你应该在你的书面联系的情况下修改它,你应该用案例“yourwebsite / contact”替换它。

它现在应该适合你