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