我想在单击提交按钮后重定向到我的管理页面


I want to redirect to my admin page after I click the submit button

>我正在使用标题功能点击提交按钮后尝试重定向。它不起作用,所以我尝试在顶部ob_start,然后在底部ob_clean。但是当我这样做时,它会自动将我推送到我想重定向到的页面。这是代码,任何帮助将不胜感激。

<?php 
ob_start();
// Create connection
require_once "../includes/db_conn.php";  
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

# Check connection
if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
} else {
   echo 'connected';
       }
if (isset($_POST['submit'])) {
$title   = $_POST['title'];
$content = $_POST['content'];
$image   = $_POST['image'];
 }   

 $sql = "INSERT INTO article (`title`, `content`, `image`) VALUES ('$title', '$content','$image');";
$result = $conn->query($sql);
$conn->close();
echo <<<END_OF_FORM
<form method='post' action='article_new.php'>
Title: 
<input type='text' value='$title' name='title'><br>
Content: 
<input type='text' value='$content' name='content'><br>
Image: 
<input type='text' value='$image' name='image'><br>

<input type='submit' value='new article' name='submit'>
</form>
END_OF_FORM;
ob_clean();
header('location: admin.php')
?>
<a href="admin.php">Admin</a>      

您应该在提交用户输入时处理它。所以把它们放在isset($_POST['submit'])块里。如果要在插入完成后重定向,请在其中进行过程,然后在最后重定向。你应该改用预准备语句,因为你容易出现SQL注入。

在进行任何标头重定向之前,不应显示输出。

<?php 
require_once "../includes/db_conn.php";
if(isset($_POST['submit'])) {
    $title   = $_POST['title'];
    $content = $_POST['content'];
    $image   = $_POST['image'];
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    # Check connection
    if ($conn->connect_error) {
       die("Connection failed: " . $conn->connect_error);
    }
    $sql = "INSERT INTO article (`title`, `content`, `image`) VALUES (?, ?, ?)";
    $insert = $conn->prepare($sql);
    $insert->bind_param('sss', $title, $content, $image);
    $insert->execute();
    header('Location: admin.php');
    exit;
}
?>
<form method='post' action='article_new.php'>
    <label>Title: </label>
    <input type='text' name='title'><br>
    <label>Content: </label>
    <input type='text' name='content'><br>
    <label>Image: </label>
    <input type='text' name='image'><br>
    <input type='submit' value='new article' name='submit'>
</form>

为什么 sql 和重定向在if(isset($_POST['submit']))条件之外?尝试这样的事情:

if (isset($_POST['submit'])) {
   $title   = $_POST['title'];
   $content = $_POST['content'];
   $image   = $_POST['image'];
   $sql = "INSERT INTO article (`title`, `content`, `image`) VALUES ('$title','$content','$image');";
  $result = $conn->query($sql);    
  $conn->close();    
  header('location: admin.php');
}   
echo <<<END_OF_FORM
<form method='post' action='article_new.php'>
Title: 
<input type='text' value='$title' name='title'><br>
Content: 
<input type='text' value='$content' name='content'><br>
Image: 
<input type='text' value='$image' name='image'><br>

<input type='submit' value='new article' name='submit'>
</form>
END_OF_FORM;
ob_clean();
?>
<a href="admin.php">Admin</a>

使用此逻辑,在提交表单并将数据插入数据库后,您的页面将被重定向。