刷新页面[Double Submission]时出现空帖子(PHP/MYSQL)
我是MYSQL和PHP的新手,所以不要介意我的被盗代码XD 我想用PHP/HTML发布简单的文章&保存在数据库中 Ayway这里是我为在home.php上发布内容而创建的文件 admin.php刷新页面[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
<?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太乱了