请求新密码后强制用户更改密码

时间:2016-02-06 15:49:10

标签: php

我有PHP项目,用户可以登录并在忘记密码时申请新密码。我还有init.php,它指示用户在使用新密码登录后更改密码页。

INIT.PHP中用于重定向用户的代码如下:

$current_file = explode('/', $_SERVER['SCRIPT_NAME']);
$current_file = end($current_file);

if (logged_in() === true) {

    if (user_active($user_data['username']) === false) {
        session_destroy();
        header('Location: index.php');
        exit();
    }

    if ($current_file !== 'user.php?p=change_password' && $user_data['password_recover'] == 1) {
        header('Location: user.php?p=change_password&force');
        exit();
    }

}

$current_file只给我user.php,当然这还不够。我也试过$_SERVER['REQUEST_URI']给了我/user.php?p=change_password这很好。但仍然行不通。我收到错误The page isn't redirecting properly

总结一下。如果用户请求了新密码,我需要将用户重定向到user.php?p=change_password&force

提前致谢

2 个答案:

答案 0 :(得分:0)

您可能会陷入重定向循环。这就是我认为发生的事情:

  1. 您设法将用户重定向到user.php?p=change_password&force
  2. 进入此页面后,包含$current_file !== 'user.php?p=change_password'的if语句仍为真
  3. 因此,您尝试将用户重定向到他/她已经在的同一页面,从而导致重定向错误

答案 1 :(得分:0)

$current_url = explode('/', $_SERVER['REQUEST_URI']);
$current_url = end($current_url);

if (logged_in() === true) {

    if (user_active($user_data['username']) === false) {
        session_destroy();
        header('Location: index.php');
        exit();
    }

    if ($current_url !== 'user.php?p=change_password' && $user_data['password_recover'] == 1) {
        header('Location: user.php?p=change_password');
        exit();
    }

}

此解决方案有效