Ich versuche zu verstehen, was mit meinem Code falsch gelaufen ist. Es ist ein Login-Prozess zu cp. Sie erhalten das richtige Ergebnis, wenn Sie den richtigen Benutzernamen eingeben (nur Benutzername noch, nur für diesen Test). aber du bekommst nichts, wenn du es nicht tust - nichts, wofür ich es programmiert habe.Es passiert nichts beim Eingeben eines falschen Benutzernamens. Was ist falsch in meinem Code?
Ich binwirklich verzweifelt, versuchte dies die ganze Nacht zu lösen. Bitte hilf mir. hier ist der Code.
Berechnungen:
if (isset ($ _ POST [ 'connection_made'])) {// eine Verbindung hergestellt worden ist? einen versteckten Eingang mit
$form_user = forms_filter($_POST['form_user']); // filter any tags or any unwanted actions first
$form_pass = forms_filter($_POST['form_pass']); // filter any tags or any unwanted actions first
if (strlen($form_user) > 5 AND strlen($form_user) < 16 AND strlen($form_pass) > 5 AND strlen($form_pass) < 16) {
if (login_blank_filter($form_user, $form_pass) == true) { // are those values length shorter than the minimal value or longer?
$user_name = $form_user;
$raw_password = $form_pass;
$user_pass = password_hash($raw_password, PASSWORD_DEFAULT); // generating a hashed and salted password
$cp_validate_login = mysqli_query($data_connection, "SELECT * FROM `admins` WHERE `username` = '$user_name' ");
if (!$cp_validate_login) { die('error: ' . mysql_error()); }
while ($admin_row = mysqli_fetch_array($cp_validate_login)) {
if (mysqli_num_rows($cp_validate_login) == 1) {
echo "you made it.";
echo mysqli_num_rows($cp_validate_login);
}
else {
echo "not yet there.";
echo mysqli_num_rows($cp_validate_login);
}
}
}
else {
header('Location: index.php?login_status=2');
}
}
}
Form:
<?php
if (isset($_GET['login_status'])) {
switch ($_GET['login_status']) {
case 1:
echo "wrong username or password";
break;
case 2:
echo "the inputs has to be filled";
break;
case 3:
echo "username\passwords are too short or too long";
break;
default:
echo "unknown error";
}
}
else {
echo "welcome. log in to the control panel please";
}
?>
</div>
<form name="loginform" method="post" action="index.php" onSubmit="return validateBlank()">
<input type="hidden" name="connection_made" value="">
<div class="login_layout">
<div class="login_right_layout">
user:
</div>
<div class="login_left_layout">
<input class="login_input" name="form_user" type="text">
</div>
<div class="login_right_layout">
password:
</div>
<div class="login_left_layout">
<input class="login_input" name="form_pass" type="password">
</div>
</div>
<input type="submit" value="כניסה" class="login_submit">
</form>
</center>
mir bitte helfen. Danke.
Erstens, vielen Dank. 1 - Ich bin froh, dass Sie mich über diese gefährlichen Vars in der Abfrage gewarnt haben. Problem ist mit der Verbindung, die du mir gabst - ich kann es nicht verstehen, weil es Beispiele sind, die von OOP geschrieben werden - etwas, das ich nicht verstehe oder verwende. Kannst du mir bitte etwas anderes geben? Auch, danke für die Lösung. sollte es selbst herausgefunden haben (wahrscheinlich 24 Stunden wach zu bleiben ist nicht die beste Idee). Über die Verwendung von Somere Code - das ist eine Sache, die ich nie tun möchte. und noch einmal, Mangel an OOP-Wissen verhindert, dass ich damit arbeiten kann. Kann ich meinen aktuellen Code einfach "aufbessern"? –
durch die Art und Weise, ist dies, wie ich gefiltert alle: Funktion forms_filter ($ form_value) { \t Rückkehr strip (htmlspecialchars (strip_tags ($ form_value))); } –
@OriR Ihre 'forms_filter()' Funktion ist nicht annähernd genug, um es sicher zu machen; Die einzige sichere Option sind vorbereitete Anweisungen mit Parametern. Wenn jemand einen Nutzernamen wie "ODER 1 = 1 -" einreicht, wird er dem Administrator Zugriff gewähren. Wie für die Verwendung von jemand anderen Code: das ist absolut * ist * was Sie tun sollten, * vor allem * mit Authentifizierung, aber * nur * sobald Sie verstehen, was der Code tut.Ich habe so gedacht wie du, aber das ist sehr gefährlich. Wenn Sie nur Ihren aktuellen Code "auffüllen", werden Sie unvermeidlich andere, große Löcher verpassen. Verwenden Sie einen Rahmen, damit Sie das Rad nicht neu erfinden müssen. –