2017-04-09 21 views
0

So arbeite ich an einer Aufgabe für meine Klasse, in der ich einen Benutzernamen und ein Passwort nehmen und überprüfen Sie es mit einer Liste in einer Tabelle in einer Datenbank, die ich auch verbinde.Formular läuft nicht PHP

Problem ist, wenn ich auf den Submit-Button klicke nichts passiert Ich denke, das ist wahrscheinlich eine Art Fehler in der Syntax. Da ich neu in PHP bin, gibt es eine gute Möglichkeit, dass es etwas offensichtliches ist, aber nicht so sehr für mich.

Ich habe meine Datenbankdaten in zwei PHP-Arrays (eins für jedes Feld) gespeichert. Ich habe dann die Arrays in json konvertiert, die ich in meiner JavaScript-Funktion verwenden werde, die gegen die vom Benutzer eingegebenen Daten geprüft wird.

Ich bin ein Formular, ein PHP-Skript und ein JavaScript-Skript in einem Dokument enthalten könnte dies das Problem verursachen?

Hier ist mein Code und danke für jede Hilfe!

<html> 
<body> 

<?php 
/*config is included in order to protect my login info*/ 
require('config.php'); 
Echo "Project 4"; 

/*SQL connection*/ 
$conn = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME); 

/*Checking Connection*/ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
$sql = "SELECT * FROM p4Data"; 
$data2 = mysqli_query($conn, $sql); 

/*Display Data*/ 
echo "<table border = 1 style='float:left'> 
<tr> 
    <th>Username</th> 
    <th>Password</th> 
</tr>"; 

//Array Declarations 
$usernameArr = []; 
$passwordArr = []; 

while($records = mysqli_fetch_array($data2)){ 
    array_push($usernameArr,$records["username"]); 
    array_push($passwordArr,$records["password"]); 
} 
echo "</table>"; 

//JSON Conversion 
$usernameJson = json_encode($usernameArr); 
$passwordJson = json_encode($passwordArr); 
mysqli_close($conn); 
?> 



<!-- JAVA SECTION --> 
<script type="text/javascript"> 
    var obj = JSON.parse('<?= $usernameJson; ?>'); 
    var obj2 = JSON.parse('<?= $passwordJson; ?>'); 

    function verifUser(){ 
    var usernameData = document.getElementById("username").value; 
    var passwordData = document.getElementById("password").value; 
    for (i = 0; i < 30; i++){ 

     if(usernameData == obj[i]){ 
     alert("Username verfied at " + i); 
     indexLocated = i; 
     break; 
     } 
     } 
    } 
</script> 


<form name='form-main'> 
    Username: <input type="text" id="username"><br> 
    Password: <input type="password" id="password"><br> 
    <input type="button" value="Login >>" id="submitButton" 
onclick="verifUser()"> 
</form> 
</body> 
</html> 
+0

Wenn Sie Ihren Code ausführen sehen Sie Fehler im PHP-Fehlerprotokoll oder in der Entwicklerkonsole des Browsers (die in den meisten Browsern durch Drücken von F12 geöffnet werden kann)? Nicht, was Sie fragen, aber beachten Sie, dass das Senden aller Benutzernamen und Passwörter an den Browser ein furchtbarer Sicherheitsverstoß ist. Abgesehen von der Tatsache, dass unverschlüsselte Passwörter überhaupt nicht gespeichert werden sollten, sollten Sie dies tun sende nur den eingegebenen Wert an den Server und validiere ihn dort, nicht alle Passwörter an den Browser senden. – nnnnnn

+0

Das ist alles rückwärts. Sie sollten eine einfache Abfrage für den Benutzernamen und das Passwort in der Datenbank tun, nicht die gesamte Datenbank an den Browser senden – charlietfl

+0

Okay, das macht Sinn. Sie beabsichtigen also, die vom Benutzer eingegebenen Daten an das PHP-Skript zu senden und es mit den Mitgliedern der Arrays zu vergleichen, die ich eingerichtet habe. Ich sollte den ganzen JSON-Teil vergessen. Und müssen Sie sich keine Sorgen über die Verschlüsselung der Passwörter machen, da sie nur zum Lernen gedacht sind. –

Antwort

-1

Sie post-Methode verwenden können, um den Wert von Benutzereingaben wie diese

<form method="post"> 
<input type="text" name="username"> 
<input type="password" name="password"> 
<input type="submit" name="submit" value="login"> 
</form> 

und benutzen Sie diesen PHP-Code zu bekommen Wert zu erhalten, wenn das Formular

vorgelegt
if(isset($_POST['submit'])){ 
$username_input = $_POST['username']; 
$password_input = $_POST['password']; 
} 

Dann wird eine machen Abfrage nach SQL, wo Benutzername = $ Benutzername und Passwort = $ Passwort. Wie unten

$sql query = " SELECT * FROM TABLE WHERE username = $username and password = $password"; 

Und verwenden

$num_rows = mysqli_num_rows($sql_query); 

tun jetzt einen Scheck von $ num_rows = 1, die Eingangs Benutzername bedeutet und Passwort gültig else echo Nicht gültig

if($num_rows = 1){ 
**some code ** 
}else{ 
echo "Invalid information provided"; 
};