gpt4 book ai didi

php - header 在我的 PHP 代码中没有响应

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:15 24 4
gpt4 key购买 nike

我正在为 html 表单编写代码(使用 Bootstrap ),当一切都说完(输入验证 + 成功添加到数据库)时,我想返回主页(main.php)。

这是 newtask.php 的代码(为简单起见,我包含了注释而不是代码)

<!DOCTYPE html>
<html>

<head>

<meta charset="UTF-8">
<title>Nueva tarea</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link href="css/bootstrap-theme.min.css" rel="stylesheet">
<link href="css/thestyle.css" rel="stylesheet">

/Some scripts

</head>

<body>

<!----------------------Checking rights------------------------>
<?php include 'rights.php'?>

<!-------------------Top navigation bar---------------- -->

<!--------------- DB queries for some select fields in the form------------------->

<!---------------------- The FORM itself --------------------------->

<!-----------------------Validate the input ------------------------------>
<?php include 'validate.php' ?>

<!----------------------- Add an entry a DB table------------------------------>
<?php include 'addtask.php' ?>

</body>
</html>

这里是代码addtask.php

<?php

function changeDateFormat($input){
$list = explode('/',$input);
$newdate = $list[2] . '-' . $list[1] . '-' . $list[0];
return $newdate;
}

//Check if the form was validated
if ($validated == 0){
exit();
}

// Create connection
$con=mysqli_connect("localhost","task_user","task","tasks");

// Check connection
if (mysqli_connect_errno()) {
echo "No se puede conectar a la base de datos: " . mysqli_connect_error();
}
else{
//Adding a new task.

//Getting username ID.
$userid = $_SESSION["user_key_id"];
$name = $_POST["thename"];
$description = $_POST["desc"];
$start_date = changeDateFormat($_POST["date_s"]);
$update_date = changeDateFormat($_POST["date_u"]);
$status = $_POST["states"];
$percent = $_POST["percent"];
$proyect = $_POST["proyect"];

//Getting the project ID number.
$sqlquery="SELECT name,keyid FROM proyects WHERE name IN ('$proyect')";
$name_key_pair=mysqli_query($con,$sqlquery);
$proyect = mysqli_fetch_array($name_key_pair)['keyid'];

$sqlquery = "INSERT INTO tasks (proyect,start_date,update_date,description,status,percent,user,name) VALUES ('$proyect','$start_date','$update_date','$description','$status','$percent','$userid','$name')";
if (!mysqli_query($con,$sqlquery)){
echo '<h3><label> ERROR en el query: ' . mysqli_error($con) . '</label></h3>';
}
else{
mysqli_close($con);
header("location:main.php");
}
}

?>

我使用了 ECHO 来验证代码是否到达了 header 。还有 phpmyadmin 来验证该条目是否已添加到数据库中。这也使用用户登录系统。用户登录使用相同的header命令在用户登录成功后将用户发送到main.php。

谁能告诉我为什么标题在这种特殊情况下不起作用?

只是为了澄清发生了什么,当用户提交表单时,他停留在 newtask.php 而不是去 main.php。如果我尝试从导航栏转到那里,我可以毫无问题地到达 main.php。

最佳答案

header 只能在第一次输出之前发送(在 UTF-8 中 Bom 将是一个输出)。

按照输入、过程、输出的原则进行开发。

  • 因此,首先您应该获取输入($_POST$_GET)并将其保存到您的对象和变量中。
  • 然后处理输入(计算、保存等...)
  • 现在是发送 header 的好时机,
  • 最终显示数据。

这是一个基本原则,您应该从这里开始。更复杂的是 MVC

快速修复是使用输出缓冲区,这可以通过 ob_start() 轻松实现。和 ob_end_flush()方法。

关于php - header 在我的 PHP 代码中没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25444311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com