如何在login.php中插入超时功能?

8 浏览
0 Comments

如何在login.php中插入超时功能?

这是我的LOGIN.php文件:

require_once 'include/DB_Functions.php';
$db = new DB_Functions();
// json响应数组
$response = array("error" => FALSE);
if (isset($_POST['email']) && isset($_POST['password'])) {
    // 获取POST参数
    $email = $_POST['email'];
    $password = $_POST['password'];
    // 通过邮箱和密码获取用户
    $user = $db->getUserByEmailAndPassword($email, $password);
    if ($user != false) {
        // 用户存在
        $response["error"] = FALSE;
        $response["uid"] = $user["unique_id"];
        $response["user"]["name"] = $user["name"];
        $response["user"]["cognome"] = $user["cognome"];
        $response["user"]["email"] = $user["email"];
        $response["user"]["email2"] = $user["email2"];
        $response["user"]["numero_appartamento"] = $user["numero_appartamento"];
        $response["user"]["nome_edificio"] = $user["nome_edificio"];
        $response["user"]["zona_metropolitana"] = $user["zona_metropolitana"];
        $response["user"]["created_at"] = $user["created_at"];
        $response["user"]["updated_at"] = $user["updated_at"];
        header('Content-type: application/json');
        echo json_encode($response);
    } else {
        // 用指定的凭证找不到用户
        $response["error"] = TRUE;
        $response["error_msg"] = "登录凭证错误,请重试!";
        echo json_encode($response);
    }
} else {
    // 缺少必需的POST参数
    $response["error"] = TRUE;
    $response["error_msg"] = "缺少必需的参数邮箱或密码!";
    echo json_encode($response);
}

如何插入一个30分钟的timeout

提前感谢大家!

0
0 Comments

如何在login.php中插入超时时间?

问题出现的原因:

在依赖服务器端会话来保持用户登录状态时,如果用户长时间处于非活动状态,会话可能会超时并导致用户需要重新登录。为了解决这个问题,需要设置会话的超时时间。

解决方法:

可以通过设置session.gc_maxlifetime指令来设置会话的超时时间为30分钟,以确保用户在30分钟的非活动时间后自动退出登录。可以使用ini_set('session.gc_maxlifetime', 1800)来实现。同时,还需要确保将session.cookie_lifetime设置为与session.gc_maxlifetime相等或更高的值,并且在更改session.gc_maxlifetime值时,仔细阅读手册以了解在同一路径下更改多个会话的注意事项。

关于代码的一些重要说明:

注意到代码中直接在数据库中查找用户提供的密码,这表明您在存储用户密码时使用了明文密码。在存储用户密码时,非常重要的一点是使用类似于password_hash的方法对密码进行哈希处理,例如使用password_hash函数。这样做非常重要,可以更安全地存储用户密码。

0