Аналитическая часть




НазваниеАналитическая часть
страница5/8
Дата публикации26.03.2013
Размер1.02 Mb.
ТипДокументы
www.vbibl.ru > Информатика > Документы
1   2   3   4   5   6   7   8
^

Связь PHP с базой данных MySQL:


Чтобы получить доступ к базе данных из Web, используя PHP, надо сделать следующие основные шаги:

  • Подключение к серверу MySQL.

  • Выбор базы данных.

  • Выполнение запроса к базе данных:

    • добавление;

    • удаление;

    • изменение;

    • поиск;

    • сортировка.

  • Получение результата запроса.

  • Отсоединение от базы данных.

Для подключения к серверу базы данных в PHP есть функция mysql_connect( ). Ее аргументы: имя компьютера, имя пользователя и пароль. Эти аргументы можно опустить. По умолчанию имя компьютера = localhost, тогда имя пользователя и пароль не требуется. Если PHP используется в сочетании с сервером Apache, то можно воспользоваться функцией mysql_pconnect(). В этом случае соединение с сервером не исчезает после завершения работы программы или вызова функции mysql_close(). Функции mysql_connect() и mysql_pconnect() возвращают идентификатор подключения, если все прошло успешно. Например:

$link = mysql_pconnect ();

if ( !$link ) die ("Невозможно подключение к MySQL");

После того, как соединение с сервером MySQL установлено, нужно выбрать базу данных. Для этого используется функция mysql_select_db(). Ее аргумент: имя базы данных. Функция возвращает true, если указанная база данных существует и доступ к ней возможен. Например:

$db = "sample";

mysql_select_db ( $db ) or die ("Невозможно открыть $db");
Для добавления, удаления, изменения и выбора данных нужно сконструировать и выполнить запрос SQL. Для этого в языке PHP существует функция mysql_query(). Ее аргумент: строка с запросом. Функция возвращает идентификатор запроса.

2.2 Платформонезависимость

Интернет-магазин будет разрабатываться в такой форме, чтобы его можно было легко перенести с одной платформы на другую (Unix <-> Windows). To есть комплекс скриптов должен работать как в ОС Unix, так и в ОС Windows. Следовательно, для разработки и последующей установки комплекса скриптов Интернет-магазина, понадобятся веб-сервера под эти платформы.

Под Unix этой проблемы как бы не существует - в её обычной поставке идет Apache Web Server. Существует также и версия под ОС Windows.
2.3 Инструменты для работы с графикой

Дизайн (оформление) в Интернет-проектах вещь важная, именно эта часть работы формирует лицо сайта (проекта) и первое впечатление о нём (второе сформируют удобство навигации и качество программирования). Выбор программного обеспечения для работы с графикой - задача не из легких. Есть достаточное количество профессиональных и полупрофессиональных редакторов, которые имеют большое количество функций. Так, например, Adobe Photoshop - наиболее известный и популярный графический редактор среди них. Очень большое количество людей пользуются именно им. Данная программа является одной из лучших профессиональных пакетов для работы с графикой на профессиональном уровне. Adobe Photoshop содержит весь необходимый набор для работы с графическими изображениями. Из множества различного рода инструментов для работы с графикой был выбран Adobe Photoshop CS4.
2.4 Сеансы работы пользователей

Протокол HTTP изначально проектировался без поддержки механизма информации о состоянии сеансов работы пользователя. Индивидуальные запросы не связаны друг с другом, и HTTP-сервер не располагает средствами распознавания конечных пользователей между сеансами. Поэтому требуется определить способ идентификации пользователя, связать данные предыдущих и текущего сеансов работы пользователя. Под сеансом понимается запрос пользователем одного документа с HTTP - сервера. Существуют несколько способов организации сеансов, все они построены на наличии одной или нескольких переменных, которые ассоциируются с конкретным пользователем и устанавливают соответствие при каждом сеансе.

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

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

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

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

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

