Смекни!
smekni.com

Разработка интернет-приложения для организации электронной доски объявлений (стр. 4 из 6)

Учитывая то, что существует множество провайдеров, предоставляющих хостинг со связкой PHP/MySQL, выбранный набор программных средств способствует практическому воплощению готового проекта в жизнь.

Работа с базой данных

Последовательность подключения к базе данных и управления табличными данными традиционна – сначала устанавливается связь, потом выдается запрос и обрабатывается результат. Для подключения к базе данных нужны три параметра: имя хост-узла, имя пользователя и пароль. Определив эти параметры, можно установить соединение с БД при помощи функции MYSQL_CONNECT(), затем функцией MYSQL_SELECT_DB() выбирается нужная база данных (см. Приложение А). В случае ошибки соединения или выбора БД выводится соответствующее сообщение.

Для получения данных используется функция MYSQL_QUERY(), в которой указывается необходимый SQL-запрос, передаваемый MySQL.

Получить значения отдельных полей позволяет функция MYSQL_FETCH_ARRAY(), которая возвращает ассоциативный массив с данными (см. Приложение B).

Для получения количества строк в результате запроса служит функция MYSQL_NUM_ROWS(), которая используется для определения наличия в таблице той или иной записи (например, учетной записи пользователя).

Составление SQL-запросов

Чтобы начать работу с MySQL прежде всего требуется создать базу данных, с которой мы будем взаимодействовать. Это делается запросом “CREATE database имя_БД”.

Для создания таблицы используется запрос “CREATE table имя_таблицы” с перечислением полей и их типов (см. Приложение В). Для добавления новой записи в таблицу – “INSERT INTO имя_таблицы VALUES (перечисление_значений)”, для вывода данных “SELECT перечисление_полей FROM имя_таблицы WHERE условие ”.

Важной особенностью является возможность дополнения запросов следующими функциональными директивами: лимит выдаваемых строк “LIMIT”, сортировка данных в порядке убывания/возрастания значения поля “ORDER BY название_поля DESC/ASC”, подсчёт строк в запросе “COUNT (*)”.

Для редактирования значения поля используется запрос “UPDATE имя_таблицы SET имя_поля = значение поля WHERE условие”, для удаления “DELETE FROM имя_таблицы WHERE условие”. Практическая реализация вышеперечисленных запросов в коде приведена в Приложении.

Обработка данных, полученных от пользователя

Для проверки строк данных, полученных от пользователя на допустимые значения символов, используется функция ereg() и составленное соответствующим образом регулярное выражение, которым проверяется строка, передаваемая этой функции. Например, регулярное выражение “[^0-9]” эквивалентно по смыслу фразе “проверка на наличие в строке цифровых символов”. Регулярными выражениями проверяются все цифровые значения переменных, а так же строковые переменные логина, пароля и e-mail’а.

Шифрование паролей, вычисление хэш-кода символьной строки

Существует множество способов зашифровать или вычислить хэш-код какой-либо символьной строки, язык PHP предоставляет для этого целый набор функций (crypt, crc32 и др.). Поскольку мы уже ранее определились с алгоритмом MD5, будем использовать функцию md5().

Передача значений переменных между сервером к клиентом

При используемом в проекте алгоритме аутентификации необходима возможность многократной передачи значения кода сессии авторизованного пользователя между сервером (программой) и клиентом (браузером). Суть проблемы в том, чтобы отвести в определенной области памяти (на сервере или у клиента) место, где было бы возможно сохранять значение этого кода, причем это значение хранилось бы в течение требуемого периода времени. Для этой цели изобретен механизм Cookies и механизм сессий. Cookies подразумевает сохранение значений переменных на стороне клиента, механизм сессий – на стороне сервера. Для нашей задачи пригодны оба метода, но у первого есть большой недостаток, проявляющийся на практике – он заключается в том, что многие пользователи целенаправленно отключают этот режим в браузерах, в таком случае передача значений переменных становится невозможной. Сессии лишены этого недостатка, и, поскольку язык PHP предоставляет набор удобных функций для работы с сессиями, будем использовать именно этот механизм. Для начала нужно запустить сессию функцией session_start(), после чего можно устанавливать и считывать значения любых переменных: “$_SESSION["имя_переменной"] = значение_переменной”.

Особенность метода состоит в том, что PHP все же использует Cookies на стороне клиента, чтобы сохранить там значение идентификатора обратившегося к скрипту пользователя (PHPSID). Именно через этот идентификатор сервер «узнает», в какой области памяти он сохранил переменные. Однако, если у клиента выключены Cookies, PHP самостоятельно внедряет в отображаемый гипертекст дополнение ко всем ссылкам перехода строки вида

