PHP表单提交刷新
问题描述:
第一次发布在这里,所以我对任何坏习惯表示歉意。 我最近开始了关于php的在线YouTube教程以及如何创建博客。 我最终被其他东西占据了,并且回来尝试完成我开始的事情,发生了2件事情。 1:我的教程已经从YouTube上删除(必须是版权问题),第二我已经完全忘记了使用的方法。我假设,如果我是一位经验丰富的编码员,这很容易破译,但我现在尝试几天后却没有运气。PHP表单提交刷新
此代码用于我的博客提交表单。如果我手动将我的HTML输入到SQL数据库中,博客正在工作,但如果我使用此表单,我似乎会得到所有信息都已刷新的提交页面。没有信息被添加到数据库。
任何人有一个想法?我在工地附近的一个很好的搜索,但我跑进一个死胡同,由于我什么我其实是寻找(很多解决方案有关的JavaScript)
所有帮助知识的缺乏将不胜感激。
真诚
SGT菜鸟
<?php error_reporting(E_ALL); ini_set('display_errors', 1);
session_start();
if (isset($_SESSION['username'])) {
$username = ($_SESSION['username']);
}
else {
header('Location: ../index.php');
die();
}
if (isset($_POST['submit']))
if ($_POST['submit']) {
$title = $_POST['Post_Title'];
$content = $_POST['Post_Content'];
$date = $_POST['Post_Date'];
include_once("../admin/connection.php");
$sql = "INSERT INTO `posts` (Post_Title, Post_Content, Post_Date)
VALUES ('$title','$content','$date')";
mysqli_query($dbcon,$sql);
echo "Post has been added to the database";
}
else {
header('Location: index.php');
die();
}
?>
<html>
<div>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="//cdn.ckeditor.com/4.5.9/standard/ckeditor.js"></script>
<title> Insert Post </title>
</head>
<div>
<body>
<div id= 'cmssubmissionform'>
<form action="" method="post">
<p>
<h1> Post Title</h1>
<input type="text" name= "Post_Title"/>
</p>
<h1> Post Date</h1>
<input type="text" name= "Post_Date"/>
</p>
<p>
<h1>Post Content </h1>
<textarea name="Post_Content"></textarea>
<script>
CKEDITOR.replace('Post_Content');
</script>
</p>
<p>
<input type = "submit" value="submit" />
</p>
</form>
</div>
</div>
</div>
</body>
答
试试这个
在从改变
<input type = "submit" value="submit" name="submit"/>
你忘了把name属性
PHP
<?php error_reporting(E_ALL); ini_set('display_errors', 1);
session_start();
include_once("../admin/connection.php");
if (isset($_SESSION['username'])) {
$username = ($_SESSION['username']);
}
else {
header('Location: ../index.php');
die();
}
if (isset($_POST['submit'])){
$title = $_POST['Post_Title'];
$content = $_POST['Post_Content'];
$date = $_POST['Post_Date'];
$sql = "INSERT INTO `posts` (`Post_Title`, `Post_Content`, `Post_Date`)
VALUES ('$title','$content','$date')";
if(mysqli_query($dbcon,$sql)){
echo "Post has been added to the database";
}else{
header('Location: index.php');
die();
}
}
?>
注意我也改变你的SQL语句
INSERT INTO `posts` (`Post_Title`, `Post_Content`, `Post_Date`)
VALUES ('$title','$content','$date
通知后蜱为表中的字段
答
更换
if (isset($_POST['submit']))
if ($_POST['submit']) {
与
if (isset($_POST['submit'])) {
,然后用
<input type ="submit" name="submit" value="submit" />
但是更换
<input type = "submit" value="submit" />
,在这个阶段,我会强烈建议在开始用不同的教程。另外,正如在注释中提到的那样,无论何时从用户接收参数并将它们放入数据库查询中,都必须确保字符串不会操纵查询(想象别人在日期中写了0'; DROP TABLE `blog`; --
字段(和“博客”是你的博客文章表的名称)。这将是非常灾难性的,不是吗?
所以当你处理输入数据时,要么使用mysqli包的prepare和bind方法,或者首先将字符串传递给mysqli_real_escape_string()
函数。
您的查询易受[SQL注入](https://en.wikipedia.org/wiki/SQL_injection)影响。始终**准备**,**绑定**和**执行**您的查询以防止任何类型的SQL注入。 –
你没有任何名为'submit'来检查'$ _POST ['submit']'。您可能在提交输入中错过了'name =“submit”'。 – FirstOne
其实,sql注入并不是mysqli_query = http://php.net/manual/en/function.mysql-query.php(“不支持多个查询”)的风险。无论如何,“准备,绑定和执行”是一个很好的建议。 –