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>
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
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
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. –