PHP重定向无法正常工作

时间:2014-02-20 21:56:36

标签: php redirect http-headers

下面的代码简单检查用户是否输入了有效的JSON数据,如下面的if语句所示。 if语句对我来说效果很好,它只是让页面重定向不是。任何人都可以解释为什么会这样吗?谢谢

<?php
//Retrives name var from form on previous page
$name = $_REQUEST['name'];
//Changes the title tag based on the users name
$pageTitle = "Thanks ".$name."!";
//
$section = "contact";

//Retrives the product ID based on what the user requested
$productId = $_REQUEST['productId'];
//Retrives the email var from form on previous page
$email = $_REQUEST['email'];

?>

<?php
//Acts as a place holder var for the url containing the productID the user specfied.
$url = 'xxx.xxx.xxx';
//Fetchs the contents of the of the url var address, and returns them into a JSON var
$JSON = file_get_contents($url);

//Puts the JSON var into a parameter that actually does the decoding into JSON
$data = json_decode($JSON,true);



if (empty($data)){

header('Location: http://www.google.com');

exit;

} else {
echo "it's valid";
//References the header file for CSS
include("inc/header.php");
}

4 个答案:

答案 0 :(得分:3)

您在重定向之前发送一些空格,当您关闭并重新打开第14行的PHP时。 并且在响应主体已经启动之后,无法发送标头。 (除非它被关闭,否则应该在某处发出警告。)

答案 1 :(得分:3)

之间有一个空格/输入
?>

<?php

发送任何字符后,重定向将不再有效。把所有东西都放在一个

<?php ... ?>

它应该有用。

答案 2 :(得分:2)

只是预感,但尝试删除

?>

<?php

在中间,因为这可能是在您要求发送标头之前向客户端发送一些信息。这可能导致标题重定向失败。

答案 3 :(得分:0)

在你的else语句中,你没有指定标题位置,你所做的只是回应它是有效的,你包含一个文件,但没有重定向到另一个页面。

你拥有的是:

else {
echo "it's valid";
//References the header file for CSS
include("inc/header.php");
}

你不应该在那里有一个标题吗?