Если вы знаете, как это сделать на формах с кнопкой отправки, это не так. Генерация маркера должна выполняться на сервере и храниться независимо от того, что.
Даже если вы используете Javascript, вы используете PHP для вывода этой страницы, содержащей код javascript, правильно?
Так очень быстрый пример кода может быть ниже:
Этот код файла PHP, который выводит ваш JavaScript:
<?
$token = md5(mt_rand() . session_id());
$_SESSION['token:'.$token] = true;
?>
Ваш JavaScript:
dataType: "text",
url: '/username.php',
data: 'username=' + $('#username').val() + '&token=' + '<?=$token?>',
type: 'GET',
Ваш username.php :
if ($_SESSION["token:".$_POST["token"]] == true){
exit();
} else {
unset($_SESSION["token:".$_POST["token"]]);
}
Остерегайтесь, приведенный выше пример имеет некоторые проблемы, такие как «токен будет обновляться при одновременном открытии одной и той же страницы», а что нет. Таким образом, это не готовый код для использования в производстве. [UPDATE] Я обновил код, чтобы решить проблему «токен будет возобновлен ...».
Но у вас есть идея.
Создайте токен на сервере, используйте токен в своем javascript, а затем оцените его в своем username.php
.
P.S. Если ваш javascript является внешним файлом скрипта, просто загрузите его как глобальную переменную на свою страницу, загружающую javascript, и используйте переменную во внешнем файле javascript.
Вам нужно сгенерировать маркерную сторону сервера и сохранить его, иначе вам нечего сравнивать с формой-submit. – jeroen