PHPSID=идентификатор_сессии, то есть при переходе пользователя по этим ссылкам значение идентификатора всё равно передается серверу и значения сохраненных переменных потеряны не будет. Именно это достоинство сессий обеспечило их повсеместное применение на средних и крупных проектах, написанных на языке PHP.

Отправка текста объявлений на потовые адреса подписчиков

Для отправки текста на e-mail в PHP служит функция mail(), в которой указывается почтовый адрес, тема сообщения и его тело. Почтовый адрес необходимо проверять на правильность синтаксиса, иначе высока вероятность взлома приложения путём ввода серверных команд удаленного доступа. Синтаксис проверяется регулярным выражением (см. Приложение J)

Формирование интерфейса

Формирование интерфейса происходит стандартным образом на языке гипертекстовой разметки HTML. Для увеличения скорости загрузки страниц каталога электронной доски объявлений весь дизайн интерфейса выполнен в текстовом виде. Автору удалось минимизировать HTML-код путем исключения избыточности (ненужных символов, HTML-тэгов, замена однотипных участков текста на вызов функции JavaScript, содержащий шаблон с этим текстом и т.п.), которая на сегодняшний день весьма распространена в Web-дизайне.

6. Описание программы

Разрабатываемое интернет-приложение предназначено для организации интерактивной многофункциональной электронной доски объявлений. Приложение устанавливается на сервере, поддерживающим выполнение PHP-скриптов не ниже третьей версии. Для работы приложения с данными необходима СУБД MySQL версии 3.23 или выше, которая в целях максимальной производительности должна быть установлена на том же сервере, что и интерпретатор языка PHP, однако это условие не является обязательным.

Для установки приложения необходимо по FTP-протоколу или любым другим образом скопировать файлы с поставляемого дистрибутива в каталог выделенного сервера, прописать название БД, логин и пароль для доступа (выдаются администратором интернет-сервера) в модуле tunes.php и запустить инсталлятор install.exe. После ввода регистрационной информации администратора электронная доска объявлений сразу же готова к работе.

Просмотр объявлений осуществляется через интуитивно-понятный WEB-интерфейс.

Для удобства пользователя, все объявления разделены на тематики, и содержатся в упорядоченном порядке в разделах каталога. Каждому объявлению соответствует тип – «спрос», «предложение», «обмен», «аренда», «прочее». Пользователь может включить фильтр на отображение объявлений только нужного ему типа.

Объявления могут добавлять только зарегистрированные пользователи. При регистрации у пользователя запрашивается логин, пароль и контактная информация. После регистрации пользователь может работать в своем аккаунте, добавлять, удалять и редактировать уже отправленные объявления, а также подписываться на почтовую рассылку новых объявлений.

Механизм подписки на почтовую рассылку имеет простой и удобный интерфейс, защищен от злоумышленников, пытающихся подписать чей-либо чужой почтовый ящик. Каждое добавленное объявление рассылается на почтовые адреса подписчиков без каких-либо искусственных ограничений и временных задержек, тем самым обеспечивая эффективность информирования.

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

Администратор может создавать и удалять разделы и подразделы каталога доски объявлений, просматривать список зарегистрированных пользователей, а так же удалять пользователей.

Режим модерирования предназначен для удаления любого объявления из каталога. Любой зарегистрированный пользователь может являться модератором доски объявлений, если администратор наделит его соответствующими правами доступа.

Авторизация пользователей имеет простой интерфейс и основана на безопасном алгоритме аутентификации, который обеспечивает надежную защиту от взлома паролей пользователей для приложений подобного уровня.

7. Руководство программиста

Проект состоит из 10 модулей, ниже будет описан каждый из них, а также функции, которые в них используются.

1) Модуль install.php

Назначение: для первоначального создания базы данных и таблиц, необходимых для работы приложения.

Принимаемые параметры:

action – код действия (0 – вывод формы запроса логина и пароля администратора, 1 – инсталляция); login – логин администратора; password – пароль администратора.

Функции:

ok($sql,$table);

- вывод в сообщения в гипертекстовом формате о результате выполнения запроса sql в таблице table.

2) Модуль tunes.php

Назначение: содержит константы со значениями логина, пароля и имени базы данных, использующиеся для подключения к БД MySQL:

dbName – имя базы данных; hostname – имя хоста MySQL или URL удаленной базы данных; username – логин пользователя; password – пароль для доступа к БД.

3) Модуль index.php

Назначение: отображение в гипертекстовом формате подразделов и разделов каталога и объявлений с разделением на страницы.