2015-12-24 2 views
0

С уважением, я делаю систему восстановления пароля в PHP, MySQL и AJAX, система создает ссылку с зашифрованным кодом и отправляет ее на почту пользователя.JQuery - очистить или удалить параметры URL

Пример сгенерированной зашифрованной ссылка:

$link = www.dominio.com/reset/?code=98rudrm2093xda 

Пользователь должен открыть ссылку из электронной почты, чтобы подтвердить запрос, сайт определяет код URL, используя PHP и AJAX desencrita и сравнивает его с кодом для базы данных, если он существует, тогда он создает новый пароль, все это делается в AJAX, но есть что-то, если пользователь возвращается для перезагрузки сети, вы получаете предупреждение о том, что код не существуют в базе данных.

Вопрос:

Как я могу удалить код URL с JQuery, а затем сбросить пароль, чтобы предотвратить появления окна предупреждения, если я обновить веб-страницу.

Возможно ли это?

Я очень ценю вашу помощь!

+0

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

+0

Почему вы не устанавливаете флаг в базе данных после того, как пользователь успешно изменит пароль или после истечения срока действия вашей ссылки после определенного периода времени, чтобы вы могли отобразить соответствующее сообщение об ошибке? –

+0

Почему вы не можете перенаправить обратно на главную страницу, чтобы «перезагрузить» URL? –

ответ

3

Что Я понимаю из вашего вопроса, что вы хотите установить способ сброса пароля и не допускать повторного сброса.

  1. Отправить по электронной почте с кодированной связи
  2. Have пользователь нажимает на ссылку и перейдите на страницу
  3. Страница получит code параметр GET (PHP или JS)
  4. сделать некоторую магию, чтобы проверить, если код существует в базы данных (PHP)
  5. Если код существует, то позволит сбросить пароль и удалить код из базы данных (PHP)
  6. Если нет, то сообщение об ошибке показать (PHP)
  7. Перенаправить в index.html или индекс.php afterwards (JS)

Последний шаг - удалить переменные URL. Если пользователь снова проверит этот же URL-адрес, он перейдет с шага 3. Шаг 4 должен остановить повторный сброс пароля.

+0

Как @Lionel Richie сказал, что мне интересно, можно ли удалить, обновить браузер или удалить URL без обновления веб-сайта стр. –

+0

@ Learningandsharing О, ладно. (Кроме того, пометьте пользователя путем добавления с помощью '@', не используя '[квадратные скобки]' как теги для вопроса) –

+0

@ Learningandsharing Если это так, посмотрите на [этот вопрос] (http: // stackoverflow .com/questions/824349/modify-the-url-without-reloading-the-page) и его ответы. Я думаю, это то, что вы ищете. –

1

Вы можете использовать это, чтобы технически обновить страницу.

window.location.href = window.location.href.split('?')[0]; 

Если вы не хотите, чтобы обновить или перенаправлять вы могли бы использовать этот .pushState() который будет обновлять историю браузера и изменить URL на странице. Это предотвратит обновление, но нажатие кнопки «Назад» в браузере приведет к повторному обновлению.

EXAMPLE: history.pushState('/some-url'); 

Вы можете также исследовать другие HTML5 методы истории API как history.replaceState()

Однако, все это, вероятно, лучшая практика - я думаю, что вам лучше всего было бы, чтобы позволить QueryString остаются нетронутыми, но только активируйте поле предупреждения/сброс на возврат AJAX, если пароль установлен правильно.

Другими словами, ваш обработчик сброса возвращает читаемый ответ возвращения соответствующие заголовки (например, 200 для успеха, 4xx на неудачу, и т.д.), а также настроить свой $.ajax() призыв к чему-то более, как:

$.ajax({ 
    url: your_url, 
    data: your_data, 
    type: 'POST', 
    success: function(e) { 
     // Password was reset 
     // ...show your alert 
    }, 
    error: function(e) { 
     // Code wasn't found or reset failed 
     // ...do nothing or show an error 
    } 
}); 
Смежные вопросы