刷新页面[Double Submission]时出现空帖子(PHP/MYSQL)

刷新页面[Double Submission]时出现空帖子(PHP/MYSQL),php,mysql,Php,Mysql,我是MYSQL和PHP的新手,所以不要介意我的被盗代码XD 我想用PHP/HTML发布简单的文章&保存在数据库中 Ayway这里是我为在home.php上发布内容而创建的文件 admin.php <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "dblogin"; $newsTitle = null; $newsShortDes

我是MYSQL和PHP的新手,所以不要介意我的被盗代码XD 我想用PHP/HTML发布简单的文章&保存在数据库中

Ayway这里是我为在home.php上发布内容而创建的文件

admin.php

<?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "dblogin";

     $newsTitle = null;
     $newsShortDescription = null;
     $newsFullContent = null;
     $newsColor = null;
     $newsIcon = null;
     $users_website = null;
     $users_comment = null;

    if(isset($_POST['btn-post']))
    {
     $newsTitle = $_POST['news_title'];
     $newsShortDescription = $_POST['news_short_description'];
     $newsFullContent = $_POST['news_full_content'];
     $newsColor = $_POST['news_color'];
     $newsIcon = $_POST['news_author'];
    }

    $newsTitle = mysql_real_escape_string($newsTitle);
    $newsShortDescription = mysql_real_escape_string($newsShortDescription);
    $users_website = mysql_real_escape_string($users_website);
    $users_comment = mysql_real_escape_string($users_comment);

    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO info_news (news_title, news_short_description, news_full_content, news_author, news_color)
    VALUES ('$newsTitle', '$newsShortDescription', '$newsFullContent', '$newsIcon', '$newsColor')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "New record created successfully";
    $conn = null;
    ?> 

      <form method="post">
          <div class="form-group">
           <input type="text" class="form-control" name="news_title" placeholder="Title" required />
          </div>
          <div class="form-group">
           <input type="text" class="form-control" name="news_short_description" placeholder="Description" required />
          </div>
          <div class="form-group">
           <input type="text" class="form-control" name="news_full_content" placeholder="Full Content" required />
          </div>
          <div class="form-group">
           <input type="text" class="form-control" name="news_color" placeholder="Color" required />
          </div>
          <div class="form-group">
           <input type="text" class="form-control" name="news_author" placeholder="Icon" required />
          </div>
          <div class="clearfix"></div>
          <div class="form-group">
            <button type="submit" name="btn-post" class="btn btn-block btn-primary">
               Post
            </button>
          </div>
          <br />
      </form>

插入空行的不是空帖子,请尝试以下操作:

if(isset($_POST['btn-post']))
{
$newsTitle = $_POST['news_title'];
$newsShortDescription = $_POST['news_short_description'];
$newsFullContent = $_POST['news_full_content'];
$newsColor = $_POST['news_color'];
$newsIcon = $_POST['news_author'];

$newsTitle = mysql_real_escape_string($newsTitle);
$newsShortDescription = mysql_real_escape_string($newsShortDescription);
$users_website = mysql_real_escape_string($users_website);
$users_comment = mysql_real_escape_string($users_comment);
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO info_news (news_title, news_short_description, news_full_content, news_author, news_color)
VALUES ('$newsTitle', '$newsShortDescription', '$newsFullContent', '$newsIcon',   '$newsColor')";
// use exec() because no results are returned
$conn->exec($sql);
echo "New record created successfully";
$conn = null;
}
我将“}”移到$conn=null;;)之后


顺便说一句,你应该在每篇文章后重定向。因此,在页面刷新时不会再次发送帖子


当内容已经被“回响”时,您无法重定向。多亏了缓冲区,它可以工作一段时间,但当报头的大小增加时(比如4kB,取决于服务器设置),总有一天会失败。(在您发布的github中看到过几次)

插入空行的不是一篇空文,请尝试以下方法:

if(isset($_POST['btn-post']))
{
$newsTitle = $_POST['news_title'];
$newsShortDescription = $_POST['news_short_description'];
$newsFullContent = $_POST['news_full_content'];
$newsColor = $_POST['news_color'];
$newsIcon = $_POST['news_author'];

$newsTitle = mysql_real_escape_string($newsTitle);
$newsShortDescription = mysql_real_escape_string($newsShortDescription);
$users_website = mysql_real_escape_string($users_website);
$users_comment = mysql_real_escape_string($users_comment);
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO info_news (news_title, news_short_description, news_full_content, news_author, news_color)
VALUES ('$newsTitle', '$newsShortDescription', '$newsFullContent', '$newsIcon',   '$newsColor')";
// use exec() because no results are returned
$conn->exec($sql);
echo "New record created successfully";
$conn = null;
}
我将“}”移到$conn=null;;)之后


顺便说一句,你应该在每篇文章后重定向。因此,在页面刷新时不会再次发送帖子


当内容已经被“回响”时,您无法重定向。多亏了缓冲区,它可以工作一段时间,但当报头的大小增加时(比如4kB,取决于服务器设置),总有一天会失败。(在你发布的github上看过几次)

首先,你将MySQL API与
MySQL\u real\u escape\u string()和PDO混合在一起,这是为什么?你不能。哇,这太快了,没想到会有人这样回复XD,你能告诉我更多细节吗,因为我是PHP&MYSQLread的新手,然后在成功提交时使用标题重定向,并使用条件
empty()/isset()
。但您不能同时“回显”和使用标题。您还可以将列更改为非NULL并处理错误。我已经给了你足够的时间来修复代码。是的,非常感谢:)首先,你将MySQL API与
MySQL\u real\u escape\u string()
和PDO混合在一起,这是为什么?你不能。哇,这太快了,没想到会有人这样回复XD,你能告诉我更多细节吗,因为我是PHP&MYSQLread的新手,然后在成功提交时使用标题重定向,并使用条件
empty()/isset()
。但您不能同时“回显”和使用标题。您还可以将列更改为非NULL并处理错误。我已经给了你足够的时间来修复你的代码。是的,你做了,非常感谢:)耶!你修好了吗。现在剩下的就是结束会话并重定向到新页面。非常感谢:)无论如何,我不想把这个卖给任何人,也不想从中赚钱。它也在GitHub上,你可以得到代码并做任何你想做的事情:)很抱歉我不得不这么说,但是你的代码有点卖不出去。继续学习,很高兴帮助你:)我总是在最前面,但我喜欢做一些事情,所以我只是先玩它,然后我想为什么不。还有,我必须清理代码,因为af.XDYay太乱了!你修好了吗。现在剩下的就是结束会话并重定向到新页面。非常感谢:)无论如何,我不想把这个卖给任何人,也不想从中赚钱。它也在GitHub上,你可以得到代码并做任何你想做的事情:)很抱歉我不得不这么说,但是你的代码有点卖不出去。继续学习,很高兴帮助你:)我总是在最前面,但我喜欢做一些事情,所以我只是先玩它,然后我想为什么不。而且,我必须清理代码,因为af.XD太乱了