Heim  >  Artikel  >  Backend-Entwicklung  >  Was soll ich tun, wenn der PHP-Browser vor dem Schließen in der Anmeldeschnittstelle verbleibt?

Was soll ich tun, wenn der PHP-Browser vor dem Schließen in der Anmeldeschnittstelle verbleibt?

PHPz
PHPzOriginal
2023-03-29 11:33:52752Durchsuche

Mit der rasanten Entwicklung und Popularisierung des Internets bieten immer mehr Websites und Anwendungen den Benutzern bequemere, effizientere und umfangreichere Funktionen und Dienste. In diesen Internetanwendungen ist die Benutzeranmeldung zu einer Standardfunktion geworden. Mit der Login-Funktion können Benutzer einfach auf ihre persönlichen Daten zugreifen, ihre eigenen Profile anpassen, personalisierte Empfehlungsdienste nutzen usw. Bei der tatsächlichen Verwendung muss sich der Benutzer jedoch nach dem Schließen des Browsers beim nächsten Besuch erneut anmelden, was zweifellos die Unannehmlichkeiten und den Ärger des Benutzers erhöht. Zu diesem Zweck bietet PHP eine Lösung, die es Benutzern ermöglicht, angemeldet zu bleiben, bevor sie den Browser schließt. Wir stellen sie unten vor.

In einem allgemeinen Anmeldesystem werden nach der Anmeldung eines Benutzers die Anmeldeinformationen des Benutzers (wie Benutzername, Passwort, Anmeldezeit usw.) normalerweise in der SESSION oder im COOKIE auf der Serverseite gespeichert. Wenn der Benutzer weitersurft oder die Website verlässt, wird die Benutzeridentität anhand des Werts von SESSION oder COOKIE überprüft und verarbeitet. Wenn der Benutzer jedoch den Browser schließt, werden auch die SESSION oder das COOKIE ungültig. Dies führt dazu, dass sich Benutzer beim nächsten Besuch erneut anmelden müssen, was sehr umständlich ist.

Hierfür können wir eine von PHP bereitgestellte Lösung verwenden, die darin besteht, die Anmeldeinformationen des Benutzers in der Datenbank zu speichern. Wenn sich der Benutzer anmeldet, werden die Anmeldeinformationen des Benutzers in eine Tabelle in der Datenbank eingefügt. Wenn sich der Benutzer abmeldet, wird der Datensatz aus der Tabelle gelöscht. Auf diese Weise werden die Anmeldeinformationen nach dem Schließen des Browsers durch den Benutzer nicht gelöscht. Beim nächsten Besuch können wir die Informationen aus der Datenbank abrufen und dann je nach Situation eine Benutzerauthentifizierung und -verarbeitung durchführen.

In einer bestimmten Implementierung müssen wir zunächst eine Datenbanktabelle erstellen, um die Anmeldeinformationen des Benutzers zu speichern. Die Tabelle kann die folgenden Felder enthalten:

  • id: Primärschlüssel mit automatischer Inkrementierung
  • Benutzername: Benutzername
  • Passwort: Passwort
  • login_time: Anmeldezeit
  • logout_time: Abmeldezeit oder letzte Zugriffszeit

wann der Benutzer Wenn sich der Benutzer anmeldet, fügen wir die Anmeldeinformationen des Benutzers in die Tabelle ein:

//连接数据库
$conn = mysqli_connect("localhost", "user", "password", "demo");

//获取用户输入的用户名和密码
$username = $_POST["username"];
$password = $_POST["password"];

//查询该用户是否已经登录过
$sql = "SELECT id FROM login_info WHERE username='$username'";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    //该用户已经登录过了,更新登录时间即可
    $login_time = time();
    $sql = "UPDATE login_info SET login_time='$login_time' WHERE username='$username'";
    mysqli_query($conn, $sql);
} else {
    //该用户是首次登录,将登录信息插入到数据库中
    $login_time = time();
    $sql = "INSERT INTO login_info (username,password,login_time) VALUES ('$username','$password','$login_time')";
    mysqli_query($conn, $sql);
}

Wenn sich der Benutzer abmeldet, löschen wir die Anmeldeinformationen des Benutzers aus der Datenbank:

//获取用户的用户名
$username = $_SESSION["username"];

//将该用户的登录信息从数据库中删除
$sql = "DELETE FROM login_info WHERE username='$username'";
mysqli_query($conn, $sql);

Wenn der Benutzer die Website erneut besucht, können wir sie aus der Datenbank löschen Nehmen Sie die Anmeldeinformationen des Benutzers heraus und authentifizieren Sie sich:

//连接数据库
$conn = mysqli_connect("localhost", "user", "password", "demo");

//从数据库中取出用户的登录信息
$username = $_SESSION["username"];
$sql = "SELECT * FROM login_info WHERE username='$username'";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    //该用户已经登录过,验证用户身份
    $row = mysqli_fetch_assoc($result);
    if ($_SESSION["password"] == $row["password"]) {
        //用户身份验证通过,更新上次访问时间即可
        $logout_time = time();
        $sql = "UPDATE login_info SET logout_time='$logout_time' WHERE username='$username'";
        mysqli_query($conn, $sql);
    } else {
        //用户身份验证失败,跳转到登录页面
        header("Location:login.php");
    }
} else {
    //该用户未登录过,跳转到登录页面
    header("Location:login.php");
}

Auf diese Weise können die Anmeldeinformationen auch dann in der Datenbank gespeichert werden, wenn der Benutzer das Browserfenster schließt, und der Benutzer kann den Anmeldestatus beibehalten, ohne sich erneut anzumelden Das nächste Mal, wenn sie uns besuchen. Natürlich müssen wir einige Optimierungen an dieser Lösung vornehmen, z. B. die automatische Abmeldezeit festlegen, SQL-Injection verhindern usw., um diese Funktion sicherer und zuverlässiger zu implementieren.

Kurz gesagt: Durch das Speichern der Anmeldeinformationen des Benutzers in der Datenbank kann der Benutzer angemeldet bleiben, bevor er den Browser schließt, was das Benutzererlebnis und die Effizienz erheblich verbessert. Es handelt sich um eine Technologie, die es für Entwickler wert ist, erlernt und beherrscht zu werden.

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn der PHP-Browser vor dem Schließen in der Anmeldeschnittstelle verbleibt?. 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
Vorheriger Artikel:Ist node.js oder PHP besser?Nächster Artikel:Ist node.js oder PHP besser?