如何使用SQL数据库验证表单?

时间:2017-01-13 09:44:23

标签: php mysql sql-server forms

所以我有一个SQL数据库,其中包含帐户和信息表,另一个用于存储文章评论。我有一个提交评论的表单,它工作正常,但我想实现一个功能,以防止垃圾邮件和非注册帐户。我试图找到一种方法来使下面的代码工作,以便它调用我的帐户表并检查username部分是否与表单中输入的内容相匹配。

我希望它通过表格中的username列进行检查,看看框中输入的内容是否实际上也在数据库中,如果它没有注册就赢了&# 39;提交。

我遇到的问题是我试试这个

<?
         if ($_POST['Uname']==`username`){
         $strSQL="INSERT INTO `comments`
         (`name`,`comment`,`date`,`#`) VALUES
         ('".$_POST['Uname']."','".$_POST['Comment']."',
         '".$_POST['Date']."','".$_POST['#']."')";
         }
             else{
             echo "Username invalid";
             }
}
?>

但是,当我这样做时,它认为&#34;用户名&#34;是用户名需要正确提交的内容。

我不希望每个用户名都需要&#34;用户名&#34;为了让他们提交,我只想让它检查我的username列,看看输入的内容是否是SQL列中注册的用户名之一。

我不确定这是否可行,或者我是否有任何意义,但这是我在本网站上的第一篇文章,我将不胜感激,我将不胜感激。

完整代码在

之下
<?
     if ($_POST['Enter']=='Enter'){ 
     $con = mysql_connect
     ("sql***.*******.com","*****","*******");
     $db_selected = mysql_select_db("*********",$con); //My login
     $test2=$_GET['ID']; //Ignore
     $_POST['#']=$test2; //Ignore
     $sql="Select * from `Articles` and `Accounts`"; //For pulling data
     mysql_query($strSQL,$con);

         if ( ? == ? ){  //What should go here?
         $strSQL="INSERT INTO `comments`
         (`name`,`comment`,`date`,`#`) VALUES
         ('".$_POST['Uname']."','".$_POST['Comment']."',
         '".$_POST['Date']."','".$_POST['#']."')";
         }
             else{
             echo "Username invalid";
             }
 }
?>

修改

因此,在进行所需的更改之后,我之前的代码是否会像这样结束?

 <?
 if ($_POST['Enter']=='Enter'){
 $con = mysql_connect
 ("*******","********","*****");
 $db_selected = mysql_select_db("*****",$con);
 $test2=$_GET['ID'];
 $_POST['#']=$test2;
 $username = $_POST['Uname'];
 $sql = "Select `id` from `Accounts` where `username` = $username";
 mysqli_num_rows($sql,$result);
 $row_cnt = mysqli_num_rows($result);
 printf("Result set has %d rows.\n", $row_cnt);
 echo $result;

    if ($row_cnt!=''){
    $strSQL="INSERT INTO `comments`
    (`name`,`comment`,`date`,`#`) VALUES ('".$_POST['Uname']."',
    '".$_POST['Comment']."',
    '".$_POST['Date']."',
    '".$_POST['#']."')";
    }
        else{
        echo "Username invalid";
        }
 } 

&GT;

2 个答案:

答案 0 :(得分:2)

显然你所做的事情是不正确的,因为现在你的条件是:

if ($_POST['Uname']==`username`)

这意味着你说任何名字为'username'的用户都应该能够发表评论,但你想要达到的目标是,任何有效用户且存在于db中的用户应该能够发表评论。因此,您应该编写一个select sql来检查用户:

$username = $_POST['Uname'];

$sql = "select id from yourusertable where username = $username";

然后,

执行

  mysqli_num_rows 

检查你是否得到大于零的东西。如果是,则允许提交评论。

答案 1 :(得分:0)

只需应用loggedIn用户可以comment的检查。因此,如果用户不在users表中,则不会loggedIn也不会comment