[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Исключить повторную регистрацию
Страницы: 1, 2
Wladim
Здравствуйте.
Для регистрации на сайте есть два файла: registration.php (форма) и add_avtor.php (обработчик).
Первая регистрация проходит успешно.
Но когда после сообщения об успешной регистрации нажать кнопку "обновить страницу" - выдаётся ошибка, но в базу денных заносится часть информации. Повторное "обновление страницы" повторяет засорение базы данных.
Заканчивается код обработчика так:
    else 
{
echo "<p>Дождитесь.</p>";
}
exit;
Подскажите, как можно "намертво" закончить регистрацию, чтобы невозможно было использовать кнопку "обновить страницу"?
Подумал, что сообщения об удачной регистрации надо бы выводить не в обработчике, а в третьем файле, но не знаю, правильно ли это, да и как сослаться на третий файл - не знаю...

_____________
в Начале было СЛОВО, а потом - словоЗАслово и ... как поехало! http://a-plagiata.net/service/
Wladim
Покуда все молчали я попробовал перенаправление на другую страницу, а с неё - на третью. Однако страница с формой регистрации registration.php остаётся доступной со всеми данными регистрируемого, т.е. обновив её происходит повторная (неполная) регистрация после чего надо вручную удалять из базы данных "мусор".
Наверное, есть способ, который позволит после нажатия кнопки "Регистрация" в файле формы удалить всю информацию из неё.
Буду признателен за помощь.

_____________
в Начале было СЛОВО, а потом - словоЗАслово и ... как поехало! http://a-plagiata.net/service/
Wladim
Оказывается, что действительно - молчание золото...
Для таких же чайников, как сам, решение этой проблемки следующее:
Чтобы после нажатия кнопки "Регистрация" очистилась форма применил такой вот скрипт в самом начале:
<?php
session_name("serv");
session_start();
$ses_serv =& $_SESSION['serv'];
if (isset ($_SESSION['id])) {$id = $_SESSION['id'];}
if (!isset ($id)) {$id = 1;}
Спасибо за 40 просмотров...

_____________
в Начале было СЛОВО, а потом - словоЗАслово и ... как поехало! http://a-plagiata.net/service/
Lumix
После добавления в базу данных с формы делаешь редирект на туже страницу

header("Location: ".$_SERVER["REQUEST_URI"]."");

естественно, до этого не должно быть ни какого вывода

Wladim
Спасибо, Lumix, за помощь, возможно Ваше решение имеет смысл, но меня более устроил вариант, предложенный выше.

_____________
в Начале было СЛОВО, а потом - словоЗАслово и ... как поехало! http://a-plagiata.net/service/
sergeiss
Wladim, решение "от Lumix" более универсально. Потому что для работы сессий необходимо разрешение от браузера на хранение куки. А вот тут как раз и может быть "засада".

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
Цитата
Первая регистрация проходит успешно.
Но когда после сообщения об успешной регистрации нажать кнопку "обновить страницу" - выдаётся ошибка, но в базу денных заносится часть информации.

у вас ошибка в логике кода, то что вы придумали с очищением полей - это ерунда.


_____________
Стимулятор ~yoomoney - 41001303250491
sergeiss
Valick - на самом деле, вопрос был изначально правильно поставлен smile.gif И надо заметить, что с такой проблемой сталкиваются все программеры пхп, кто вообще с вводом данных через форму занимается. "Защита от F5" - погугли по таким словам.

Единственный вопрос - какой вариант решения выбрать. У обоих есть и преимущества, и недостатки.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Lumix
Wladim Покажи обработчик формы add_avtor.php думаю проблема в миг решится. Люди здесь очень грамотные, а проблема ерундовая.
Valick
sergeiss, вы шутите? smile.gif При наличии более 10 книг по РНР в домашней библиотеке и 5 лет объяснения на форуме про "Защита от F5", вы мне предлагаете о ней погуглить?
___
Сейчас речь не о постах на форуме, в гостевой книге и т.п. речь о записи "мусора" в БД при повторной отправке регистрационных данных.
При нормальном алгоритме регистрации этого "мусора" быть не должно, и редирект или очистка ни коим образом от этого не спасает, (а просто временно маскирует проблему). Что мне мешает после редиректа повторно собственноручно ввести те же данные?
__
Цитата
Единственный вопрос - какой вариант решения выбрать.

Вариант номер три. Исправить ошибку в логике кода.

_____________
Стимулятор ~yoomoney - 41001303250491
Ramzil_Nixon
После заношения данных в БД. Сразу перенаправляй пользователя на эту же страницу или другую страницу с помощью header();
Но если сомневаешься что это не сработает, то делай проверку перед записем в БД, то есть проверь не существует ли такие данные в БД уже.

_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
Valick
Цитата
Но если сомневаешься что это не сработает, то делай проверку перед записем в БД,

Да эту проверку надо делать и без всяких там если...


_____________
Стимулятор ~yoomoney - 41001303250491
sergeiss
Valick - да, предлагаю погуглить smile.gif Потому что вопрос был, в первую очередь, про обновление страницы, а не про попытку ввода одних и тех же данных.
При обновлении страницы только куки или указанный ранее хедер помогут. А вот если кто-то попытается ввести повторно те же данные... То это будет уже другая задача, которую надо будет решать после того, как автор вопроса до нее дозреет.

PS. При чем тут "количество книг на полке"? Это что - важный критерий в программировании? И по второму "критерию" тоже можешь проиграть...

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
sergeiss, тогда я вам советую купить хотя бы одну книгу и поставить на полку. А потом поговорим о критериях. И кстати уж точно количество книг на полке не влияет на умение пользоваться поисковиками, а вот для того чтобы знать что искать и надо читать книги. Или вы тоже считаете, что книги пишут идиоты, для тех идиотов которые их читают?
Цитата
Потому что вопрос был, в первую очередь, про обновление страницы

Это ваше личное мнение.
Цитата
При обновлении страницы только куки или указанный ранее хедер помогут.

нет не только, есть и другие варианты, так что гуглить надо вам, а не мне.
Цитата
То это будет уже другая задача, которую надо будет решать после того, как автор вопроса до нее дозреет.

еще раз повторяю, если исправить ошибку в логике кода, то никакое перенаправление и остальные телодвижения уже не потребуются. И при регистрации нет понятия "другая задача".


_____________
Стимулятор ~yoomoney - 41001303250491
sergeiss
Valick - то есть, по-твоему, количество книг на полке влияет на качество программирования? Ну-ну, не буду тебя разубеждать smile.gif

И еще. Все-таки научись разделять задачи на части. В том числе и те, что люди на форуме спрашивают. Глядишь, и тебе это тоже поможет когда-нибудь.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.