2016-02-06 3 views
0

У меня есть проект 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, если они запросили новый пароль.

Заранее спасибо

+0

все делается в базе данных. Существует значение, которое изменяется от 0 до 1 после запроса нового пароля – Vurkac

ответ

0

Вы можете быть застрял в цикле перенаправления. Вот что я думаю, что происходит:

  1. Вам удается перенаправить пользователя на user.php?p=change_password&force
  2. После того, как вы на этой странице, если заявление, содержащее $current_file !== 'user.php?p=change_password' по-прежнему верно
  3. Таким образом, вы пытаетесь перенаправить пользователь на ту же страницу, что он/она уже находится, в результате чего ошибка перенаправления
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(); 
    } 

} 

Это решение работала

Смежные вопросы