Пишем систему пользователей сайта на PHP. Часть 2. Пишем регистрацию пользователей
20 августа 2008 | KalimdorРазглагольствовать что да как у меня сделано не буду, код очень хорошо прокомментрован буквально по действиям.
Сначала форма с полями:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <html> <head> <title>Регистрация нового пользователя</title> </head> <body> <table> <tr><td> <form action = "reg_end.php" method = "post"> Введите, пожалуйста, желаемый логин:</td><td> <input type = "text" name = "login"> </td></tr> <tr><td> Введите свой пароль<br /></td><td><input type = "password" name = "pass"> </td></tr> <tr><td> Повторите свой пароль:</td><td><input type = "password" name = "second_pass"> </td></tr> <tr><td> Введите свой e-mail:</td><td><input type = "text" name = "email"> </td></tr> <tr><td> <input type = "submit" value = "Зарегистрироваться"> </form> </td></tr> </table> </body> </html> |
В таблице юзеров у нас 4 поля — id_user, login, pass, mail. Пароли шифруются с помощью алгоритма необратимого шифрования md5. Теперь код самого обработчика:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | <?php // Приём данных из формы $login = $_POST['login']; $pass = $_POST['pass']; $second_pass = $_POST['second_pass']; $email = $_POST['email']; // Проверка вводимых данных на корректность if(!preg_match("/^[A-Za-z0-9]+$/",$login)) { include "regerror.php";// Здесь можно поставить адрес любой страницы с сообщением об ошибке. Аналогично со всеми инклюдами в проверке данных и их соответствии. exit(); } if(!preg_match("/^[A-Za-z0-9]+$/",$pass)) { include "regerror.php"; exit(); } if(!preg_match("/^[A-Za-z0-9]+$/",$second_pass)) { include "regerror.php"; exit(); } if(!preg_match("/^[dw-_.]+@[dw-.]+.[w]{2,4}/i",$email)) { include "regerror.php"; exit(); } // Проверяем соответствие пароля и его копии if (!$pass == $second_pass) { include "regerror.php"; exit (); } // Проверим занятость логина и мыла в скрипте // Коннектимся к базе данных include "config.php"; // Формируем запрос $query_login = "SELECT `user`,`mail` FROM `user` WHERE login = "$login" OR mail = "email";"; // Делаем запрос к БД $ath = mysql_query ($query_login, $dbdeskriptor); // Проверяем успешность запроса if (!$ath) { include "dberror.php"; // При проверке успешности запроса указывайте свой адрес файла с сообщением об ошибке mysql_close ($dbdeskriptor); exit (); } // Извлекаем результаты запроса $result = mysql_fetch_assoc ($ath); // Проверяем свободность if (isset ($result ['user'])) { include "regerror.php"; mysql_close ($dbdeskriptor); exit (); } // Если всё нормально, заносим данные в базу данных // Сформируем данные $pass = md5 ($pass); // Сформируем запрос $query_insert = "INSERT INTO user VALUES (0,'$login','$pass','$email');"; // Проведём запрос к БД $ath = mysql_query ($query_insert, $dbdeskriptor); // Проверим успешность запроса if (!$ath) { include "dberror.php"; mysql_close ($dbdeskriptor); exit (); } // Закроем соединение с БД mysql_close ($dbdeskriptor); // Выведем сообщение об успешной регистрации echo "Регистрация прошла успешно"; ?> |
Файл подключения базы данных (config.php):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php $dblocation = "localhost"; // Введите имя хоста сервера баз данных MySQL $dbuser = ""; // Введите имя вашего пользователя БД MySQL $dbpass = ""; // Ввелите пароль вашего пользователя БД MySQL $dbname = ""; // Введите имя БД MySQL, предназначенной для скрипта // Соединение с БД $dbdeskriptor = @mysql_connect($dblocation,$dbuser,$dbpass); if (!$dbdeskriptor) // Проверяем соединение с сервером БД { include "dberror.php"; exit(); } // Подключается к базе данных $db_select = mysql_select_db($dbname,$dbdeskriptor); if (!$db_select) // Проверяем соединение с нужной БД { include "dberror.php"; exit(); } ?> |
Далее во всех скриптах, использующих БД для подключения будет использоваться этот файл.
На сегодня пока всё
.
23
Пишем систему пользователей сайта на PHP. Часть 1. Составляем проект
17 августа 2008 | KalimdorСистема пользователей необходима на многих сайтах, поэтому я решил написать серию постов на эту тему. Процесс написания будет разбит на части, в каждой будет описываться процесс написания одного из компонентов системы. Эта часть — первая, здесь будет описана будущая пользовательская система.
И так, что моя система будеn иметь:
- Регистрирация пользователей
- Выполнение входа пользователей
- Выполние выхода пользователей
- Выполнение проверки, перед выводом содержимого для конкретного пользователя
- Личный кабинет
- Вывод профайла пользователя
- Система администрирования
Теперь разберём каждую часть в отдельности.
Регистрации пользователей
Данный модуль представляет из себя страничку с полями, где пользователь должен заполнить все необходимые поля и нажать кнопку регистрации. Что должен уметь данный компонент:
- Проверять входящие от пользователя данные на корректность, чтобы в скрипт не пропихнули чего-нибудь опасного
- Уметь выводить капчу при регистрации для защиты от ботов
- Проверять занятость логина и e-mail
- Отправлять письмо для подтверждения регистрации
Вход пользователя
По сути — два классических поля логин/пароль. Данный модуль должен уметь:
- Проверять входящие данные (безопасность, безопасность и ещё раз безопасность)
- Проверять наличие логина в базе данных и при его присутствии проверить пароль
- Если логин и пароль верны записывать данные в куки
Выход пользователя
Тут всё просто. Пользователь нажимает кнопку выход и скрипт удаляет пользовательские куки.
Выполнение проверки при выводе приватного содержимого
В данном случае это будет просто функция проверки кук на корректность, которую надо будет подключать там где нужно. Принцип действия такой же как и при авторизации, за исключением того, что данные берутся из кук.
Личный кабинет
Тут пользователь может редактировать данные профайла. Ничего сложного тут нет.
Профайл
Тут будет выводиться информация профайла пользователя. Профайл можно сделать как открытый, так и закрытый. Я рассмотрю различные вариации открытого и закрытого профайла.
Система администрирования
Тут будет три инструмента:
- Вывод списка пользователей
- Возможность редактировать профайлы пользователей
- Возможность удалять пользователей
Вот и всё описание продукта. Теперь его осталось сделать
.
9
Сборка вордперсса 2.6 для сплогов
26 июля 2008 | KalimdorДавненько я не писал в блог, теперь напишу
.
Собственно я сделал сборку движка WordPress 2.6 со всеми полезными и необходимыми плагинами для создания сплогов на основе этой CMS. Сборка сделана на основе версии Лекактуса.
Список задействованых плагинов:
- All in One SEO Pack
- Anti-XSS attack
- Auto_more + advert
- FeedWordPress
- Google XML Sitemaps
- MaxSite Russian Date
- RusToLat
- WordPress Database Backup
- WP-NoRef
- WP-PageNavi
- WP Super Cache
- Akismet
За автонаполнение сплога отвечает FeedWordPress. Скачать сборку можно здесь:
Пожелания на счёт сборки принимаются на мыло, в ICQ и в комментариях.
Joomla! Небольшой обзор
2 мая 2008 | KalimdorДвижок Joomla! появился как ответвление движка Mambo и сейчас достаточно активно развивается. У этого движка образовалось большое комьюнити, соответственно готовых шаблонов, компонентов, модулей и мамботов для движка очень много. Сейчас у движка 2 ветки — 1.0.x и 1.5.x. Первая заканчивается версией 1.015, вторая — 1.5.3. Первая ветка более стабильна, жрёт меньше ресурсов да и расширений для неё побольше, но сейчас она больше не развивается, в отличие от второй ветки. Поэтому, какою именно ветвь использовать — решать вам, исходя из необходимого функционала. Лично я пока остановился на сборке 1.0.12 Lavra Edition, т.к. она стабильна, функциональность у неё можно многократно повысить и у неё нормальный перевод.
В любом случае джумла — развивающийся движок, с хорошим уровнем безопасности. Наверняка в нём или в многочисленных компонентах к нему найдётся то, что вам необходимо для создания сайта, а если и не найдётся, то в любом случае можно написать самому. Как платформа для создания сайтов различной тематики движок определённо хорош, но соцсеть на нём построить вряд ли получится, да и не нужно, т.к. для этого есть более подходящие движки.
И на последок, несколько полезных ссылок:
Joomla! CMS по-русски — русскоязычный сайт по джумле.
Форум по Joomla! - очень обширный форум по движку.
Freedom-ru - собрание локализованных компонентов для Joomla!. Компонентов не много, но все они глобальные и очень полезные. Локализацию выполняют создатели ресурса.
__________________________________
В это воскресенье стал счастливым обладателем ноутбука hp 530 с процессором Core Duo T2600. Сейчас переношу всю работу на ноут и осваиваюсь с ним. По первым впечатлениям — прекрасный рабочий ноут.
__________________________________
Наверное, уже традиционный, постовый:
Московский полубомж написал нормальное руководство для начинающих линкопродавцов. Если хотите начать зарабатывать на этой теме, то данное руководство настоятельно рекомендую прочитать.
Сео-критик провёл исследование на влияние ссылок с .doc и .pdf документов на выдачу.
CMS PHP-Nuke
14 февраля 2008 | KalimdorВот, собственно первый пост новой рубрики, посвящённой web-скриптам. Но сначала о моих новых целях.
Раньше я многому учился (да и сейчас учусь), но почти никак полученные знания не использовал и соответственно зарабатывал в интернете мало. Так же, я работал очень непоследовательно, постоянно придумывая для проектов и бросая их на полпути. Отныне, пока свои старые идею не реализую, за новые не буду браться. Моей целью с данного момента времени будет ноутбук. Конкретные сроки для себя опредедять не буду, потому что ещё слабо себе представляю тот объём работ, который предстоит сделать. А теперь вернёмся к сабжу поста.
PHP-Nuke пожалуй самая старая CMS, распространяемая бесплатно. На её основе было сделано достаточно много движков, как бесплатных (Post-Nuke например) так и платных (SLAED), и по сей день это один из самых популярных бесплатных инструментов для создания порталов. Вокруг него сформировалось гигантское комьюнити. Правда в последние полгода — год движок практически не развивается, да и интерес к нему постепенно угасает. В России, как всегда, всё не так просто, как за рубежом. На русском портале www.rus-phpnuke.com Уже достаточно долго ведётся разработка русской ветки этого движка (было уже два релиза) и надо отдать должное её разработчикам — последний релиз гораздо лучше последней официальной версии PHP-Nuke, при том что совместимость почти со всеми сторонними модулями сохранена. Кстати, одним из самых больших преимуществ этого движка является просто умопомрачительное количество модулей, блоков и шаблонов дизайна. Нюку можно посоветовать новичкам, которые не знают, что такое CMS и с чем её едят. Впрочем, опытным веб-мастерам он тоже может послужить основой для нового сайта, благо функционал у движка большой, для расширения можно ставить готовые модули (в крайнем случае, можно и самому написать
).
Конечно же, проблем и вопросов по новому для себя движку мало кто избегает. Для нюки ответы на различные вопросы и решения разнообразных проблем почти всегда можно найти на форуме, прошерстив поиском по нему. Стоит отметить, что старожилы форума не любят постоянно отвечать на одни и те же вопросы, поэтому перед созданием темы на форуме для начала не плохо было бы поискать ответ на сайте и форуме, во избежание ворчания в ваш адрес
.
Вообщем, не смотря на свою старость, нюка вполнеможет конкурировать с более молодыми движками.
________________________________
Бесколёсный продолжает обзоры хостингов. Теперь эго жертвами стали Infobox.ru, ISPserver, Spaceweb.ru, EraHosting.net. Рекомендую взять посты на заметку.
Spryt наконец-то сменил дизайн блога.