У меня есть класс AJAX, который асинхронно проверяет токен на форме.AJAX прекращает выполнение до конца скрипта
Фактическая функциональность, что после проверки, чтобы увидеть его Токен существует, он должен удалить существующий маркер и создать еще один
Вот это PHP скрипт:
if (Session::exists($tokenName) && $token === Session::get($tokenName)) {
Session::delete($tokenName);
return true;
}
Он будет проходить через в первой строке, когда она попадает во вторую строку, она удаляет токен, но не возвращает true. Если я прокомментирую строку Session::delete($tokenName);
, она вернет true.
Если я инвертирую код i.e return true;
до Session::delete($tokenName);
, он вернет true, но не удалит сеанс.
Может кто-нибудь помочь мне в решении проблемы. Благодарю.
Отредактировано: Ниже приведен метод в классе Session
public static function delete($name)
{
if (self::exists($name)) {
unset($_SESSION[$name]);
}
}
Целая функция:
public static function check($token)
{
$tokenName = Config::get('session/token_name');
if (Session::exists($tokenName) && $token === Session::get($tokenName)) {
Session::delete($tokenName);
return true;
}
return false;
}
Мой AJAX Snippit:
var ajax = new AjaxRequest("POST", "php-script", params, function (responseText, responseStatus) {
var response = JSON.parse(responseText);
});
Это PHP скрипт, который получает пост AJAX:
if (Token::check('token')) {
//The first snippet should run, delete the token and return true (That's where my problem comes from)
//If it returns true after deleting the token, this script should continue but since it is not *i'm stuck*
}
Вы используете топливную смесь? – Maverick
Нет! я вообще не использую никаких фреймворков. Вот если я знаю, что означает топливная нагрузка на самом деле – Prodigy
Когда вы «возвращаете» любой код после того, как это не выполняется, это причина, почему, если вы ставите код перед возвратом, он не обрабатывается. Я думаю, что «Session :: delete()» возвращает что-то (это не «правда»), поэтому «return true»; не обрабатывается. – Maverick