php - 如何检查用户何时回来,注销后?

php - How to checking when the user come back, after log out?

我想在 php 中制作一个登录和注销页面。 到目前为止,我编写了所有代码,但除了我不知道如何检查变量 $_SESSION['login'] 是否已设置之外。我尝试使用 isset(); unset(); session_destroy(); ... 仍然没有解决。 我想要这个,因为如果用户从浏览器按下后退按钮,我想重定向到一个页面。 ;) 我喜欢像 google 和其他大型专业网站。 ;)

我从 https://www.formget.com/login-form-in-php/ 获取代码,并对其进行了改编。

session.php

    <?php
    session_start(); 
    $user_check = '';

        // I will not give you my passwords so easly :P
    define('DB_USER', ' ');
    define('DB_PSWD', ' ');
    define('DB_HOST', ' ');
    define('DB_NAME', ' ');

    $connection = mysqli_connect(DB_HOST,DB_USER,DB_PSWD,DB_NAME) or die(mysql_error());

    $user_check = $_SESSION['loginUser'];


    $ses_sql = mysqli_query($connection,"SELECT Name FROM Passwords WHERE Name='$user_check'");
    $row = mysqli_fetch_assoc($ses_sql);
    $login = $row['Name'];


    if(!isset($login)){
        mysql_close($connection);
        header("location : ../Resource.php"); // redirect
    }

?>

请帮忙!

更新 1: 我也有这样的 logout.php :

<?php
    session_start();
    session_destroy();
    header("location: ../Resource.php"); // redirect
?>

在登录页面,我通过 $_SESSION['loginUser']

传递了用户名

isset() 将适用于会话。如果你写:

if(isset($_SESSION['loginUser'])) {
    // Your code
}

那行得通。您还可以使用 empty() 而不是 isset() 来检查会话是否为空,但通常检查会话是否已设置足以满足您正在执行的验证。

我已 运行 进入服务器,该服务器不会在处理页面之前设置会话,您需要将用户重定向到下一页,然后会话才会显示为有效。这在 cookie 中也很常见。

您还在检查是否有返回的内容,如果未设置 $login 则重定向 - 但您总是 设置它,所以您的重定向永远不会 运行。

这是一个更好的解决方案(使用您当前的代码;不包括其他人提到的 SQL 注入问题,那是另一个话题)。

// Limit your query to one result to MySQL will stop searching once it's found a match. 
$ses_sql = mysqli_query($connection, "SELECT Name FROM Passwords WHERE Name='$user_check' LIMIT 1");

if($ses_sql->num_rows == 1) {
    // A row was found, do something.
} else {
    // No rows were found, do something else.
}

现在你有更少的变量,你正在使用 MySQLi 给出的分配数据,它是行,当找到结果时搜索数据库必须做的更少,并且你有一个 match/no-match 场景。