内容执行后PHP重定向?

时间:2013-06-20 12:16:12

标签: php

我正在尝试在我的内容执行后进行PHP重定向,但是我无法让代码执行。

如果我加载它,它会重定向页面但不会向数据库插入任何内容。如果我注释掉标题重定向行,它会将数据输入我的数据库。

如何让PHP运行并执行,然后重定向页面?

<?php require("gplus.php"); ?>
<?php require("database.php");?>    
<?php if(isset($personMarkup)): ?>
<?php
$checkuser = "SELECT gid FROM user WHERE gid = '$id'";
$updateuser = "UPDATE user SET name = '$name', pic = '$img' WHERE gid = '$id'";
$adduser = "INSERT INTO user (gid, name, pic) VALUES ('$id','$name','$img')";
$checkuserrlt = mysqli_query($con, $checkuser); 


if(mysqli_num_rows($checkuserrlt) > 0) {
   $result = mysqli_query($con, $updateuser) or die(mysqli_error());
} else {
     $result = mysqli_query($con, $adduser) or die(mysqli_error());
}
?>
<?php endif ?>

<?
mysqli_close($con);
?>
<?php
header( 'Location: http://google.com' );
exit();
?>

1 个答案:

答案 0 :(得分:5)

当你这样做时:

<?php endif ?>

<?

您正在浏览器中输出内容,在这种情况下,是一个新行。当您这样做时,PHP会将HTTP标头发送回客户端,并且无法添加新标头。这就是为什么你的header()功能不起作用的原因。

打开并关闭PHP标记一次。在您的脚本开头<?php,最后是?>。您还应该看到错误消息,确保它们已启用(仅在开发中,您不希望在生产中显示错误消息):

error_reporting(-1);
ini_set('display_errors', -1);

如果启用了错误报告,您肯定会看到以下错误消息:

  

警告:无法修改标头信息 - 第23行/some/file.php中已经发送的标头(/some/file.php:12开始输出)

您可以在此处详细了解此错误:How to fix "Headers already sent" error in PHP