繁体   English   中英

使用标头,重定向在PHP中不起作用

[英]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";

参考文献:

这就是为什么:

 <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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM