标头位置:函数在我的代码中不起作用



我有一个包含基本信息的网络表单(Fname, Lname, Uname, Email, Phumber, Age, Facebook, Major, Education, Music, Fav, message

提交表单并将这些字段的数据插入MySQL数据库后,我希望能够重定向到不同的URL。
我尝试使用 PHP 的标头函数,但由于某种原因,它不会将我重定向到我指定的 URL。

    <?php
ob_start();
require("config.php");
include 'config.php';
ini_set('display_errors', 0);
if($_GET['action'] == 'check')
{
   if($_POST['Fname'] == '' || $_POST['Lname'] == '' || $_POST['Uname'] == '' || $_POST['Email'] == '' || $_POST['Phumber'] == '' || $_POST['Age'] == '' || $_POST['Facebook'] == '' || $_POST['Major'] == '' || $_POST['Education'] == '' || $_POST['Music'] == '' || $_POST['Fav'] == '' || $_POST['message'] == '')
   {
      exit;
   }
   else
   {
if($_POST['Email'] !== $_POST['Email'])
         {
         exit;
         }
      else
         {
         $result = mysql_query("SELECT * FROM loginphp
         WHERE Uname='{$_POST['Uname']}'") or die(mysql_error()); 
         $row = mysql_fetch_array( $result );
         if($row['Uname'] == '')
            {
            $_Fname = str_replace("<", "", $_POST['Fname']);
            $_Lname = str_replace("<", "", $_POST['Lname']);
            $_Uname = str_replace("<", "", $_POST['Uname']);
            $_Email = str_replace("<", "", $_POST['Email']);
$_Phumber = str_replace("<", "", $_POST['Phumber']);
$_Age = str_replace("<", "", $_POST['Age']);
$_Facebook = str_replace("<", "", $_POST['Facebook']);
$_Major = str_replace("<", "", $_POST['Major']);
$_Education = str_replace("<", "", $_POST['Education']);
$_Music = str_replace("<", "", $_POST['Music']);
$_Fav = str_replace("<", "", $_POST['Fav']);
$_message = str_replace("<", "", $_POST['message']);
            mysql_query("INSERT INTO loginphp 
            (Fname, Lname, Uname, Email, Phumber, Age, Facebook, Major, Education, Music, Fav, message) VALUES('$_Fname', '$_Lname', '$_Uname', '$_Email', '$_Phumber', '$_Age', '$_Facebook', '$_Major', '$_Education', '$_Music', '$_Fav', '$_message') ") 
            or die(mysql_error());
header("Location: main.php");
exit();
    }
}
}   
}
?>

警告:无法修改标头信息 - 标头已由寄存器中的 (输出从寄存器.php:1 开始.php在第 47 行发送

-------------- 答案

这个问题不想解决,所以我添加了带有html代码的打印,以便在插入数据后重定向页面来解决它

      mysql_query("INSERT INTO loginphp 
            (Fname, Lname, Uname, Email, Phumber, Age, Facebook, Major, Education, Music, Fav, message) VALUES('$_Fname', '$_Lname', '$_Uname', '$_Email', '$_Phumber', '$_Age', '$_Facebook', '$_Major', '$_Education', '$_Music', '$_Fav', '$_message') ") 
            or die(mysql_error());
echo '<META HTTP-EQUIV="Refresh" CONTENT="0;URL=http://www.http://stackoverflow.com/">';
exit();

感谢大家尽力帮助!

删除标头(如 echoprint)之前的所有输出

并在标题后使用退出。

 header("Location: main.php");
 exit();

更新

如果打开输出缓冲,则可以在脚本中输出,但在缓冲区刷新之前,PHP 不必发送标头。在文件中使用 echo 、print() 或 printr() 检查某些内容。可能是这是问题所在,或者如果有文件,请检查空格数。

  $form = "<br>";
  //show the form
  $form .="<center>";
  $form .= '<form method .....';

............

并在?>之前的最后一行写下这个

   echo $form;

在更改标头之前,您必须删除所有echoprint_rvar_dump函数。在您的情况下,如果您config.php文件中没有类似echo函数,您可以尝试以下功能:

//ini_set('display_errors', 1); commented in editing
ob_start();
//include the header
require("config.php");
if($_GET['action'] == 'check'){
//your code
}
//other codes (echo and print and vardump)

最好使用像 Twig 这样的模板引擎

相关内容

最新更新