Передача идентификатора сессии между сеансами может происходить как передача параметров строки запроса, каждая ссылка и форма на странице должны иметь этот параметр. Недостаток этого способа идентификации состоит в том, что при большом числе пользователей и генерируемых для каждого пользователя страниц загрузка сервера значительно повышается за счет обработки каждой ссылки и формы страницы. Идентификатор сессии
должен быть случайным для каждой новой сессии пользователя, это позволит избежать подбора идентификатора и подмены пользователя. Другой способ состоит в использовании механизма Cookies. Преимущества последнего очевидны — нет необходимости дополнять каждую ссылку и форму страницы параметром сессии, это снижает нагрузку и позволяет сохранять некоторые параметры между сессиями пользователя, вести статистику посещаемости конкретного пользователя и на основе его предпочтений предоставлять персонализированную информацию сразу, без проведения дополнительной авторизации. Однако, как и у всех методов идентификации, в данном случае есть свои минусы. Поддержка Cookies может быть отключена в большинстве используемых браузеров. Статистика свидетельствует, что на данный момент поддержку Cookies отключают порядка 0,5 % пользователей Интернета, поэтому если Интернет-приложение должно обрабатывать всех пользователей, следует предусмотреть возможность обработки и таких запросов.

2.5 Cookies

Откуда возник термин "cookie" никто достоверно не знает, хотя считается, что во времена зарождения Unix-систем где-то использовалось словосочетание Magic Cookies. Имелись в виду "квитанции" (token, ticket), которыми обменивались программы.

Cookie является решением одной из наследственных проблем HTTP протокола (HyperText Transfer Protocol). Эта проблема заключается в непостоянстве соединения между клиентом и сервером, как при FTP или Telnet сессии, т.е. для каждого документа (или файла) при передаче по HTTP протоколу посылается отдельный запрос. Включение cookie в HTTP протокол дало частичное решение этой проблемы. Иначе говоря, транзакция завершается после того, как браузер сделал запрос, а сервер выдал соответствующий ответ. Сразу после этого сервер "забывает" о пользователе и каждый следующий запрос того же пользователя считает новым пользователем.

Используя cookie, можно эмулировать сессию по HTTP протоколу. Коротко принцип эмуляции сессии таков: на первом запросе выдается соотвествующее значение cookie, а при каждом последующем запросе это значение читается из переменной окружения HTTP_COOKIE и соответствующим образом обрабатывается.

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

Cookie - это небольшая порция текстовой информации, которую сервер передает браузеру. Браузер будет хранить эту информацию и передавать ее серверу с каждым запросом как часть HTTP заголовка. Одни значения cookie могут храниться только в течение одной сессии, они удаляются после закрытия броузера. Другие, установленные на некоторый период времени, записываются в файл. Обычно этот файл называется 'cookies.txt' и лежит в рабочей директории установленного на компьютер браузера.

В настоящее время большинство браузеров поддерживает механизм cookies. Сами по себе cookies не могут делать ничего, это только лишь некоторая текстовая информация. Однако сервер может считывать содержащуюся в cookies информацию и на основании ее анализа совершать те или иные действия. Например, в случае авторизованного доступа к чему либо через WWW в cookies сохраняется login и password в течение сессии, что позволяет пользователю не вводить их снова при запросах каждого документа, защищенного паролем.

На использовании cookies также часто строят функции оформления заказов в онлайновых магазинах, в частности, в самом крупном виртуальном книжном магазине Amazon Books реализована своеобразная виртуальная корзина покупателя, как в обычном реальном супермаркете, в которую сервер записывает информацию обо всех заказанных книгах. Пользователь просто помечает интересующие его книги, а затем оформляет покупку сразу всех отмеченных книг.

Еще одна распространенная область использования cookies - при настройке индивидуального профиля каждого зарегистрированного пользователя.

И, наконец, самая последняя область - использование механизма cookie в рекламном бизнесе на Интернет. Еще год назад реклама в Интернет за деньги была довольно экзотической услугой, а сейчас этот бизнес уже устоялся и стремительно развивается. Однако рекламодатели начинают предъявлять более жесткие условия к оценке эффективности своих расходов. Cookie используются для таргетинга рекламы (определения целевой аудитории, например, по географическому положению пользователей), отслеживания интересов пользователей, учета количества показов и проходов сквозь баннеры.

