- •Понятие базы данных и системы баз данных
- •Компоненты системы баз данных
- •Языковые средства сбд
- •Программные средства сбд
- •Технические средства сбд
- •Операции с бд
- •Администрация базы данных
- •Взаимодействие компонентов системы баз данных
- •Классификация баз данных
- •Классификация субд
- •Классификация систем баз данных
- •Модели данных
- •Основные понятия реляционной модели данных
- •Целостность реляционных данных
- •Операции над отношениями
- •Нормализация баз данных
- •Первая нормальная форма (1нф)
- •Вторая нормальная форма (2нф)
- •Третья нормальная форма (3нф)
- •Нормальная форма Бойса-Кодда (бкнф)
- •Нормальные формы высших порядков (4нф и 5нф)
- •Уровни моделирования предметной области
- •Концептуальное проектирование баз данных
- •Даталогическое проектирование
- •Физические модели
- •Case-средства разработки баз данных
- •Пример нотации er-модели – метод idef1x
- •Автоматическая генерация базы данных
- •Требования к распределенным базам данных
- •Базовые архитектуры распределенной обработки
- •Транзакции
- •Сериализация транзакций
- •Представления, хранимые процедуры, триггеры
- •Тиражирование данных
- •Резервное копирование и восстановление
- •Средства защиты данных
- •Sql. Что можно делать с помощью sql. Группы команд sql.
- •Типы данных sql.
- •Типы привилегий. Объектная и системная привилегии.
- •Команды языка определения данных. Команды языка управления данными. Команды языка управления транзакциями. Команды языка манипулирования данными.
- •Sql. Команда Create Table. Команда create user. Команда create view.
- •Sql. Команда create index.Команда create sequence. Команда create synonym.
- •Sql. Команда alter table.
- •Sql. Команда insert.
- •Sql. Команда delete.
- •Sql. Команда update.
- •Sql. Команда select.
- •Sql. Команда grant.
- •Sql. Команда revoke.
- •Sql. Команда drop.
- •Sql. Команды show , describe.
- •Sql. Строки и выражения.
- •Sql. Соединение таблиц.
- •Sql. Подзапросы.
- •Sql.Работа с null-значениями. Условие check. Ограничение unique.
- •Sql.Первичный ключ primary key.
- •Sql.Ограничения foreign key.
- •Возможности php. Преимущества php.
- •Преимущества php
- •Что нового в php5 ? Новая объектная модель Zend 2.0.Улучшенная производительность. Новые директивы. Новые механизмы работы с потоками. Новы функции php5. Новые расширения.
- •Движок» php. Программа на php . Php в html-документах. Комментарии в php-скриптах.
- •Переменные в php. Типы данных в php.
- •Константы в php. Выражения в php.
- •Конструкции языка php. Условные операторы. Циклы в php.
- •Конструкции языка php. Конструкции выбора. Конструкции возврата значений. Конструкции включений в php.
- •Пользовательские функции в php. Особенности пользовательских функций php. Создание пользовательских функций. Передача аргументов пользовательским функциям.
- •Функции и порядок работы с субд в php.
- •Основы ооп. Инкапсуляция. Полиморфизм. Наследование. Классы и объекты в php. Доступ к классам и объектам в php. Инициализация объектов. Наследование и полиморфизм классов в php.
- •70.Система xampp-1.8.1.Порядок установки в среде операционных систем Windows и Linux . Веб-сервер Apache.
- •71.Хостинг. Домен. Доменные зоны. Порядок проведения процесса размещения сайта. Перенос или трансфер доменов. Jabber. Сервис Whois. Обеспечение взаимодействия с субд.
- •Доменные зоны
- •72.Работа с формами. Обработка ввода пользователя. Передача файла на сервер. Отправка почты с вложением из php.
- •73.Язык Perl.Основные понятия. Cтруктуры данных. Скалярные величины. Простые массивы. Ассоциативные массивы. Простые операторы. Составные операторы.
- •75.Язык Perl. Операторы сравнения. Операторы эквивалентности. Побитовое и, побитовое или и Исключающее или. Логическое и и логическое или. Оператор диапазона. Условный оператор.
- •76.Язык Perl. Операторы присваивания. Оператор ``запятая''. Логическое не. Логическое и, или и Исключающее или. Оператор чтения из файла. Оператор замены строки. Оператор замены множества символов.
- •77.Язык Perl. Ссылки. Символьные ссылки.
- •78.Язык Perl. Регулярные выражения. Зарезервированные переменные.
- •79.Язык Perl. Встроенные функции.
- •80.Язык Perl. Подпрограммы и модули. Пакеты. Таблицы символов. Конструкторы и деструкторы пакетов. Классы.
- •81.Язык Perl. Объектная ориентация. Объекты. Классы. Методы. Вызов метода. Деструкторы.
70.Система xampp-1.8.1.Порядок установки в среде операционных систем Windows и Linux . Веб-сервер Apache.
Веб-сервер Apache
Apache используется для организации большинства веб-серверов в мире и является самым массовым продуктом своего класса.
Этот сервер обладает обширными возможностями конфигурации, является очень производительным и поддерживает все известные протоколы для работы веб-серверов.
Специально для Apache созданы версии таких популярных языков программирования как Perl и PHP, а также этот сервер легко интегрируется с широко применяемыми СУБД (например, MySQL).
Главный сайт проекта находится по адресу httpd.apache.org, а основная документация доступна на странице httpd.apache.org/docs/.
Пользователям предоставляется возможность самостоятельной конфигурации Apache путем использования соответствующих директив в файле .htaccess. Таким образом можно решить большинство задач по конфигурации веб-серверов.
Индексный файл
Индексный файл или файл-индекс — это тот файл, который открывается по умолчанию при обращении пользователя через веб к каталогу, а не к конкретному файлу. Например, ваш посетитель запросит адрес http://ваш_домен/price/, где price — название каталога. Индексный файл это тот файл, который будет показан пользователю при обращении к каталогу без указании имени конкретного файла в нем.
По умолчанию индексными файлами являются следующие: index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm или default.html. Если вы хотите чтобы первым открывался какой-то иной файл, нужно переопределить текущие значения. Если вы хотите переопределить индексный файл и сделать так, чтобы первым открывался не index.htm, а, например, файл myindex.php, то сделать это можно поместив в файл .htaccess в соответствующем каталоге следующую инструкцию:
DirectoryIndex myindex.php
Получив .htaccess с таким содержимым, веб-сервер Apache откроет по умолчанию именно файл myindex.php.
Назначение и использование файла .htaccess
Файл .htaccess (обратите внимание, что первый символ в названии файла — точка) применяется для управления веб-сервером Apache со стороны конечного пользователя хостинга. Вы помещаете в этот файл директивы, которые веб-сервер воспринимает и обрабатывает, выполняя действия в соответствии с настройками, которые были сделаны пользователем.
Файл .htaccess может быть размещен в корневом каталоге веб-сервера (прямо в каталоге www). В этом случае директивы из такого .htaccess действуют по всему веб-серверу. Также .htaccess может находиться и в конкретном подкаталоге сервера. Тогда директивы, которые указаны в этом файле, «перекрывают» действие директив из «основного» файла, который размещен в каталоге www или в любом каталоге более высокого уровня. То есть, действие директив из .htaccess наследуется сверху вниз, но не наоборот. Изменения, внесенные в файл, вступают в силу немедленно. Это связано с тем, что информация из .htaccess перечитывается при каждом обращении к веб-серверу Apache.
В .htaccess может быть помещено большинство из доступных директив для веб-сервера. Следует заметить, что директивы, в описании которых в поле Context отсутствует упоминание .htaccess недоступны для использования в этом файле конфигурации. На примере директивы AddType видим, что поле Context содержит упоминание о .htaccess, соответственно вы можете ее использовать.
Если использовать нужную директиву не получилось, и вы увидели ошибку после добавления директивы в .htaccess, скорее всего, использование команды запрещено в условиях виртуального хостинга. Напишите в техническую поддержку. Просьба подробно описать проблему и указать цели, которых хотите достичь использованием данной директивы.
Как переопределить кодировку html-документов
Мы хотим «объяснить» веб-серверу что все html-документы, которые размещены на сервере, нужно «отдавать» клиенту в кодировке koi8-r, а не в windows-1251, как это сервер делает по умолчанию. Для этого поместим в .htaccess строку:
AddType "text/html; charset=koi8-r" .html .htm .shtml
Получив такой .htaccess, веб-сервер Apache станет выдавать клиентскому браузеру заголовок, в котором будет указано, что документ имеет кодировку koi8-r.
Если на вашем ресурсе существуют html-документы в разных кодировках, (ISO-8859-1, Windows-1250, Windows-1252, UTF-8), то вам, возможно, будет необходимо отключить принудительную выдачу заголовка с кодировкой windows-1251. Для этого в .htaccess добавляется строка:
AddDefaultCharset Off
При этом соответствующая кодировка должна быть прописана на каждой html-странице в виде тега <http-equiv="Content-type" content="text/html; charset=windows-1251" />
Это примеры простейшего использования возможностей конфигурирования Apache через файл .htaccess.
Как закрыть директорию паролем
Одна из стандартных задач, которая решается путем использования .htaccess, это ограничение доступа к определенному каталогу на сервере. Например, нужно дать доступ к определенному каталогу отдельным посетителям, снабдив их при этом уникальным логином и паролем.
В каталоге, к которому хотим ограничить доступ по паролю, создаем файл .htaccess с такими директивами:
AuthType Basic
AuthName "Some Name"
AuthUserFile /home/uXXXXX/.htpasswd
require valid-user
Путь /home/uXXXXX/.htpasswd обозначает полный путь к файлу паролей на диске нашего сервера. Если, например, вы поместите файл .htpasswd (в нем будут пароли) в домашний каталог, куда вы попадаете зайдя на сервер по FTP, то путь к этому файлу будет иметь вид /home/uXXXXX/.htpasswd, где uXXXXX — наименование вашей виртуальной площадки (например, u12345).
В директиве AuthUserFile указываем абсолютный путь к файлу с логинами/паролями, который мы создадим чуть позже. Если вы создаете файл .htaccess на своем компьютере, а не сразу на сервере при помощи текстового редактора, обратите внимание на то, что .htaccess должен передаваться по FTP строго в текстовом (ASCII) режиме.
Создаем файл паролей. Файл с паролями должен содержать строки вида login:password. Пароль должен быть зашифрован с использованием алгоритма MD5. Один из способов создать такой файл — воспользоваться программой, входящей в поставку Apache — htpasswd (на сервере она находится в каталоге /usr/local/bin/, полный путь — /usr/local/bin/htpasswd).
htpasswd -mbc .htpasswd user1 sNQ7j9oR2w
создаем новый файл .htpasswd, в который добавляем запись для пользователя user1 с паролем, указанным в командной строке. Обязательно заменить sNQ7j9oR2w на любой собственный пароль — здесь этот пароль указан только для примера
htpasswd .htpasswd user2
добавляем в уже существующий файл .htpasswd пользователя user2, а пароль вводим вручную в ответ на соответствующий запрос программы . После окончания заведения всех логинов файл нужно загрузить на сервер.
Запрет и разрешение выдачи листинга
В ряде случаев требуется выводить список файлов в каталоге (листинг каталога) в случае отсутствия в каталоге файла, который показывается по умолчанию. Для этого необходимо добавить в .htaccess следующую строку:
Options +Indexes
Файл .htaccess необходимо создавать именно в том каталоге, в котором планируется разрешить листинг. Данная директива будет действовать также и на все подкаталоги (это достигается включенной по умолчанию в настройках виртуального хоста директивой AllowOverride All).
По умолчанию включена директива Options -Indexes, и в случае отсутствия индексной страницы вы получите HTTP ошибку 403.
Собственные страницы ошибок
Иногда посетители веб-сервера запрашивают страницы, которые по каким-то причинам на сервере не существуют: неправильная ссылка с другой страницы или с другого сайта, владелец сервера случайно удалил документ и так далее. По умолчанию Apache выдает некую довольно аскетичную страницу, на которой находится сообщение вроде «File not found». Вы можете создать альтернативную версию этой страницы, задав обработчик этой ошибки через .htaccess.
Общие сведения о кодах
Коды ошибок бывают положительными и отрицательными или успешными и неуспешными. Есть четыре типа кодов:
2xx — запрос выполнен успешно — сервер успешно отправил клиенту запрашиваемый документ
3xx — запрос успешно перенаправлен — тоже положительный код. Он говорит о том, что запрос клиента был перенаправлен. Используется при работе с кэширующими серверами, а также в алгоритме, когда браузер клиента проверяет актуальность документа на сервере (дату создания, размер и так далее)
4xx — ошибка — документ не был отправлен клиенту, так как произошла критическая ошибка. Например, запрошенный документ не найден на сервере, доступ к документу запрещен и так далее
5xx — ошибка сервера — критическая ошибка на сервере. Например, на сервере не смог нормально отработать скрипт пользователя.
Возможные ошибки при первичном размещении сайта
Вы разместили сайт на хостинге компании .masterhost, загрузили файлы и получили ошибку 403 при попытке открыть сайт через браузер. Эта ошибка возникает в случае, если вы неправильно назвали индексный файл, который должен показываться при обращении к каталогу. Индексный файл может иметь названия index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm или default.html. Также возможно, что в названии индексного файла присутствуют заглавные (большие) буквы. В UNIX-системах регистр букв в названиях файлов имеет значение (!).
Ошибка — показывается список файлов вместо первой страницы.
Вы загрузили файлы на сервер, но вместо первой страницы видите список загруженных на сервер файлов. Вероятная причина ошибки в том, что вы загрузили файлы в каталог с разрешенным листингом и при этом у вас отсутствует индексный файл. Напомним, что размещать файлы нужно в каталоге www, который находится в каталоге с названием вашего домена.
Ошибка 403 «Доступ запрещен» — устраняем причины
Данная ошибка возникает тогда, когда сервер не смог выполнить запрос по причине запрещенного доступа к файлу. Наиболее часто это возникает в трех случаях:
В каталоге нет индексного файла (index.html, например) и при этом запрещен просмотр списка файлов в данном каталоге* или на всем виртуальном сервере.
Можно попробовать создать файл с именем index.html и посмотреть не исчезнет ли ошибка.
Выставлены такие «права» доступа на файл, что веб-сервер Apache не смог прочитать файл на диске сервера. Попробуйте изменить права доступа на 644, например.
Пользователь попытался обратиться к скрипту (в каталоге cgi-bin), на который выставлены неправильные права — нет права на чтение+исполнение (r+x) конкретного скрипта. Измените права на 755.
*По умолчанию просмотр списка файлов в каталоге запрещен. Для того, чтобы разрешить вывод списка файлов необходимо создать файл .htaccess, в котором прописать директиву Options +Indexes в виде отдельной строки.
Обработка ошибки 404 «Файл не найден»
Ошибка 404 (Файл не найден) возникает тогда, когда пользователь запрашивает у веб-сервера документ, которого нет на диске. То есть, когда пользователь запрашивает несуществующий файл. Это наиболее «популярная» из всех ошибок. Вы можете наблюдать возникновение таких ошибок в файле error_log и учитывать это — отслеживать какие документы на сервере «не найдены» и корректировать неправильные ссылки из своих html-документов. Также ссылки на несуществующие документы могут вести с других сайтов.
Для удобства посетителей сайта можно обрабатывать ошибки 404 заменяя стандартные ответы веб-сервера на свои страницы с нужным описанием причины возникновения ошибки и советами что делать в этом случае. Также полезно разместить на такой странице карту вашего сайта или ссылку на поисковую систему.
Как обрабатывать ошибку 404.
Создайте в каталоге www файл .htaccess и поместите в него следующую инструкцию для веб-сервера Apache:
ErrorDocument 404 /not-found.html
Затем создайте файл not-found.html в который поместите описание возникшей ошибки и советы о том, что делать в этом случае посетителю вашего сайта. Теперь пользователь, который наберет в своем браузере адрес несуществующей страницы, будет автоматически перенаправлен сервером на файл not-found.html.
С помощью директивы ErrorDocument можно обрабатывать не только ошибку 404, но и практически все другие ошибки. Например, можно обработать так и ошибку 403.Внимание: особенность браузеров MS Internet Explorer версий 5.xx и 6.xx состоит в том, что если ваш файл ошибок будет иметь размер менее 512 байт, то браузер покажет пользователю не ваш файл, а свое собственное сообщение об ошибке 404. Самым простым решением в данной ситуации является заполнение файла ошибок пробелами так, чтобы его размер превысил 512 байт. Подробнее об этом вы можете прочитать на сайте компании Microsoft.
Ошибка 500 «Internal Server Error»
Ошибка 500 «Internal Server Error» возникает в случае невозможности запуска скрипта, который вы разместили на сервере, в случае ошибок в скрипте, а также в случае, когда размещена неправильная инструкция в файле .htaccess. Этот список причин возникновения ошибки 500 не конечный, есть еще масса причин, по которым может возникнуть ошибка 500. Однако, упомянутые три случая встречаются наиболее часто.
Рассмотрим сначала случай, когда вы поместили некорректную инструкцию в файл .htaccess. Если вы ошиблись в написании названия нужной директивы или параметров к ней, в файле error.log вы найдете примерно такую ошибку:
[Wed Apr 14 17:01:38 2004] [alert] [client 217.16.16.16] /home/uXXXXX/aaa.ru/www/.htaccess:Invalid command 'DrectoryIndex', perhaps mis-spelled or defined bya module not included in the server configuration
Веб-сервер укажет вам, какую конкретно директиву он посчитал ошибочной — ее нужно будет исправить. В данном случае веб-сервер сообщил, что директивы DrectoryIndex он не знает. И действительно — нет директивы DrectoryIndex, есть DirectoryIndex. Имеет место опечатка.
Запрет доступа с некоторых IP-адресов.
Иногда возникает необходимость запретить доступ к сайту или его части с некоторых IP-адресов.
В таком случае необходимо создать в нужной директории файл .htaccess с директивами. Например, чтобы запретить доступ с IP-адреса 172.16.16.16:
Order Allow,Deny
Allow from All
Deny from 172.16.16.16
Теперь при попытке обратиться к сайту с IP-адреса 172.16.16.16 посетитель получит ошибку 403 или вашу страницу для этой ошибки.
Указание части адреса в виде 172.16.16 ограничит доступ из подсети 172.16.16/24.
Запрет доступа к некоторым файлам.
Иногда возникает необходимость запретить доступ к определенным файлам. Например, к конфигурационным файлам, содержащим реквизиты доступа к базам данных, интерфейсам и т.п. Допустим, в файле config.cfg вы храните логин/пароль доступа к базе данных. Создаем в этой директории файл .htaccess с директивами:
<FilesMatch "\.(cfg)$">
Order allow,deny
Deny from all
</FilesMatch>
Теперь, если посетитель наберет в браузере нечто вида http://www.ваш_домен.ru//config.cfg, он получит ошибку 403 или вашу страницу для этой ошибки.
Заголовок last-modified
В ряде случаев требуется, чтобы web-сервер выдавал HTTP-заголовок Last-Modified. К примеру, при регистрации вашего ресурса на Яндексе, возникает ошибка «Неправильные даты». Для статических документов cервер будет выдавать значение last-modified всегда. Это действительно для html-файлов. Для SSI cервер будет выдавать значение last-modified в том случае, если прописана директива «XBitHack full» (просто пропишите эту строку в .htaccess), и для файла, к которому происходит обращение, выставлен атрибут «исполняемый» для группы. В скриптах last-modified выдается иными средствами. Например, если учесть то, что php-скрипт генерирует код динамически, то самым логичным будет в качестве last-modified отдавать текущую дату и время./>
Реализуется это следующим образом:
<? header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); ?>
Внимание: команда header должна выполняться в php-скрипте до того, как скрипт начнет выдавать html-текст в браузер пользователя.
Управление кэшированием.
Для того, чтобы сайт работал максимально эффективно, целесообразно устанавливать время кэширования для различных типов файлов на максимально возможный срок. Для этого существует модуль Apache mod_expires.
Настройка параметров модуля mod_expires производится в файле .htaccess, что позволяет сделать индивидуальные настройки для каждого каталога.
В приведенном ниже примере отключено кэширование для текстовых документов, установлен период обновления для файлов с расширением gif — 3 месяца с момента изменения файла, для файлов с расширением jpeg — 1 день с момента обращения:
ExpiresActive on
ExpiresByType image/jpeg "access plus 1 day"
ExpiresByType image/gif "modification plus 3 months"
ExpiresByType text/html "now"
Примечание: При использовании Parser если вам необходимо полностью исключить заголовки от модуля Apache mod_expires, то для этого необходимо в директории с parser3.cgi создать файл .htaccess и внести в него следующую директиву: ExpiresActive off
Как создать переадресацию.
Если у вас размещены 2 домена (не обязательно на одной площадке) domain1.tld и domain2.tld, и вам необходимо, чтобы при обращении к domain2.tld у пользователей изменялся адрес на «правильный», и сразу происходило перенаправление, тогда добавьте для домена domain2.tld переадресацию на http://domain1.tld/.
Если вам необходимо, чтобы при обращении к вашему домену domain.tld происходило автоматическое перенаправление на www.domain.tld, создайте на виртуальной площадке в директории /home/uXXXX/domain.tld/www файл .htaccess (обратите внимание на то, что название файла начинается с точки) следующего содержания:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain\.tld
RewriteRule ^(.*)$ http://www.domain.tld/$1 [R=permanent,L]
где uXXXX — имя вашей виртуальной площадки, domain.tld — имя вашего домена
Особенность переадресации на синонимах.
Предположим, есть домен domain1.tld и синоним domain2.tld. Если запросить в браузере адрес http://domain2.tld/dir/ со знаком слэша в конце, то будет отображена индексная страница из директории dir основного домена, при этом содержимое адресной строки браузера останется без изменений. Но если запросить http://domain2.tld/dir без слэша в конце, то произойдёт переадресация на http://domain1.tld/dir/, и содержимое адресной строки изменится соответствующим образом.
Такова особенность работы модуля mod_dir, при которой если происходит запрос файла, являющегося директорией, но запрос не оканчивается знаком слэш, то mod_dir осуществляет внешнюю переадресацию на тот же адрес со знаком слэша в конце. В случае синонима при переадресации заменяется и имя домена.
Если такое поведение веб-сервера вас не устраивает, добавьте в файл .htaccess следующие строки:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !^domain2.tld$
RewriteRule ^(.+[^/])$ http://domain2.tld/$1/ [R]
Установленные модули Apache.
Список стандартных и дополнительных модулей для веб-сервера Apache, которые установлены на хостинговых машинах:
mod_env
mod_log_config
mod_mime
mod_status
mod_include
mod_autoindex
mod_dir
mod_cgi
mod_actions
mod_alias
mod_rewrite
mod_access
mod_auth
mod_expires
mod_setenvif
mod_php
