Классы в PHP 5 имеют ряд специальных методов (так называемых «magic methods»), начинающихся с двух символов подчёркивания. Особо стоит отметить конструктор (__construct, в ранних версиях конструктором служил метод, одноименный с классом) и деструктор (__destruct), а также методы чтения (__get) и записи (__set), свёртывания (__sleep) и развёртывания (__wake), клонирования (__clone) и др. Эти методы являются достаточно гибким инструментом: переопределяя их, можно легко добиться существенного изменения поведения объекта.
Экземпляры класса создаются с помощью ключевого слова new, обращение к полям и методам объекта производится с использованием символов ->. Для доступа к членам класса из его методов используется переменная $this.
class C1 extends C2 implements I1,I2{private $a; protected $b;Среди наиболее часто используемых возможностей PHP стоит отметить следующие:
· имеется большой арсенал функций для работы со строками;
· работа с регулярными выражениями PCRE выполняется функциями с префиксом preg_
· работа с базами данных осуществляется посредством модулей php5-mysql для MySQL, php5-pgsql для PostgreSQL и др. Функции этих модулей позволяют открывать соединение, выполнять SQL-запросы к СУБД, получать данные в удобной для обработки виде и т.д. В серьезных проектах рекомендуется использовать модули абстракции базы данных и объектно-реляционные проекции (ORM);
· для PHP разработаны средства шаблонирования web-страниц, позволяющие эффективно разделить представление от модели в духе MVC, например Smarty[4];
Таблица `anketa`:- Предназначена для хранения параметров анкет
`idank` int(11) NOT NULL auto_increment,
Унифицированный номер анкеты. Используется как PK, не может быть не заполнено, автоматическое увеличение поля, целочисленное.
`title` varchar(100) NOT NULL default '',
Текст названия анкеты. Храниться как уникальный (не допускает одинаковых имен), не может быть не заполнено, по умолчанию значение пробел, символьное(100).
`votes` int(11) NOT NULL default '0',
Поле, содержащее количество ответов на анкеты пользователей, не может быть не заполнено, по умолчанию значение 0, целочисленное.
Таблица `answer`: - Таблица предназначена для хранения ответов пользователя на анкеты.
`id` int(11) NOT NULL auto_increment,
Унифицированный номер ответа пользователя на анкету. Используется как PK, не может быть не заполнено, автоматическое увеличение поля, целочисленное.
`iduser` int(11) NOT NULL default '0',
Унифицированный номер пользователя используется как FK к таблице `users`, не может быть не заполнено, по умолчанию значение 0, целочисленное.
`idank` int(11) NOT NULL default '0',
Унифицированный номер анкеты используется как FK к таблице `ankets`, не может быть не заполнено, по умолчанию значение 0, целочисленное.
`idquest` int(11) NOT NULL defa-ult '0',
Унифицированный номер вопроса (для формирования анкет) используется как FK к таблице `quest`, не может быть не заполнено, по умолчанию значение 0, целочисленное.
`answer` varchar(100) NOT NULL default '0',
Записывается текст самого ответа, не может быть не заполнено, по умолчанию значение 0, символьное(100).
Таблица `quest`:-Предназначена для хранения вопросов для анкет.
`id` int(11) NOT NULL auto_increment,
Унифицированный номер вопроса (для формирования анкет) . Используется как PK.
`idank` int(4) NOTNULLdefault '0', ИД анкеты
Унифицированный номер анкеты используется как FK к таблице `ankets`, не может быть не заполнено, по умолчанию значение 0, целочисленное.
`text` text NOT NULL, текствопроса. Содержит текст вопроса, не может быть не заполнено, текстовое.
Таблица `users`: -Предназначена для хранения данных пользователей.
`id` int(11) NOT NULL auto_increment,
Унифицированный номер пользователя. Используется как PK.
`name` textNOTNULL,
Содержит Логин пользователя, не может быть не заполнено, текстовое.
`pass` textNOTNULL,
Содержит пароль пользователя, не может быть не заполнено, текстовое.
`type` boolean NOT NULL default '0',
Логическое поле для определения типа пользователя (обычный или администратор) , не может быть не заполнен, значение по умолчанию false.
Приложение состоит из следующих 8 файлов:
1. ankets_manager.php
Форма управления администратора, администрирование анкет, создание сохранение, правка. Под каждое действие рисуется отдельная форма. Для редактирования одна, для панели администратора другая.
2. answer.php
Работа с ответами и с базой. Реализует функцию администратора для проверки ответов конкретных пользователей на конкретную анкету. Так же реализует счетчик, для подсчета количества ответов на анкету.
3. form.php
Прорисовка форм. Производит sql выборки из таблицы ank по её ID номеру и многое другое.
4. function.php
Реализованы функции по работе с сессиями, подключение к базе. Удаление пользователя, добавление, и остальные функции.
5. index.php
Начальная страница, создает начальную форму авторизации, создает сессию, рисует форму.
6. register.php
Реализация регистрации. Создает форма регистрации пользователя, используются функции для её обработки.
7. result_view.php
Форматирование и вывод результатов.
8. users_manager.php
Редактирование добавление записями пользователей.
Примерная работа приложения отражена на рис. 4.1, который приведен ниже.
Рис. 4.1 Структура работы приложения
Формы в приложении:
1. Форма для регистрации будет отражена на рис. 5.1.
Рис. 5.1 Форма регистрации
2. Форма для авторизации будет отражена на рис. 5.2.
Рис. 5.2 Форма регистрации
3. Форма редактирования личных данных пользователя отражена на рис. 5.3.
Рис 5.3 Форма редактирования личных данных пользователя
4. Форма для добавления изменения и удаления анкет отражена на рис. 5.4
Рис 5.4 Форма для добавления изменения и удаления анкет
Интерфейс создается динамически в зависимости от того, какую форму выбрал пользователь. Для построения интерфейса использовались элементы управления и теги HTML.
5. Форма редактирования анкеты
Рис. 5.5 Форма редактирования анкеты
6. Форма отчетности
Рис. 5.6 Форма отчетности
Язык программирования - php. Хранилище данных - база MYSQL. Программа используется для анкетирования пользователей, управления анкетами, создания своих анкет.
В программе реализована авторизация. Клиент может быть пользователем и может быть администратором. В зависимости от того, кем он авторизовался, ему представляется соответствующая форма с различными возможностями.
Возможности пользователя:
· изменения личных данных
· прохождения анкетирования.
Возможности администратора:
· Добавление изменение или удаления анкет
· редактирование структуры самих анкет
· редактирование пользователей
Данные записываются и извлекаются из базы с помощью SQL – запросов.
Для того чтобы знать кто на данный момент находится на странице пользователь или администратор, чтобы санкционировать доступ к формам, используется механизм сессий.
Для реализации интерфейса используются стандартные элементы управления и теги HTML.
Основные функции приложения и их описание
· function admin_menu() Реализация панели администратора
· function admin_sess_beg() Работает для реализации функций администратора, записывает в массив сессий что пользователь является администратором
· functionapply_change($name, $pass) Исполняет изменение пароля и имени (для редактирования паролей). Принимает название пользователя и его пароль.
· function check_sess() Проверка текущей записи в массиве сессий
· functioncheck_user($name,$pass) Проверка на наличие данного пользователя в базе. Принимает название пользователя и его пароль.
· function html_footer() Дополняет страницу информацией снизу.
· function html_head() Динамический вывод заголовка для каждой страницы
· function Print_ank() Создает HTML кодсамойанкеты
· function show_my_body() создает ссылки для панели администратора
· functionshow_quest($quest,$i) Формирует вывод вопросов на конкретную анкету. Принимает текст вопроса и его ID номер.
· functionshow_text_quest($quest) Записывает в массив текущий вопрос. Принимает текст вопроса.
· function showuser($name) Выборка на пользователя по его имени.
· Принимает имя пользователя.
· function user_sess_beg() Записывает в массив сессий значение того, что вошел пользователь.
· function EditAnk($ankID) Реализует возможность редактирования анкет. Принимает ID номер анкеты.
· function ListAnk() Выборка на список анкет.
· function NewAnk() Реализует функцию создания анкет.
Для регистрации требуется перейти по ссылке.