Клиент (браузер) имеет следующие ограничения для cookies:

  • всего может храниться до 300 значений cookies

  • каждый cookie не может превышать 4Кбайт

  • с одного сервера или домена может храниться до 20 значений cookie

Если ограничение 300 или 20 превышается, то удаляется первая по времени запись. При превышении лимита объема в 4Кбайт корректность значения cookie страдает - отрезается кусок записи (с начала этой записи) равный превышению объема.

В случае кэширования документов, например, proxy-сервером, поле Set-cookie HTTP заголовка никогда не кэшируется.

Если proxy-сервер принимает ответ, содержащий поле Set-cookie в заголовке, предполагается, что поле доходит до клиента вне зависимости от кода возврата 304 (Not Modified) или 200 (OK). Соответственно, если клиентский запрос содержит в заголовке Cookie, то он должен дойти до сервера, даже если жестко установлен параметр If-modified-since.
Способ задания значений cookie зависит того, как эти значения будут использоваться и какие имеются серверные ресурсы. Можно манипулировать временем жизни выставленных cookie и устанавливать подмножества URL (Universal Resource Locator), в которых заданные значения действительны. Есть несколько способов задания, наиболее часто используются три - через META-таги языка HTML, JavaScript и CGI-скрипты. Любым способом можно задавать как одно, так и несколько значений сразу. Главной проблемой является изначальное недоверие пользователей к тому, что удаленные сервера без их (пользователей) ведома и согласия записывают на их собственные локальные диски какую либо информацию. Бытовали также слухи о том, что с помощью механизма cookie можно прочесть любую информацию с любого компьютера. Это неправда, к тому же современные версии браузеров позволяют контролировать прием cookie или вовсе блокировать его. Кроме того, появилось множество специальных утилит для управления приемом cookie, так называемые Cookie Managers.

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

2.5.1 Cookies и отслеживание сеанса в PHP

При появлении нового посетителя сценарий PHP проверяет, существует ли на компьютере посетителя cookie. Если cookie находится, значит, пользователь посещал сайт в течение определенного интервала времени (который задается администратором сайта в инициализационном файле), и сценарий не учитывает новое посещение. Если cookie отсутствует или интервал между посещениями превысил заданную величину, информация сохраняется в таблице MySQL, а на компьютер посетителя создается cookie.

2.5.2 Механизм Cookies

Впервые механизм постоянного хранения информации на стороне клиента был представлен в браузере Netscape Navigator. Включение Cookies в HTTP-протокол дало частичное решение проблемы непостоянства соединения между клиентом и сервером. Механизм Cookies позволяет персонализировать информацию для каждого пользователя, запоминать состояние клиентских настроек и другую информацию, специфичную для конкретного пользователя.

Когда CGI-программа идентифицирует пользователя, в заголовок генерируемой страницы добавляется специальный HTTP-заголовок, данные из которого браузер, поддерживающий Cookies, сохраняет на жестком диске пользователя. Для хранения обычно используется отдельный текстовый файл для каждого URL. Если браузер не поддерживает механизм Cookies, заголовок игнорируется. В зависимости от того, на какой срок устанавливались Cookies, эта информация будет храниться в течение одной сессии и удаляться после закрытия браузера или записываться в файл для использования в течение установленного промежутка времени. В этом случае установленная информация будет храниться между сессиями пользователя. В настоящее время работа Cookies возможна не только с помощью CGI-npo-грамм, но и с помощью языка разметки HTML, языков подготовки сценариев, таких как JavaScript выполняющихся на стороне пользователя. После того как Cookies установлены, при обращении браузера пользователя к URL, с которого были установлены данные, все запросы будут содержать Cookies как дополнительный HTTP-заголовок в запросе. Механизм Cookies накладывает несколько ограничений на число и размер хранимых у клиента данных.

Размер данных для каждого устанавливаемого Cookies не должен превышать 4 Кбайт.

Используется максимум 20 Cookies на сервер или домен. Это ограничение применяется для каждого из подсерверов одного домена, если указаны их полные имена.
2.5.3 Установка Cookies

Для того чтобы установить Cookies, необходимо при генерации страницы

