0

我正在尝试在我的内容执行后进行 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();
?>
4

1 回答 1

5

当你这样做时:

<?php endif ?>

<?

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

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

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

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

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

您可以在此处阅读有关此错误的更多信息:如何修复 PHP 中的“标头已发送”错误

于 2013-06-20T12:20:01.997 回答