Перезапуск локального сервера (WAMP) приводит к сбою сравнения токенов?

Я тестировал некоторые формы, которые я собирал, и недавно реализовал сравнение токенов для дополнительной безопасности. Вот код для сравнения токенов:

На самой форме:

session_start();
$token = md5(uniqid(mt_rand(), true));
$_SESSION["token"] = $token;
session_write_close();

Затем на форме обработки:

session_start();
$token = "";
$token = $_SESSION['token'];
unset($_SESSION['token']);
session_write_close();

if(empty($token)) {
echo htmlspecialchars('An error has occurred. Please resubmit.');
//  header( "refresh:3; url=website" );
die();
}

if($_POST['token'] != $token) {
echo htmlspecialchars('An error has occurred. Please resubmit.');
//  header( "refresh:3; url=website" );
die();
}

Токен хранится в виде:

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

В первый раз, когда я заполняю форму и отправляю ее, я всегда получаю ошибку токена. Однако после некоторого тестирования я понял, что проблема возникает только при первом запуске сервера (WAMP). После первой первоначальной отправки все работает нормально. Вот несколько сравнений тестов, которые я сделал:

http://imgur.com/yMeV6QJ,z3VLgi0#0

Таким образом, главная проблема заключается в следующем: при перезапуске сервера сравнение токенов кажется неудачным. После первой первоначальной отправки формы (что является ошибкой) все работает нормально, пока я не выхожу из сервера и не запускаю его снова. Почему это происходит?

Код, который я использую, является модифицированной версией кода, опубликованного @leeppowers в этой теме: нить

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …