2017-01-13 34 views
0

所以我有一個SQL數據庫有一個帳戶和信息表,另一個用於存儲對文章的評論。我有一個提交評論的表單,它工作的很好,但我想實現一個功能來防止垃圾郵件和非註冊帳戶。我試圖找到一種方法來使下面的代碼工作,以便它會調用我的帳戶表並檢查username部分是否與表單中輸入的內容匹配。如何使用SQL數據庫驗證表單?

我希望它通過我的username列檢查表,看看在框中輸入的內容是否在數據庫中,如果它沒有被註冊,它將不會提交。

我的問題我一直運行到的是,我試試這個

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

但我做到這一點,當它認爲「用戶名」,也就是用戶名必須以正確提交。

我不希望每個用戶名都需要是「用戶名」才能提交,我只是希望它通過我的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"; 
     } 
} 

>

+0

你在這裏混合不同的mysql apis,你不能那樣做。 –

+0

你在這個if($ _POST ['Uname'] =='username')中有'''',這也失敗了,你的'$ username'也失敗了。這個錯誤太多了。 –

+0

*「所以在做出所需的更改之後,我以前的代碼是否應該像這樣?」 - 不,我強烈建議您訪問php.net網站,查看這些mysql函數並堅持語法。 –

回答

2

顯然,你做的事情是不正確的,因爲現在你把條件爲:

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

,這意味着你是說誰的名字是「用戶名」的任何用戶應能夠發表評論,但你想達到的是,任何有效的用戶,並存在數據庫中的用戶應該能夠評論。所以,你應該寫一個選擇SQL查詢的用戶:

$username = $_POST['Uname']; 

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

然後,

執行

mysqli_num_rows 

檢查,如果你得到任何大於零。如果是,則允許提交評論。

+0

我上面所做的編輯是否適用於此? – Ghost4237

+0

不,這不對。什麼是$ rows = $ query-> num_rows ;.我在代碼中看不到$ query。 –

+0

這是從我檢查另一個網站上的mysqli_num_rows – Ghost4237

0

只需申請檢查,只有loggedIn用戶可以comment。所以如果用戶不存在於users表中,它將不會是loggedIn也不可能是comment