2016-06-28 142 views
0

第一次发布在这里,所以我对任何坏习惯表示歉意。 我最近开始了关于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> 
+0

您的查询易受[SQL注入](https://en.wikipedia.org/wiki/SQL_injection)影响。始终**准备**,**绑定**和**执行**您的查询以防止任何类型的SQL注入。 –

+0

你没有任何名为'submit'来检查'$ _POST ['submit']'。您可能在提交输入中错过了'name =“submit”'。 – FirstOne

+0

其实,sql注入并不是mysqli_query = http://php.net/manual/en/function.mysql-query.php(“不支持多个查询”)的风险。无论如何,“准备,绑定和执行”是一个很好的建议。 –

回答

0

试试这个

在从改变

<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 

通知后蜱为表中的字段

0

更换

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()函数。