добавить HTTP-заголовок следующего вида:

Set-Cookie: name=value; expires=date; path=pathname; domain=domain-name;

secure

Допустимо устанавливать несколько Cookies одновременно, для этого

необходимо каждый из них начинать, как и другие заголовки, с новой строки. name-value — обязательный параметр, определяющий устанавливаемую переменную и ее значение. При запросе к URL сценарий может получить эти

значения.

expires=date — этот параметр устанавливает дату, когда Cookie становится

недействительным и подлежит удалению.

Например:

Expires: Mon. 06 May 1996 04:57:00 GMT

Expires: Monday. 06-May-96 04:57:00 GMT

Expires: Mon May 6 04:57:00 1996

Если значение параметра expires не задано, устанавливаемые данные

используются только для текущей сессии и удаляются после того, как

браузер будет закрыт.

path=pathname — определяет диапазон действия Cookies. Если pathname=/, то

это означает, что устанавливаемые Cookies будут действительны для всех

каталогов домена. Для принудительного ограничения действия Cookies

необходимо указать категорию, относительно которой данные будут

считаться действительными.

Например, при установке path^/docs данные будут считаться

действительными для каталога /docs (относительно корневого каталога

домена), а также для всех каталогов, входящих в указанный,

например: /docs/linux и /docs/pe.

domain=domain-name — этот параметр определяет диапазон доменов, для

которых Cookies будут действительны. Название домена должно содержать

минимум две точки (.), например: www.nx.ru. Если в названии первым

символом является точка, то такие данные считаются доступными для всех

доменов уровня, например: .nx.ru — значения, записанные таким образом,

устанавливаются для всех поддоменов www.nx.ru, max.nix.ru, das.nix.ru.

Параметр secure позволяет использовать Cookie только при безопасном

соединении через SHTTP и SSL. При отсутствии параметра secure данные

передаются всегда, при каждом обращении к соответствующему URL.

2.5.4 Получение Cookies

Все значения, допустимые Cookies для URL запрашиваемой страницы,

передаются в отдельной строке запроса.

Cookie: namel=valuel; name2=value2: . . .

Для того чтобы получить доступ к значениям Cookies, установленным ранее,

используется переменная окружения НТТРСООК1Е. В НТТРСООКШ

сохраняется строка после Cookie:.

Отдельные Cookies разделяются с помощью точки с запятой (:), а названия

переменных и их значения — с помощью знака «равно» (=), поэтому

достаточно просто получить доступ к данным.
2.6 Схема работы интернет-магазина
2.6.1 Главная страница
Файл главной страницы сайта, написанного на PHP обычно называется index.php. И при правильной настройке сервера вызывается как полным вводом адреса в адресную строку браузера, например, http://something.com/index.php, так и вводом в адресную строку только доменного имени сервера - http://something.com.

В моей работе я применяю стандартную схему разработки сайта на PHP: она основывается на том, что все модули для работы интернет-магазина подключаются через главную страницу. То есть пользователь выбирает раздел сайта, и код главной страницы подключает необходимый модуль.

Рассмотрим работу файла index.php:

Вначале при помощи директивы define мы создаем константы, которые остаются постоянными во время выполнения скрипта на сервере. В нашем случае мы определяем базовые пути к различным папкам на сервере. Это делается для достаточно простой переносимости всего магазина, как в пределах одного сервера, если необходимо на нем расположить не только интернет-магазин, так и на другие сервера. Таких путей 3 – путь к папке с расположением всех скриптов - PS_BASE, путь к корневой папке веб-сервера - WEBROOT и путь к папке где хранятся модули интернет-магазина - MODROOT.

Затем подключаем необходимые файлы для работы, в которых содержаться общие переменные для любого модуля нашего интернет-магазина: config.php – содержит главные константы, такие как данные для подключения базы данных, версию интернет-магазина, пути к главному модулю интернет-магазина и т.п., db_mysql.inc – содержит класс ps_DB, при помощи которого осуществляется простейшие операции с базой данных MySQL, файлы ps_main.inc и ps_include.inc содержат функции и определения экземпляров классов для основных возможностей: загрузки модулей, обработки ошибок выполнения и т.п.

