Wie kann ich ein Formular mit einer SQL-database überprüfen?

Also habe ich eine SQL-database, die eine Tabelle für Konten und Infos hat, und eine andere zum memoryn von Kommentaren zu Artikeln. Ich habe ein Formular für die Einreichung von Kommentaren und es funktioniert ganz gut, aber ich wollte ein Feature implementieren, um Spam und nicht registrierte Konten zu verhindern. Ich habe versucht, einen path zu finden, um den folgenden Code zu arbeiten, damit es auf meine Account-Tabelle aufrufen und überprüfen, ob der username Abschnitt übereinstimmt, was in das Formular eingegeben wurde.

Ich möchte, dass es durch meine username Spalte auf dem Tisch zu überprüfen, um zu sehen, wenn was in der Box eingegeben wurde eigentlich auch in der database, so dass, wenn es nicht registriert wurde es nicht einreichen.

Mein Problem, dass ich weiter laufe, ist, dass ich das versuche

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

Aber wenn ich das tue, denkt man, dass "Benutzername" ist, was der Benutzername sein muss, um ordnungsgemäß einzureichen.

Ich möchte nicht, dass jeder Benutzername "Benutzername" sein muss, damit sie einreichen können. Ich möchte nur, dass es durch meine username Spalte überprüft, um zu sehen, ob was eingegeben wurde, einer der registrierten Benutzernamen in der SQL-Spalte ist.

Ich bin mir nicht sicher, ob dies möglich ist, oder wenn ich irgendeinen Sinn mache, aber das ist mein erster Beitrag auf dieser Seite und ich würde mich über jede Hilfe freuen, die ich bekommen könnte.

Der vollständige Code ist unten

 <? 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"; } } ?> 

Bearbeiten

Also, nachdem die Änderungen erforderlich sind, sollte mein vorheriger Code so enden?

  <? 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"; } } 

?>

Offensichtlich ist das, was du tust, nicht korrekt, da wirst du jetzt als:

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

was bedeutet, dass Sie sagen, jeder Benutzer, der Name ist 'Benutzername' sollte in der Lage sein zu kommentieren, aber was Sie erreichen wollen, ist jeder Benutzer, der gültiger Benutzer ist und ist in db existieren sollte in der Lage sein zu kommentieren. Also dafür solltest du einen ausgewählten sql schreiben, um den Benutzer zu überprüfen:

 $username = $_POST['Uname']; $sql = "select id from yourusertable where username = $username"; 

dann,

ausführen

  mysqli_num_rows 

um zu überprüfen, ob du etwas größer als Null bekommst. Wenn ja, dann erlauben Sie, Kommentare zu übermitteln.

Einfach den Scheck anwenden, den nur loggedIn ist. Also, wenn der Benutzer nicht in der users Tabelle existieren wird es nicht loggedIn und kann nicht comment .