Сегодня я расскажу вам, как сделать самую обыкновенную регистрацию на php.
Сначала создадим простую форму регистрации, которая будет отправлять наши данные на обработку в php-файл.
Фамилия <input type="text" name="surname" size="50"><br>
Имя <input type="text" name="name" size="50"><br>
Логин <input type="text" name="login" size="10"><br>
Пароль <input type="password" name="pass" size="16"><br>
E-mail <input type="email" name="email" size="50"><br>
Ваш сайт <input type="url" name="url" size="30"><br>
<input type="submit" value="Зарегистрироватся" name="K1"> <!--Кнопка № 1 = отправка данных-->
<input type="reset" value="Очистить" name="K2"></form> <!--кнопка № 2 = очистки формы-->
</form>
Небольшая заметка о том, какой метод передачи выбрать:
1. Страницу всегда можно сохранить в закладках (СЕО-дружелюбен).
2. Он быстрее POST, так как вся информация находится в заголовках.
3. Информация, посылаемая на сервер, всегда видима (в адресной строке).
Минусы GET:
1. Информация, посылаемая на сервер, всегда видима (в адресной строке).
2. Объем информации, которую можно отправить, ограничен.
Плюсы POST:
1. Можно отправить много информации на сервер, объем неограничен.
2. Отправляемая информация не показывается в адресной строке. Удобно, если нужны красивые URL.
Но ее все равно можно легко увидеть. Не используйте POST как способ защиты сайта!
Минусы POST:
1. Медленнее, чем GET, так как анализируются заголовки и тело запроса.
2. Страницы, сгенерированные как результат запроса POST, нельзя добавить в закладки (СЕО-недружелюбен).
Используйте POST, когда на сервер нужно отправить что-то для сохранения. Например, данные нового зарегистрированного пользователе, или какой-то файл.
Используйте GET, если вам нужно что-то от сервера, но сервер ничего не будет сохранять, или объем отправляемов вами информации легко помещается адресной строке. Например, страница поиска на вашем сайте будет более удобное, если использовать GET, так как на сервер отправляется всего лишь какая-то фраза или слово, и сервер просто отправляет кучу информации в ответ. К тому же, страницу результатов можно будет добавить в закладки
Используем POST, когда на сервер нужно отправить что-то для сохранения. Например, данные нового зарегистрированного пользователе. Это наш случай.
Рассмотрим, что означают теги в input:
type="text" - тип переменной текст, может быть также password (вместо вводимых символов ставятся точки) и др.
name="url" - задаем имя переменной, в которую запишется значение, введенное нами.
size="16" - количество разрешенных для ввода символов, не более 16.
Рассмотрим, что означают теги в form:
method="POST" - метод передачи данных на сервер
action="reg.php" - указываем файл, который будет производить операции с введенными значениями.
Теперь рассмотрим код регистрации на php и рассмотрим важные блоки по порядку:
//блок № 1
$surname = htmlspecialchars($_POST["surname"]);
$name = htmlspecialchars($_POST["name"]);
$login = htmlspecialchars($_POST["login"]);
$email = htmlspecialchars($_POST["email"]);
$url = htmlspecialchars($_POST["url"]);
$password = htmlspecialchars($_POST["pass"]);
//блок № 2
if(empty($login) or empty($password) or empty($email))
{
echo "Error";
}
else
{
//блок № 3
$db = mysql_connect ("localhost", "ваш_логин_для подключения_к_бд", "пароль_к_логину_для_подключения_к_бд") or die("MySQL сервер недоступен!<br>".mysql_error());
mysql_select_db ("имя_базы_данных", $db) or die("Нет соединения с БД<br>".mysql_error());
//блок № 4
$result = mysql_query("SELECT id FROM user WHERE login='$login'");
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
}
$result = mysql_query("SELECT id FROM user WHERE email='$email'");
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
exit ("Извините, но ваш е-майл уже есть в системе. Попробуйте восстановить доступ.");
}
//блок № 5
$shifr = md5($password);
echo "начинается запись в базу данных<br>";
$result = mysql_query ("INSERT INTO user (surname, name, login, email, url, password) VALUES ('$surname', '$name', '$login', '$email', '$url', '$shifr')");
/* $shifr - зашифрованное password md5 */
if ($result == 1)
{
echo "регистрация прошла успешна";
}
else
{
echo "ошибка, попробуйте позже";
}
}
?>
Из этого примера можно рассмотреть, что регистрация на php состоит из 5 основных блоков:
1) получение переменных с формы и преобразование их в переменные
2) проверка на заполнение обязательных полей (пустые ли они?)
3) соединение с сервером баз данных и выбор определенной базы данных
4) проверка на совпадение введенных данных с теми, что уже имеются в базе данных, и соответствующий вывод результата о том., что введенный, к примеру, е-майл уже есть в бд.
5) шифрование пароля стилем md5 и запись всех данных в базу данных.
Теперь чуть подробнее.
1)
Эта функция полезна при отображении данных, введенных пользователем, которые могут содержать нежелательные HTML тэги, например в форуме или гостевой книге.
Производятся следующие преобразования:
- '&' (амперсанд) преобразуется в '&'
- '"' (двойная кавычка) преобразуется в '"' в режиме ENT_NOQUOTES is not set.
- "'" (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.
- '<' (знак "меньше чем") преобразуется в '<'
- '>' (знак "больше чем") преобразуется в '>'
Итак, чтобы не пропустить ссылки, скрипты, мы убираем символы, которые тут не к месту. Это если сказать в двух словах.
2)
Это означает, что в переменную с именем surname мы записываем значение фамилии, которую ввел наш посетитель при регистрации.
3)
Если не заполнены обязательные поля - логин, пароль, емайл, то выводится сообщение об ошибке:
4)
<p><strong>$db = mysql_connect ("localhost", "ваш_логин_для подключения_к_бд", "пароль_к_логину_для_подключения_к_бд") or die("MySQL сервер недоступен!<br>".mysql_error());</strong></p>
<p><strong> mysql_select_db ("имя_базы_данных", $db) or die("Нет соединения с БД<br>".mysql_error());</strong></p>
<p>
В этом блоке мы осуществляем подключение к серверу баз данных. Если подключились к нему, выбираем определенную базу данных с именем. Эти данные вам должен предоставить хостинг-провайдер.
5)
<p><strong>$result = mysql_query("SELECT id FROM user WHERE login='$login'");</strong></p>
<p><strong> $myrow = mysql_fetch_array($result);</strong>
<strong> if (!empty($myrow['id'])) {</strong>
<strong> exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");</strong>
<strong> }</strong>
<strong> $result = mysql_query("SELECT id FROM user WHERE email='$email'");</strong>
<strong> $myrow = mysql_fetch_array($result);</strong>
<strong> if (!empty($myrow['id'])) {</strong>
<strong> exit ("Извините, но ваш е-майл уже есть в системе. Попробуйте восстановить доступ.");</strong>
<strong> }</strong></p>
<p>
Отправляем запрос в базу данных: буквально звучит так (Выбрать id Из таблицы_user Где Логин="введенному_логину")
Записываем результат в переменную $result.
Если результат не нулевой, то выводится сообщение: "Извините, но ваш логин или е-мейл уже есть в системе. Введите другое значение".
6)
Переменной $shifr присваивание шифрование пароля методом md5.
7)
Запрос к базе данных с целью записи значений е-майла, логина, имени, введенного с клавиатуры.
Это часть 2ая, 1ая будет опубликована чуть позже. В 1ой будет подключение к серверу базы данных, создание таблицы с определенными параметрами для регистрации.
Если вам нравится то, что мы пишем, пожалуйста, нажмите на интересующую вас рекламу сбоку, сверху, или сразу после статьи. Будет стимул писать лучше и чаще. Хорошего вам дня.