[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Дубль 3, регистрация.
Страницы: 1, 2
Миша
Создание скрипта регистрации по шагам.

_____________
Принимаю заказы, писать в ЛС
Миша
Нужно ли проверять, что была отправлена форма регистрации?

_____________
Принимаю заказы, писать в ЛС
volter9
Медведь
Попробуй описать свой скрипт регистрации на словах типа так:
1. Юзер заходит на главную страницу, там он видит форму регистрации
2. Юзер заполняет форму и нажимает кнопку отправить.
3. Скрипт проверяет ... (дальше уже сам)

Попробуй написать без конкретики, т.е. без пунктов в стиле: "подключится к бд, создать бд если такова не существует, создать таблицу для пользователей если он не существует...", или "проверить $_POST массив на содержание индексов 'username' и 'password'".
Т.е. описать только поведение, а потом реализовать это, может поможет.

_____________
Мой блог
Миша
1 Проверяем нажата ли кнопка формы, если нет показать форму.
2 Если кнопка нажата, проверяем были ли отправлены логин и пароль.
3 Логин проверяем на инъекции, пароль в md5
4 Если отправлено, то проверяем логин, есть ли он в таблице.
5 Сохраняем, если нет такого логина.

Такой набор действий я использовал тут , за исключением того, что функция security не проверяет логин, а отдаёт как есть.

_____________
Принимаю заказы, писать в ЛС
Guest
А что беспокоит?
Миша
Всё так? Или как?

_____________
Принимаю заказы, писать в ЛС
FatCat
Цитата (Медведь @ 1.03.2015 - 08:22)
Проверяем нажата ли кнопка формы, если нет показать форму.

Нафига?
Тебе нужны логин и пароль? Их и проверять...

Давай рассуждать. Что нам нужно?
Нам нужно:
  • Если посетитель зашел впервые, просто нарисовать форму регистрации.
  • Если посетитель ввел не все данные, вывести сообщение об ошибке, нарисовать форму регистрации, и ввести в нее те данные, которые посетитель ввел правильно.
  • Если всё хорошо введено - работать дальше.

Соответственно, делаем ветвление в этом порядке:
Код
if( !isset($_POST['login']) or !isset($_POST['password']) )
// Нет входящих переменных
{
// Рисуем форму
}
elseif(!$_POST['login'] or !$_POST['password'])
// Что-то не ввели
{
// Рисуем форму
}
else
// Всё хорошо
{
// регистрируем
}


Теперь начинаем на этот скелет натягивать мясо. Сначала регистрируем ошибки ввода информации:
Код
$errors = array();
if( !isset($_POST['login']) or !isset($_POST['password']) )
// Нет входящих переменных
{
// Рисуем форму
}
elseif(!$_POST['login'] or !$_POST['password'])
// Что-то не ввели
{
if(!$_POST['login'])$errors[] = "Не введен логин!";
if(!$_POST['password'])$errors[] = "Не введен пароль!";
// Рисуем форму
}
else
// Всё хорошо
{
// регистрируем
}



Но ошибки же надо вывести посетителю. Значит добавляем переменную $html, и начинаем в нее собирать код страницы для вывода в браузер:
Код
$html = "";
$errors = array();
if( !isset($_POST['login']) or !isset($_POST['password']) )
// Нет входящих переменных
{
// Рисуем форму
}
elseif(!$_POST['login'] or !$_POST['password'])
// Что-то не ввели
{
if(!$_POST['login'])$errors[] = "Не введен логин!";
if(!$_POST['password'])$errors[] = "Не введен пароль!";
$html .= "Обнаружены ошибки:<ul><li>".implode("</li><li>", $errors)."</li></ul>";
// Рисуем форму
}
else
// Всё хорошо
{
// регистрируем
}



Так как рисование формы у нас в разветвлении больше чем один раз, рисование формы выношу в функцию.
Функция рисует форму
function build_form(){
return '<form action="" method="post">
Логин: <input type="text" name="login"><br>
Пароль: <input type="password" name="password"><br>
<input type="submit" value="Зарегистрироваться">
</form>'
;
}


Теперь добавляю функции возможность выводить имеющиеся значения:
Код
function build_form($login="", $password=""){
return '<form action="" method="post">
Логин: <input type="text" name="login" value="'
.$login.'"><br>
Пароль: <input type="password" name="password" value="'
.$password.'"><br>
<input type="submit" value="Зарегистрироваться">
</form>'
;
}


А теперь всё вместе с обращением к функции по мере надобности:
Код
$html = "";
$errors = array();
if( !isset($_POST['login']) or !isset($_POST['password']) )
// Нет входящих переменных
{
$html .= build_form(); // Рисуем форму
}
elseif(!$_POST['login'] or !$_POST['password'])
// Что-то не ввели
{
if(!$_POST['login'])$errors[] = "Не введен логин!";
if(!$_POST['password'])$errors[] = "Не введен пароль!";
$html .= "Обнаружены ошибки:<ul><li>".implode("</li><li>", $errors)."</li></ul>";
$html .= build_form($_POST['login'], $_POST['password']); // Рисуем форму
}
else
// Всё хорошо
{
// регистрируем
}


function build_form($login="", $password=""){
return '<form action="" method="post">
Логин: <input type="text" name="login" value="'
.$login.'"><br>
Пароль: <input type="password" name="password" value="'
.$password.'"><br>
<input type="submit" value="Зарегистрироваться">
</form>'
;
}


_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

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