3

我希望通过位于同一页面上的 PHP 代码将 php 表单中的数据插入到 mysql 数据库中。

<?php
if (isset($_POST['submit'])){
$con=mysqli_connect("localhost","root","********","*********");
$sql="INSERT INTO drafts (id, title, description, post, author, category, declined)
VALUES
('','$_POST[title]',$_POST[description],$_POST[post],$_POST[author],$_POST[category],0)";
echo "Droplet Successfully Added!";}
?>

<form action="create-post.php" method="post">
  Title: <br /><input type="text" name="title"><br /><br />
  Description: <br /><textarea name="description"></textarea><br /><br />
  Post: <br /><textarea name="post"></textarea><br /><br />
  Author: <br /><input type="text" name="author"><br /><br />
  Category: <br /><input type="text" name="category"><br /><br />
  <input class="btn btn-info" type="submit" value="Submit for review">
</form>
4

2 回答 2

-2

目前,当用户填写上面的表单并点击提交按钮时,表单数据被发送到一个名为 .php 的 PHP 文件中进行处理create-post.php

现在,如果您将action属性留空,表单将提交给自身:

<?php
if (isset($_POST['submit'])) {

    $con=mysqli_connect("localhost","root","********","*********");
    $sql="INSERT INTO drafts (id, title, description, post, author, category, declined)
    VALUES
    ('','$_POST[title]',$_POST[description],$_POST[post],$_POST[author],$_POST[category],0)";
    echo "Droplet Successfully Added!";

}
?>

<form action="" method="post">
    Title: <br /><input type="text" name="title"><br /><br />
    Description: <br /><textarea name="description"></textarea><br /><br />
    Post: <br /><textarea name="post"></textarea><br /><br />
    Author: <br /><input type="text" name="author"><br /><br />
    Category: <br /><input type="text" name="category"><br /><br />
    <input class="btn btn-info" type="submit" value="Submit for review">
</form>

当用户访问页面时,$_POST['submit']不会被设置,if块内的语句不会被执行并显示表单。填写完表单并且用户单击提交按钮后,$_POST超级全局数组将填充表单输入,if条件将评估为TRUE,因此语句将被执行。


无关说明:您当前正在接受用户输入并将其直接插入到您的查询中。它容易受到SQL 注入的影响。永远不要相信用户输入。请参阅bobby-tables以了解有关 SQL 注入以及如何防止它的更多信息。

于 2013-09-08T18:05:23.113 回答
-2
  1. 更改<form action="create-post.php" method="post"> to <form action="" method="post">为同一页插入。

  2. 更正$sql="INSERT INTO drafts (标题,描述,帖子,作者,类别被,拒绝之类的查询) VALUES ('$_POST[title]', '$_POST[description]', '$_POST[post]', '$_POST[author]', '$_POST[category]', 0)";

  3. 添加这一行$query = mysqli_query($con,$sql);

这三个更改将完成工作,但它不是最佳实践,您正在接受来自用户的直接输入,因此容易受到 SQL 注入的影响。

于 2016-02-22T04:53:17.870 回答