所以我有一个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;
答案 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
。