Heim >Backend-Entwicklung >PHP-Problem >So ermitteln Sie einen Anmeldefehler in PHP

So ermitteln Sie einen Anmeldefehler in PHP

WBOY
WBOYOriginal
2023-05-06 13:55:07645Durchsuche

php spielt als Skriptsprache eine entscheidende Rolle bei der Entwicklung vieler Website-Anwendungen. In vielen Anwendungen ist auch das Login-System ein nahezu unverzichtbarer Bestandteil. Ganz gleich, ob es sich um ein Einkaufszentrum, ein soziales Netzwerk oder eine Community-Website handelt, die Benutzeranmeldung ist einer der wesentlichen Prozesse. Daher ist es bei der Entwicklung einer solchen Anwendung von entscheidender Bedeutung, festzustellen, ob die Anmeldung erfolgreich war oder nicht. Dies ist die wichtigste Voraussetzung für den Schutz der Benutzerinformationen und der Anwendungssicherheit.

Wie kann festgestellt werden, ob die Anmeldung des Benutzers erfolgreich war oder nicht, wenn ein Benutzer einen Benutzernamen und ein Passwort eingibt? Im Folgenden werde ich diese Frage aus der Perspektive eines PHP-Programms beantworten.

  1. Formularüberprüfung

Wenn ein Benutzer ein Formular absendet, müssen wir zunächst die vom Benutzer übermittelten Daten überprüfen, um die Richtigkeit der Formulareingabe sicherzustellen. Hier ist unser erster Schritt, um festzustellen, ob der Benutzer sich nicht angemeldet hat. Wir können die Formularüberprüfung implementieren, indem wir entsprechenden PHP-Code schreiben, wie zum Beispiel den folgenden Code:

if($_POST['username'] == ''){
    echo "请输入用户名";
}elseif($_POST['password'] == ''){
    echo "请输入密码";
}else{
    //验证表单通过
}

Mit dem obigen Code können wir feststellen, ob der Benutzer den Benutzernamen und das Passwort eingegeben hat. Wenn der Benutzer eines der Elemente nicht eingibt, wird eine entsprechende Fehlermeldung angezeigt. Allerdings reicht es nicht aus, nur festzustellen, ob der Benutzer den Benutzernamen und das Passwort eingegeben hat, um festzustellen, ob die Anmeldung des Benutzers erfolgreich war.

  1. Datenbanküberprüfung

Nachdem der Benutzer das Formular abgeschickt hat, müssen wir im Hintergrund auch überprüfen, ob der Benutzername und das Passwort des Benutzers korrekt sind. Dies muss durch Kontaktaufnahme mit der Benutzertabelle in der Datenbank überprüft werden. Dabei gehen wir davon aus, dass der Benutzername und das Passwort jeweils in den usernamepassword-Feldern der Benutzertabelle gespeichert sind.

Nachdem wir eine Datenbankverbindung mit der MySQL-Datenbank hergestellt haben, können wir den in der Datenbank vorhandenen Benutzernamen und das Passwort über den folgenden Code herausnehmen:

$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM 用户表格 WHERE username='$username'";
$result = mysqli_query($conn,$sql);
$row = mysqli_fetch_assoc($result);

Vergleichen Sie es dann mit dem vom Benutzer eingegebenen Benutzernamen und Passwort, falls der Benutzername und das Passwort vorhanden sind korrekt sind, gehen wir davon aus, dass sich der Benutzer erfolgreich angemeldet hat. Andernfalls gilt die Benutzeranmeldung als fehlgeschlagen, wenn der Benutzername und das Passwort falsch sind.

if($row && $row['password']==$password){
    echo "登录成功";
}else{
    echo "登录失败";
}
  1. Anmeldebeschränkungen hinzufügen

Nachdem wir festgestellt haben, ob die Benutzeranmeldung erfolgreich war, müssen wir auch die Situation berücksichtigen, in der sich einige Benutzer in böswilliger Absicht anmelden. Wenn ein Benutzer beispielsweise mit einem Sprengwerkzeug eine große Anzahl ungültiger Anmeldeversuche durchführt, kann dies zu einer übermäßigen Belastung des Servers führen. Daher sollten wir während des Anmeldevorgangs auch Anmeldebeschränkungen hinzufügen, um die Anzahl ungültiger Anmeldeversuche zu kontrollieren.

Um dies zu erreichen, können wir im Programm eine Zählervariable festlegen, die bei jedem böswilligen Anmeldeversuch den Zähler erhöht. Wenn der Zähler den eingestellten Wert erreicht, können Sie einige restriktive Maßnahmen festlegen, z. B. das vorübergehende Verbot des Benutzers, sich für einen bestimmten Zeitraum anzumelden.

//设定最多尝试登录次数
$max_login_times = 3;
$login_failed = false;
//获取用户输入的用户名和密码
$username = $_POST['username'];
$password = $_POST['password'];
//从数据库中获取用户名对应的密码
$sql = "SELECT * FROM `user` WHERE username='$username'";
$result = mysqli_query($conn,$sql);
$row = mysqli_fetch_assoc($result);

//如果用户输入的密码与数据库中密码不一致,或者数据库中没有该用户名
if(!$row || $row['password']!=$password){
    $login_failed = true; //登录失败
    //每次登录失败,则计数器增加一
    $count = isset($_SESSION['login_count'])?$_SESSION['login_count']:0;
    $_SESSION['login_count'] = ++$count;

    if($count>=$max_login_times){
        //登录失败次数过多,锁定用户一段时间
        $lock_time = 60*60;
        $_SESSION['lock_time'] = time()+$lock_time; //锁定时间为一小时
    }

}else{
    session_start();
    //用户登录成功
    $_SESSION['user_id']=$row['id'];
    $_SESSION['user_name']=$row['username'];
}

Der obige Code ist eine sehr vereinfachte login.php-Datei, die die Implementierung eines bis zu dreifachen Anmeldefehlerzählers abschließt. Bei jedem fehlgeschlagenen Anmeldeversuch wird der Zähler um eins erhöht. Wenn der Zähler den Maximalwert erreicht, wird dieser IP für einen bestimmten Zeitraum der Anmeldeversuch untersagt. Wenn das Passwort mit dem Passwort in der Datenbank übereinstimmt, wird die Benutzersitzung erfolgreich für die spätere Verwendung erstellt.

Kurz gesagt, egal um welche Anwendung es sich handelt, die Korrektheit und Sicherheit der Überprüfung des Benutzeranmeldesystems war schon immer eines der Schlüsselthemen bei der Anwendungsentwicklung. Nur durch mehrere Schutzmaßnahmen wie Formularüberprüfung, Datenbanküberprüfung und Anmeldebeschränkungen können wir die Situation fehlgeschlagener Benutzeranmeldungen umfassender und effektiver ermitteln.

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie einen Anmeldefehler in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn