Повторная выдача токена - PullRequest
0 голосов
/ 02 декабря 2010

В моей форме есть токен, который сохраняется в сеансе и должен присутствовать при отправке формы:

$token = hash('sha256', rand() . microtime() . $_SERVER['REMOTE_ADDR']) // rand as possible
$_SERVER['token'] = $token;

Теперь в форме у меня есть скрытое значение:

<input type="hidden" name="token" value="<?php echo $token;?>">

Когда я отправил эту форму, я проверяю, совпадает ли она с токеном в сеансе:

if ($_POST['token'] !== $_SESSION['token'])
{
// show error here
}
else
{
//carry on normally
}

Однако что произойдет, если пользователь заполнит форму неправильно?Я не могу изменить токен снова в сеансе, потому что вывод уже отправлен.Что вы предлагаете?

Ответы [ 2 ]

0 голосов
/ 02 декабря 2010

Вы можете изменить вещи в сеансе, даже если выходные данные были отправлены. Вы не можете запустить сеанс после отправки контента, но как только вы отправите заголовки сеанса (что должно быть одним из первых действий), вы можете изменить данные в сеансе в любое время. время во время запроса.

0 голосов
/ 02 декабря 2010

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

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