【问题标题】:PHP header redirect not working on form submitPHP标头重定向不适用于表单提交
【发布时间】:2015-09-30 22:36:11
【问题描述】:

我有一个表格可以更新数据库中的信息,一切都可以正常工作......除了某些原因标题对我不起作用。我在同一站点内的许多其他脚本中使用标头重定向;只是这个脚本头重定向不起作用。我知道标题所在的 if 语句被调用,因为标题正下方的回显显示在页面上,它只是忽略了标题行。如果您有任何建议将非常有帮助。

下面的代码已经被最小化,所以每个人都不会太长时间阅读,但如果它仍然是一个问题,请进一步清理它

表格

<form class="editUser" action="uploadEmployee.php" method="post" enctype="multipart/form-data" />
    <input name="editUserFirstName" id="editUserFirstName" type="text" placeholder="Enter The User's First Name" />
    <label>Employee's Coverage</label>
    <input type="file" name="file_array[]" placeholder="Add The Employees Coverage" />
    <input name="addUserSubmit" type="submit" value="Submit" />
</form>

上传脚本

<?php

include("includes/connect.inc.php");

if(isset($_FILES['file_array'])){

    $day = date('d');
    $month = date('m');
    $dateObj   = DateTime::createFromFormat('!m', $month);
    $monthName = $dateObj->format('F'); // March
    $year = date('Y');
    $date = $monthName . ", " . $day . ", " . $year;
    $name_array = $_FILES['file_array']['name'];
    $tmp_name_array = $_FILES['file_array']['tmp_name'];
    $type_array = $_FILES['file_array']['type'];
    $size_array = $_FILES['file_array']['size'];
    $error_array = $_FILES['file_array']['error'];
    $payCheque  = $name_array[0];
    $T4         = $name_array[1];
    $coverage   = $name_array[2];
    $selectedId = $_POST['editId'];
    $name       = $_POST['editUserFirstName'];

    if($_POST['editUserPermission']){
      $permission = "1";
    }else{
      $permission = "0";
    }


    for($i = 0; $i < count($tmp_name_array); $i++){

        if(move_uploaded_file($tmp_name_array[$i], "uploads/".$name_array[$i])){

             $title = "This Is A Test Title";
             $icon = "0";
             if($i == 0){
             $icon = "1";
             $title = "You Have Received A New Pay Cheque";
             $comment = "Hello " .  $name . ", click view document to view and download your pay cheque for " . $date . ". Your pay cheque will be a PDF file. Thank you.";
              }

             $sql = "INSERT INTO securedFiles (title, date, PDF, comment, idOfUser, icon)
              VALUES ('$title', '$date', '$name_array[$i]', '$comment', '$documentId', '$icon')";

              if ($connect->query($sql) === TRUE) {
                //header("Location: hub.php");
              } else {
                  echo "Error: " . $sql . "<br>" . $connect->error;
              }

              echo $payCheque ." upload is complete<br>";

        } else {
            echo "move_uploaded_file function failed for ".$name_array[$i]."<br>";
        }
    }

   $sql = "UPDATE dealerEmployees SET firstName = '$_POST[editUserFirstName]', lastName = '$_POST[editUserLastName]', password = '$_POST[editUserPW]', permission = '$permission', address = '$_POST[editUserAddress]', email = '$_POST[editUserEmail]', phone = '$_POST[editUserPhone]' WHERE id = $selectedId";

    if ($connect->query($sql) === TRUE) {
     header('Location: hub.php');
     echo "Success";
    } else {
        echo "Error: " . $sql . "<br>" . $connect->error;
    }    

}


 //$connect->close();


?>

【问题讨论】:

  • 不要将用户输入直接传递给 SQL 查询。通过这种方式可以进行 SQL 注入,请使用准备好的语句。
  • 好的,谢谢你的建议,我会努力解决这个问题

标签: php mysql forms redirect header


【解决方案1】:

header() 必须在发送任何实际输出之前调用,无论是通过普通 HTML 标记、文件中的空白行还是通过 PHP。

在你的情况下,你在 header() 之前使用 echo

所以你可以使用重定向方法(我在所有项目中都使用过,从来没有问题)

query($sql) === TRUE) { echo ""; 回声“成功”; } 别的 { 回声“错误:”。 $sql 。 “
”。 $连接->错误; } ?>

【讨论】:

    猜你喜欢
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2015-02-04
    • 2016-09-22
    • 2013-09-10
    • 1970-01-01
    • 2014-03-03
    相关资源
    最近更新 更多