Далее скрипт выполняет проверки для безопасности. В частности проверку на SQL инъекции, то есть внедрение SQL кода в запрос. Это один из самых распространенных способов взлома сайта. Атака может быть возможна из-за некорректной обработки входящих данных, используемых в SQL-запросах. Для того, чтобы это было невозможно, проверяем чтобы в запросе были только те параметры, которые мы используем. А также чтобы эти параметры были правильным, то есть валидными с точки зрения работы наших скриптов.

После этого инициализируем классы для работы с базой данных (ps_DB), для работы с сессией (ps_session) и для обработки прав доступа (ps_perm). Если пользователь зашел на сайт в первый раз, то устанавливаем язык по умолчанию и сохраняем его в сессию, также и сохраняем текущую страницу, для того, чтобы потом, если, допустим пользователь выполнит вход с данной страницы, он возвратился бы именно на нее. Инициализируем массив корзины, где главный элемент будет хранить экземпляр класса для работы с ней, а остальные будут хранить вспомогательные переменные. Таким же образом поступаем и с массивом данных пользователя, таких как логин, пароль и т.п.

После этого определяем функцию, которая заменяет символы в строке запроса на специальные символы, для корректного отображения на странице - harden_parse($vars). И проверяем массив запроса, а также данные пользователя для аутентификации, то есть узнаем может ли пользователь просматривать эту страницу и какие функции ему доступны.

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

Наконец, мы загружаем страницу для отображения пользователю. Ее загрузка выполняется в 3 этапа:

  1. Загружаем так называемый Header из шаблонов, который отвечает за отображение верхней части страницы. Использование шаблонов позволяет легко менять внешний вид страниц, потому как для изменения каждой страницы, достаточно поменять дизайн только в одном файле, что крайне удобно и давно стало стандартом веб-разработки.

  2. Загружается тело страницы, которое сформировал вызванный модуль и его функция.

  3. После этого, также как и Header, загружаем Footer или как его называют в РуНете – «подвал». По функциональности он ничем не отличается от Header’а, только отвечает за отображение нижней части страницы.

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

Как уже упоминалось, в нашем проекте страница формируется на основе вызова необходимого модуля и функции этого модуля. Рассмотрим работу основных модулей и функций интернет-магазина.
2.6.2 Модуль «Корзина»

Данный модуль является одним из приоритетных в работе интернет-магазина. В нашем случае он состоит из подмодулей, размещенных в разных файлах:

basket.php – основной, самый полноценный модуль корзины.

cart.php – модуль для отображения корзины, как части другой страницы, например, при необходимости отображения корзины в Header’е.

minicart.php – модуль корзины для упрощенной работы, часто используется для неопытных пользователей (детей, например).

ro_basket.php – read-only корзина. Модуль не позволяющий вносить изменения в набор выбранных товаров, а обеспечивающий только их отображение.

Рассмотрим основной модуль корзины – basket.php:

Вначале подключаем классы отвечающие за работу с товарами интернет магазина (ps_product), за функционал категорий товаров (ps_product_category) и класс, отвечающий за зоны доставки (ps_zone).

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

После этого формируем таблицу выбранных товаров. В заголовке указываем названия столбцов:

$cart_name – «название корзины»

$cart_sku – «Описание товара»

$cart_price – «Цена 1 единицы товара»

$cart_quantity – «Количество экземпляров»

$cart_subtotal – «Стоимость количества экземпляров»

Данные в таблицу заносятся при помощи подключенных классов, которые читают их из базы данных.

Причем, для каждого продукта есть кнопка «Удалить», которая позволяет полностью удалить выбранный товар из корзины. Также существует возможность полностью очистить корзину от товаров.

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

Интерфейс корзины, как и всех остальных модулей определяется шаблонами, которые находятся в папке templates. Рассмотрим типы шаблонов, которые используются в нашем интернет-магазине.


2.6.3 Шаблоны интерфейса
Шаблоны интерфейса определяют отображение страницы для пользователя. В нашем случае созданы 3 шаблона:

- для администратора (header.php, footer.php);

- для страниц магазина (s_header.php, s_footer.php);

