Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;无法修改标题信息-标题已由“发送”;错误。成功提交表单后如何重定向_Php_Header - Fatal编程技术网

Php &引用;无法修改标题信息-标题已由“发送”;错误。成功提交表单后如何重定向

Php &引用;无法修改标题信息-标题已由“发送”;错误。成功提交表单后如何重定向,php,header,Php,Header,下面的代码在成功提交表单时使用标题进行重定向,并检查是否所有错误变量都设置为NULL以重定向到另一个php页面。 请帮助我,因为我已经尝试了很多方法,但似乎没有一种适合条件重定向 <?php $proName=$proNameErr=$email=$emailErr=$catErr=''; if(isset($_POST["submit"])) { if (empty($_POST["proName"])) { $proNameErr = "Product name is required

下面的代码在成功提交表单时使用标题进行重定向,并检查是否所有错误变量都设置为NULL以重定向到另一个php页面。 请帮助我,因为我已经尝试了很多方法,但似乎没有一种适合条件重定向

<?php
$proName=$proNameErr=$email=$emailErr=$catErr='';
if(isset($_POST["submit"]))
{
if (empty($_POST["proName"])) {
$proNameErr = "Product name is required";
}
else if(!preg_match('/^[a-z0-9 .&]+$/i',$_POST['proName'])){
$proNameErr = "Invalid product Name";
}

else{
$proName = test_input($_POST["proName"]);
}

if($_POST['cat']==0)
{
$catErr="please select an option";
}
else
{
$cat=$_POST['cat'];
}

if (empty($_POST["email"])) {
$email = "";
}
else{
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}

}
if($proNameErr=='' &&  $emailErr=='' && $catErr=='')
{
header("Location: addMedia.php", true, 302);
die();
}
}

function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>

<!DOCTYPE html>
<html>
<body>
<h1>ADD Product</h1>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"   method="post"  autocomplete="on">
Product Name: <input type="text" name="proName" placeholder="Product  Name" maxlength="35" size="40" required value="<?php echo $proName?>">*
<span class="error"><?php echo $proNameErr;?></span><br><br>

Category: <select name="cat" id="cat" size="1" required>
<option value=0>Select...</option>
<option value=1>John</option>
<option value=2>Paul</option>
<option value=3>Ringo</option>
<option value=4>George</option>
<option value=5>ram</option>
<option value=6>rahim</option>
</select>*<span class="error"><?php echo $catErr;?></span><br><br>

Email Address: <input type="email" name="email" value="<?php echo  $email?>"> <span class="error"><?php echo $emailErr;?></span><br><br>

<input type="submit" value="submit" name="submit">
</form>

添加产品

在这种情况下,输出缓冲是您的朋友。 在每一页的顶部(或者至少是这里讨论的那一页)添加


在标头调用之前,您必须已将某些内容输出到浏览器。它不可能是您向我们展示的代码的精确副本。检查:

  • 在php开始标记之前有html吗

  • php开始标记前有空格吗

  • echo在该脚本之前是否包含另一个php脚本

  • 编码是否为带BOM的utf8


这些可能是导致错误的原因。

可能重复的代码(或包含的文件)在调用header函数之前确实发送了一些输出。你必须找出什么/在哪里,并防止这种情况。嗯,找到问题的原因而不是在上面分层解决问题,不是更有意义吗?除此之外:你为什么在最后冲水?没有要发送到客户端的输出。。。
ob_start();

/* the rest of the code */

/*and at the end*/

ob_end_flush();