[英]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";
参考文献:
http://php.net/manual/en/function.header.php
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP.
这就是为什么:
<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.