- для страниц пользовательского профайла (c_header.php, c_footer.php).

Общий функционал для интерфейсов находится в дополнительных файлах:

dtree-menu.php – динамическое меня любого уровня вложенности.

global.php – общие функции для всех шаблонов.

menu.php – меню для отображения перехода между шаблонами.

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

Рассмотрим шаблон для страниц магазина:

В Header’е мы задаем отображение необходимых модулей для вывода на страницах магазина и также внешний вид тела страницы, данные для которой формируются при переходе на определенный раздел сайта. Сначала подключаем CSS файл, то есть таблицу каскадных стилей, который служит для описания элементов HTML. После этого подключаем модуль «Корзина», который отображается в верхней части экрана и формируем меню для перехода между модулями. В теле странице по умолчанию для данного модуля выводится каталог товаров

В Footer’е отображаем информацию о контактах и различные рекламные модули.

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

Шаблон для администратора предназначен для отображения панели управления магазином. Рассмотрим, что именно она из себя представляет и каким образом реализована.

2.6.4 Администрирование

Администрирование для интернет-магазинов обычно делится на два раздела: управление доступом пользователей и наполнение/удаление позиций товаров.

Управление доступом пользователей

При управлении доступом пользователей можно изменять какие модули и какие функции этих модулей доступны каждому пользователю. Для этого созданы следующие php сценарии:

modules_list.php и function_list.php – сценарии позволяют выводить список модулей и функция, которые существуют для данного интернет магазина. При клике на модуль или функицию вызывается, соответственно, modules_form.php или function_form.php, которые отображают форму для редактирования доступа к ним.

Для управления пользователями, которые зарегистрировались для покупки товаров через наш интернет-магазин существуют следующие сценарии: user_form, user_list, user_adress_form.

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

User_list – отображает список пользователей и позволяет искать любого пользователя по параметрам.

User_adress_form – позволяет настроить поля, которые необходимо заполнить пользователю при регистрации в магазине и для совершения заказов.

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

Управление категориями товаров и заполнения каталога

Управление категориями товаров и управлением самими товарами осуществляет класс ps_product. Для использования данного класса написаны следующие сценарии:

Menu.php – отображает меню для управление модулями работы с каталогами. С помощью этого меню можно выбрать то, что необходимо сделать с каталогом товаров:

- просмотреть товары. За просмотр товаров в виде списка отвечает скрипт product_list.php. Также он позволяет выбрать любой товар и перейти на страницу его редактирования.

- страница редактирования товара. За нее отвечает скрипт product_form.php. Если выбран уже существующий товар, то форма на этой странице заполняется в соответствии с данными полученными из базы данных.

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

- импорт списка товаров предусмотрен во избежание рутиной работы по ручному заполнению каталога. В данном случае реализован механизм импорта из файлов CSV, которые являются файлами Microsoft Excel – одной из самых распространенных редакторов таблиц.

- распродажа продуктов. За добавление продуктов в распродажу отвечает скрипт product_specials.php. Он позволяет не только добавить или убрать продукт с распродажи, но и установить специальные условия для его покупки, такие как цена, получение 3-го товара в подарок и т.п.

- управление категориями. Управлять категориями товаров позволяет скрипт product_category_list.php. В этом списке можно создать, удалить или перейти на страницу редактирования категории.

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

- редактирование списка атрибутов. Каждая категория или продукт имеют ряд обязательных или необязательных атрибутов(название, цена, описание, …). Скрипт product_attribute_list.php выводит список существующих атрибутов и позволяет перейти к форме их редактирования – скрипт product_attribute_form.php.

- установить цену на продуктю Скрипт product_price_list.php позволяет устанавливать цены на продукты каталога в упрощенном виде, когда нет необходимости загружать полное описание товара и заходить в форму его редактирования.

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

2.6.5 Регистрация пользователя

Регистрацию пользователя выполняет тот же скрипт, который отвечает и за проверку выполнения входа пользователя на сайт – login.php. Если пользователь не зашел на сайт, предлагаем ему регистрацию в один клик. Для этого необходимо заполнить таблицу со следующими полями:

