我想知道为什么不将我重新安置到联系页面?
<?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,它有效。谢谢!
答案 0 :(得分:2)
在拨打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.
答案 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”替换它。
它现在应该适合你