0

我想知道为什么这没有将我重新定位到联系页面?

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


    ?>

我很肯定它会在接触案例中进行。谢谢您的帮助

-编辑:NVM,它有效。谢谢!

4

6 回答 6

2

在调用header().

您必须删除:

<html>

echo "i got in here";

参考:

于 2013-02-05T03:16:33.920 回答
1

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

于 2013-02-05T03:29:43.360 回答
1

这就是为什么:

 <html>

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

于 2013-02-05T03:15:44.340 回答
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 将返回您网站或应用程序的完整 url,因此您应该在书面联系的情况下对其进行修改,您应该将其替换为“yourwebsite/contact”。

它现在应该适合你

于 2013-02-05T03:35:37.320 回答
0

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

于 2013-02-05T03:16:32.510 回答
0

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

更好的解决方案是在构建完要输出的所有内容之前不要执行此操作并保存所有排放。

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

于 2013-02-05T03:16:47.997 回答