PHP Login Системная проблема ... Отправка ошибок со страницы на страницу - PullRequest
0 голосов
/ 09 апреля 2009

У меня есть форма входа на каждой странице веб-сайта, чтобы пользователь мог войти с любого места. У меня есть файл login.php, на который я ссылаюсь из формы (используя «действие»).

Я использую $_SERVER['HTTP_REFERER'], чтобы перенаправить пользователя на ту же страницу, с которой он вошел в систему, когда он успешно вошел в систему или когда он вышел из системы.

Но если при входе возникла проблема, как я могу отправить сообщение об ошибке на ту же страницу, на которой он пытается войти? Я попытался отправить ошибку, используя $_GET, например:

// process the script only if the form has been submitted
if (array_key_exists('login', $_POST)) {
    // Login code goes here...

    // If there was a problem, destroy the session and prepare error message
    else {
    $_SESSION = array();
    session_destroy();
    header('Location: '.$_SERVER['HTTP_REFERER'].'?error');
    exit;
}

Но проблема в том, что многие страницы на сайте похожи на details.php?mid=0172495. Они уже получают информацию от метода $_GET, и по соображениям безопасности я не могу использовать другой метод $_GET ...

Итак, как я могу передать ошибку ??? Спасибо ...

Ответы [ 4 ]

2 голосов
/ 09 апреля 2009

Поскольку вы уже используете сеансы, после уничтожения сеанса, почему бы не создать новый с $ _SESSION ['error'] или чем-то подобным? Или же просто не удаляйте сеанс вообще, а устанавливайте ошибку, которую вы можете сразу же проверить на других страницах?

0 голосов
/ 09 апреля 2009

Еще один способ сделать то, что вам нужно, это включить свой файл login.php на каждую страницу, которая имеет форму входа, и просто публиковать на этой же странице. Так что вам вообще не понадобится перенаправление.

Возможно, это не хорошее масштабируемое и поддерживаемое решение, но оно простое. Все зависит от того, какое приложение вы пишете. Но вы говорите, что вы новичок в PHP, поэтому вы можете начать так. Вы всегда можете прийти в голову позже ...

0 голосов
/ 09 апреля 2009

Чтобы добавить к тому, что сказал Чад Бёрч ...

В вашем сценарии входа, куда вы перенаправляете, проверьте значение HTTP_REFERER для символа '?'. Если он присутствует, добавьте «& error» к HTTP_REFERER и перенаправьте на него. В противном случае добавьте «ошибка» к HTTP_REFERER и перенаправьте на него.

0 голосов
/ 09 апреля 2009

Я не уверен, что именно вы подразумеваете под "из соображений безопасности, я не могу использовать другой метод $_GET", но в случае, если в строке запроса уже есть что-то, вам просто нужно добавить к ней другую переменную, вместо того, чтобы заменить его.

То есть, если адрес похож на details.php?mid=0172495, вы должны отправлять их на details.php?mid=0172495&error, тогда как если это был просто details.php, вы отправляете их на details.php?error.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...