- Логин – уникальное имя, которое пользователь вводит при входе на сайт;

- Пароль – пароль доступа к сайту;

- Фамилия, Имя, Отчество – необходимы для того, чтобы была возможность доставлять товары существующему человеку.

- Название компании – в том случае, если пользователь является представителем компании-покупателя, либо делает корпоративные покупки.

- Индекс, Страна, Регион, Город, Адрес – при заказе с доставкой необходимо заполнить данные пункты. Причем если заполнено поле «Название компании», то поле адресу будет считаться корпоративным.

- Телефон, Факс – необходимы для связи с пользователем, особенно при непосредственной доставки товаров.

- e-mail – одно из главных полей при регистрации. На него будет выслана ссылка для восстановления пароля. Также используется для сообщения текущего состояния заказа.

После заполнения всех полей запускается модуль admin и вызывается функция shopperAdd, которая проверяет валидность введенных данных и, если данные введены верно, то оправляет по указанному e-mail письмо со ссылкой, по которой пользователю необходимо пройти, чтобы подтвердить, что именно он является нашим зарегистрировавшимся пользователем.

Нередко в современном интернете у обычного пользователя так много регистраций на различных сайтах, что приходится либо устанавливать один пароль на разных сайтах, а это чревато потерей всех регистраций при взломе одной. Либо запоминать или где то хранить достаточно большое количество паролей. Если пользователь по каким-либо причинам забыл или потерял пароль, то он может обратиться к странице восстановления пароля.

Данная страница выполняется скриптом lost_password_reset.php. Данный скрипт предлагает пользователю ввести логин и e-mail, указанные им при регистрации и, если эти данные соответствуют записям в базе данных, то на этот e-mail высылается ссылка на другой скрипт lost_password.php. При переходе по этой ссылке генерируется новый пароль для данного пользователя. Генерация нового пароля сделана потому, что вернуть пользователю пароль именно в том виде в каком он его вводил при регистрации невозможно. Так как пароли не хранятся нигде в открытом виде, а хранится только его уникальный кеш. Это сделано для соблюдения правил безопасности, чтобы утечка данных напрямую из базы не позволила злоумышленникам воспользоваться ею.

1   2   3   4   5   6   7   8

Похожие:

Аналитическая часть icon3. Аналитическая часть
Для расчета аналитической части работы использовались данными с сайта Госкомстата

Аналитическая часть iconИнформационная инфраструктура
Информационно-аналитическая система (иас) как часть программной поддержки информационной структуры организации 4

Аналитическая часть iconИнформационная инфраструктура
Информационно-аналитическая система (иас) как часть программной поддержки информационной структуры организации 4

Аналитическая часть iconАналитическая машина Бэббиджа
Аналитическая машина не была построена. Но Бэббидж сделал более 200 чертежей ее различных узлов и около 30 вариантов общей компоновки...

Аналитическая часть iconУправление образования артинского городского округа
Аналитическая часть. Организационные формы управления как механизм развития системы воспитательной работы

Аналитическая часть iconЗадание 17 Аналитическая часть. Анализ рентабельности на ООО «Главснаб» Заключение
При статистическом изучении основных закономерностей финансового состояния предприятий (организаций) широко используются методы группировок,...

Аналитическая часть icon«Аналитическая психология» содержание: Част Введение. Часть 2
Психоанализ не может перенести сущность психического в сознание, но должен рассматривать сознание как качество психического, которое...

Аналитическая часть iconЧасть Империум 2 Глава Часть Имперская педагогика 3 Глава Часть Общая...
Руси? Или все же попытаемся вернуть им изначальный священный смысл, возвысимся до понимания своего служения, своего долга — не только...

Аналитическая часть iconСтатья 14, Пункт 1 части 9 статьи 15, часть 6 статьи 20, часть 6...
Приказ Министерства здравоохранения и социального развития РФ от 21 ноября 2011 г. N 1377

Аналитическая часть iconЭнергетика: часть принесет северный поток, часть закольцуем, часть возобновим?
Фото A. F. I. Принцип равнодоходности позволит Газпрому расширить инвестиционную программу

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
www.vbibl.ru
Главная страница