PHP 标头已发送错误,将标头替换为 <meta http> 标签作为解决方案



美好的一天。我希望对以下代码获得一些帮助:

  • 用户进行选择
  • 当触发提交时,单击提交时,记录了选择
  • 如果余额是无关的重定向到存款页面
  • 其他过程选择并上传到DB

现在在以下条件下收到错误

  • 用户的余额为零,应重定向到存款。php

我的代码是:

if(isset($_POST["submit"])){
    if($_SESSION['FBID']){ //Facebook session
        $balance = getBal($userId);
    if($balance < 50){
        header("location:deposit.php"); 
        }
    else{   
    $winner = $_POST['picks'];
    $score = $_POST['score'];
    echo $winner, $score;
    $sql="INSERT INTO picks(member_nr,event_id,pick,score)
            VALUES('$uid','$id','$winner','$score')";
            mysql_query($sql)or trigger_error(mysql_error()." in ".$sql);
            echo'<div id="dispPicks">';
            echo'<h3 style="color:red">YOUR PICKS HAVE BEEN SUBMITTED</h3>';
            echo'<h5 style="color:blue">You will be Redirected to Homepage in 3 Seconds</h5>';
            echo'<meta http-equiv="refresh" content="3;url=index.php" />';
            echo'</div>';
    }

错误说明以下内容:

无法修改标头信息 -

已经发送的标题

我正在考虑替换header("location.php")

<meta http-equiv="refresh" content="3;url=deposit.php" /> 

但我担心并非所有用户都会重定向吗?

如果有人可以提供一些帮助或建议,将不胜感激

这几乎是您可以用标头做的。

在标题()

下添加出口
if($balance < 50){
    header("location:deposit.php"); 
    exit;
    }

您不能在发送HTTP标头之前首先回声。
任何回应的都是页面内容,内容,无论哪种类型,都必须具有HTTP标头,以指示浏览器刚刚收到的哪种类型的HTTP响应。

发送标头后,您就会陷入困境。

我更喜欢这种方法,主要是因为它要快得多。它不需要浏览器执行另一个往返HTTP请求。

if($balance < 50){
  include('/home/user/public_html/deposit.php');
  exit;
}

我个人对"您将在X秒内重定向"的消息感到恼火

我会设置$ popwinner = true,并包括home.php,$ winner和$得分的值在home.php中仍然有效。

else{   
$winner = $_POST['picks'];
$score = $_POST['score'];
$popWinner = true;

$sql="INSERT INTO picks(member_nr,event_id,pick,score)
        VALUES('$uid','$id','$winner','$score')";
        mysql_query($sql)or trigger_error(mysql_error()." in ".$sql);
        $popWinner = false;  // or some other value

   include(/home/user/public_html/home.php');
}

相关内容

最新更新