AGAVA partners programs http://agava.ru/partners/            

Название функции

             
Веб-курсы


Что это?

Оглавление

Основы
Основы основ

Практика
Гостевая книга
Простой сайт
Структура сайта (MVC)
Ядро (Light)
Ядро
Гостевая на SQL
Статические страницы
Модуль новостей
Система регистрации

Теория
Дебаггинг
Регулярные выражения
Введение в ООП
Паттерны проектирования

Репозитарий
BB-code
Почтовый класс
Пагинатор
Всякие полезности

Download
Полезные утилиты

Разное
Видеокурсы
Последние изменения
Вопросы и замечания сюда



Реклама

Диеты для похудения
Фреймворк Kohana. Обучение. Мануал на русском.







  ПРЕДИСЛОВИЕ

Хочу предупредить сразу, этот раздел довольно сложен, хотя я и постарался расписать все по полочкам.

Многое может показаться лишним и ненужным. Если в процессе изучения возникнет острое желание все бросить с криком - "да на кой это все, и так нормально работает!!!" - именно так и сделайте.
Значит Вы просто еще не созрели для серьёзной, профессиональной работы. Не нужно себя мучать.

Оно потом, со временем, к Вам вернется, желание сделать все как положено.

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

Шаг 1

Подготовительные работы.

С чего обычно начинается построение сайта? Вы думаете, что нужно сделать первый файл, допустим index.php, и пошло-поехало.
Ан нет.

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

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

Нужно сразу заметить, что ядром в нашем понимании, является не какие то догмы и рамки, которые обычно ставятся фреймворками и всевозможными CMS. У нас это просто структура, которая позволяет упорядочить скрипты и иные принадлежности сайта. Оставляя полную свободу выбора как и что реализовывать. И хотя "framework" и переводится как "основа" или "рабочая рама", в классическом понимании это больше язык программирования со своим синтаксисом и законами. Наша структура более точно подходит под определение "рама".

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

Начнем с того, что обычно оставляется "на потом", так как это кажется не очень важным. И зачастую это "потом" так и не наступает.

А именно с конфигурации и сопутствующих фишек.

Начнем со страниц ошибок. В корневой директории нужно сделать, как минимум, три файла.
401.html
403.html
404.html

Оформлять их не нужно, это дело верстальщиков. Нам будет достаточно этого:
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>404</title> 
</head> 
<body> 
<h2 style="color:#FF0000">404</h2> 
Запрашиваемая страница отсутствует на нашем сайте. 
</body> 
</html>

Еще там же в корне нужно сделать файл .htaccess с таким содержанием:
AddDefaultCharset UTF-8
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
php_flag register_globals Off
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
Options -Indexes

# php_value error_reporting 2047 
# php_value error_log "Z:/home/test.den/www/log/error.log" 
# php_flag log_errors on 
# php_flag display_errors off 

RewriteEngine    on

RewriteCond %{REQUEST_URI} !^/favicon.ico

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
Что тут.

1. Кодировка. Все сайты мы будем делать в кодировке UTF-8.

2, 3. Убиваем магические кавычки.

4. Отключаем глобальные переменные

5-8. Обработка ошибок запросов. Вот тут и пригодятся странички. Обратите внимание на строку

Options -Indexes
Эта строка запретит вывод списка файлов и директорий, если в папке не окажется индекса. А директива ErrorDocument перенаправляет запросы на подготовленные страницы в случае ошибки сервера. Допустим набран адрес несуществующей страницы. В таком случае откроется 404.html

8-12. Обработка ошибок скрипта, выводимых PHP интерпретатором. Тут немного подробнее. Строки эти закомментированы, так как на момент разработки свои ошибки конечно лучше видеть на экране. А когда проект будет сдан в эксплуатацию, их лучше логировать (записывать в специальный файл), потому что если злой хацкер увидит ошибку, то может извлечь из неё полезную информацию. Но ошибки нужно знать, чтобы вовремя их исправить.
Поэтому эти строки наготове.

Особо обратите внимание на строку
# php_value error_log "Z:/home/test.den/www/log/error.log"
Это путь до файла, куда мы и будем их складывать. Для этого сначала в корне нужно организовать директорию log и выставить на нё права 777. Путь должен быть абсолютный, от диска.

Узнать его просто, нужно выполнить этот скрипт и скопировать то, что получится.
1
2
3
4
5
<?php

    
echo $_SERVER['DOCUMENT_ROOT'].'/log/error.log';

В эту же директорию (log) нужно положить еще один .htaccess с такой строчкой:
Deny from all
чтобы все наши ошибки не стали достоянием жулика оптом. Эта директива означает "ни для кого".

Ну а когда придет время сдачи проекта благодарному заказчику мы раскомментим эти строки и будем счастливы.

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

Тут есть один маленький подвох. Дело в том, что если php установлен не как модуль аппача, а как cgi, то этот вызовет 500-ю ошибку. Потому что при такой компановке флаги устанавливать нельзя. Эти настройки нужно сделать в php.ini


14-19. Это mod_rewrite. То есть модуль перенаправления. Нужен он для того, что бы если у заказчика возникнет желание иметь ссылки вида ЧПУ, мы могли включить эту опцию одним движением. Но об этом позже. Особого внимания заслуживает строчка
RewriteCond %{REQUEST_URI} !^/favicon.ico
Дело в том, что браузер Опера заботливо запрашивает фавиконку, есть она или нет. А её нет. И получается два запроса на индексный файл. Чего нам совсем не надо.

А пока что на данный момент должны иметь:
1. Всю структуру с прошлого занятия.
К ней добавили:
2
. Три страницы с ошибками.
3. Файл .htacces в корневой директории.
4. Каталог log с правами 777
5. Файл .htaccess внутри каталога log.

Вот таким образом:

Это точка отправления.


Возникшие вопросы можно задать здесь.

Рейтинг@Mail.ru Рейтинг@Mail.ru Яндекс цитирования
irbis-team © 2009