цикл перенаправления на основе пользовательской сессии - PullRequest
0 голосов
/ 01 октября 2011

У меня проблема с перенаправлением на страницу.Кажется, что он перенаправляет себя несколько раз.У меня есть

if(!isset($_SESSION)){
header("location:index.php");
exit();
}

в заголовке.и мой заголовок включен в мою страницу индекса и везде.Я знаю, что, поскольку он находится в заголовке, он будет перенаправлен на index.php, затем он будет снова и снова запускать сценарий, что вызывает у меня проблемы.

Как бы я помешал ему перестать делать это правильно?после перенаправления?Или есть другой способ проверить, вошел ли пользователь в систему, если нет, перейдите на index.php?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 01 октября 2011

У вас есть просто логический недостаток в вашем операторе if.

Если бы обработка сеанса была бы запущена, $_SESSION существовал бы.

Если нет, он не существует.

Но это не зависит от того, используете ли вы / пользователь сеанс или нет.

Так что оператор if бесполезен.Пожалуйста, прочитайте Руководство по PHP, чтобы узнать, как сеансы работают в PHP .

0 голосов
/ 01 октября 2011

Я понял это, я знал, что у меня есть оператор if в моем заголовке, поэтому, хотя я пытаюсь перенаправить на index.php, у меня все еще есть оператор if, и у меня нет сессии, я собираюсь быть перенаправленным в бесконечный цикл.

Я только что создал новый заголовок для index.php

0 голосов
/ 01 октября 2011

Вы не должны проверять, чтобы сам массив SESSION был установлен полностью, для начала.Вы должны просто назначить один или два индекса и проверить их.Таким образом, вы никогда не избежите перенаправления, так как вам даже не предоставляется возможность назначить СЕССИЮ.

Вам необходимо назначить что-то вроде $_SESSION['authorized'] = TRUE; после успешного входа в систему , и затем на каждой странице проверьте, установлен ли этот индекс, ИСТИНА и действуйте соответствующим образом.Кроме того, вы должны перенаправить на страницу входа, или что-то в этом роде ... вы должны дать возможность фактически войти в систему для пользователя!Если, конечно, ваша форма входа не указана на странице указателя, но вы не указали эту информацию ...

if(isset($_SESSION['authorized']) AND ($_SESSION['authorized'] === TRUE)
{
   //ok, user is logged. Redirect somewhere else? Do something specific?
}
else
{
   header("Location:index.php"); // or redirect to login.php, for example
   exit();
}

Кроме того, не забывайте называть session_start() первой вещью во всех вашихстраницы, на которых вы хотите использовать сеансы.

...