[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Web - программирование / PHP /

Пишем движок для сайта на PHP (v.2.0)

Автор: Дятлов Е.И.
Научный редактор: Чеботарёв А.В.
Источник:
www.JeyDee.iatp.org.ua

Предисловие

В данной статье я хочу рассказать о том, как можно эффективно использовать средства PHP для создания сайтов. Речь пойдёт об организации хранения данных, методах её максимально выгодного использования, а также о техническом исполнении сайта. Ведь от того насколько просто написан код сайта будет зависеть его скорость загрузки, от того как написан код (в специальном визуальном редакторе или в простом блокноте) может зависеть не только размер кода сайта, но и то, будет ли он вообще отображаться так как задумано в разных браузерах. Данная статья будет полезна тем, кто только начинает изучать PHP и уже имеет небольшой опыт работы с PHP и HTML.

 Движок (ядро)

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

 Организация ядра

Каждый движок содержит простенькую базу данных (в нашем случае для простоты используется обычный текстовый файл) со ссылками на различные документы. ТЗ ядра – получая различные переменные, организовать генерацию страниц сайта. 

Исполнение

Рассмотрим конкретный пример: у нас есть движок сайта, который должен генерировать страницы, в которых находиться содержимое разделов. Пусть это будут разделы: news, guestbook, photos. И ко всему прочему у нас иметься оформление и заголовок сайта:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<HEAD>
<TITLE> Welcome to JeyDee Home Page ;-)</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; Charset=Windows-1251">
<META Name="autor" Content="(c) JeyDee, JeyDee@fm.com.ua, ICQ:7422050">
<META Name="description" Content="
Домашняя страничка Jey'я!">
<META NAME="Publisher-URL" CONTENT="JeyDee Home Page www.JeyDee.iatp.org.ua">
<META NAME="Publisher-Email" CONTENT="JeyDee@fm.com.ua">
<META NAME="Keywords" CONTENT="
Мой сайт";
</HEAD>
<body bgcolor="#D6DFEF">
 <TABLE border=0 align=center width="90%" valign=top>
 <TR>
<TD width="150" height="100%">
 <TABLE border=0 width="100%" height="100%" style="border: 1px solid #949EAD">
 <TR>
 <TD  align="center" valign="top">
 <table width=100%>
<TR>
<TD bgcolor="#C2CBDB" align=center>
<I><B><font size=4 color="#000000">
Разделы</font></B></I>
</TD>
</TR>
</table>
<A href='index.php?go=author'>LS[Jey]</A><BR><BR>
<A href='index.php?go=news'>
Новости</A><BR>
<A href='index.php?go=guestbook'>
Гостевая</A><BR>
<A href='index.php?go=photos'>
Фотографии</A><BR>
  </TD>
 </TR>
 </TABLE>
</TD>
<TD width="100%" height="100%" valign="top">
 <TABLE border=0 width="100%" style="border: 1px solid #949EAD">
 
<TR>
  <TD valign="top">
 

Этот код мы должны выводить каждый раз при обращении к любой страничке сайта.

Далее мы в таблице отображаем содержимое отдельных разделов, указанных в переменной $go.

 Для того чтобы нам было несколько легче, и не сбиваться с толку из-за лишнего текста поместим заголовок сайта в отдельный файлик «zagolovok.dat». Тогда в движке мы просто напишем:

 Include (“zagolovok.dat”);

 и весь заголовок уже будет отображен.

 Казалось бы, что проще всего сделать выбор разделов сайта при помощи условий типа:

 If ($go==photos) {

};
 

Но данный способ не будет оптимальным. Представьте сколько вам придется написать, чтобы сделать разделов 10, а потом в каждом разделе добавить несколько страниц! После недолгих размышлений я пришел к выводу что проще запоминать все значения $go и их относительные ссылки на разделы в одном файле. Назовём его «links.dat», и запишем туда следующее:

 -пустая строка-
news\news.html
news
news\news.html
photos
photosphotos.html
guestbook
guestbookguestbook.php
author
authorjey.html

 Как можно догадаться первая строка содержит значение переменной, а следующая за ней – ссылку на раздел, который необходимо отобразить. У некоторых может возникнуть вопрос: «Почему первая строка пустая, а ссылка на новости повторяется?». Всё очень просто. Дело в том, что index.php могут вызвать с пустой переменной $go. За частую так и происходить при первом отображении скрипта.

 Итак, мы отобразили заголовок и у нас есть значение $go. Как же нам отобразить раздел? Нам просто нужно просканировать файл на соответствующую ссылку. Это и выполняет следующая часть скрипта:

 //символ перевода строки
$chr=chr(13).chr(10);
//счетчик
$count=-1;
//путь к файлу ссылок
$links=file("links.dat");
while ($count<count($links))
{
$count++;
$str=$links[$count];
if ($go.$chr==$str)
{
$count++;
$str=$links[$count];
$tok = strtok($str,"
");
 //Получили ссылку на раздел и отобразили:
include($tok);
break;
}
}
 

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

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

 Замечания

Будьте внимательны и осторожны, так как при использовании движка могут работать некорректно относительные пути к файлам (то есть если картинки гостевой лежат в «guestbook/img», то отображать их скрипт гостевой должен не из своей папки «img», а из корня движка, то есть из «guestbook/img»).

 Вывод

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




Комментарии

Kotoff
28-09-2011   
Тот написал движок с нуля http://usd.z-win.ru/

Afraid
05-09-2011   
Говно!

валера
03-09-2011   
http : // depositfiles . com/files/ffp5raud2
Хороший движок и русик и Модули к нему в архиве

Fiamma
05-07-2011   
<a href=http://takein.ru>Takein.ru</a>
Я бы советовал посетить этот сайтик. А что касается статьи то она для ужасных чайников.

:P 231
08-01-2011   
Пришел на сайт чтобы научится хорошо писать движки. У меня есть хорошие знания PHP и т.д. но то что здесь написано очень плохо и я сам умею лучше

Александр
08-01-2011   
http://depositfiles.com/files/opak361f7

Александр
08-01-2011   
Я считаю что все таки свой движок всегда лучше. В принципе это не так сложно. И ру нет нам в помощь. Месяц назад я начал изучение движков, до этого всегда пользовался чужими, естественно бесплатными. А теперь вот хочу вам предложить свой.
Простой движок на PHP <a href="http://depositfiles.com/files/opak361f7">СКАЧАТЬ</a> Шаблон сайта PHP <a href="http://depositfiles.com/files/opak361f7">СКАЧАТЬ</a> DIVная верстка страниц <a href="http://depositfiles.com/files/opak361f7">СКАЧАТЬ</a>

Rival
23-12-2010   
А не проще использовать конструкцию switch , зачем придумывать велосипед с квадратными колёсами ?

switch ($go) {

case news:
include(news.html");
break;

case guestbook:
include(guestbook.html");
break;

default :
include(news.html");
break;
}

Макс
25-11-2010   
Это всего лишь пример. И никто не говорил, что это готовый движок. Тот кто хотя бы немного понимает в языке PHP, сразу бы догадался, что тут есть над чем поработать, а вам подавай все готовое.

Ruzarh
30-07-2010   
Не знаю, но на ядро это слабо походит! Это походит на просто даже незнаю фигню какуюто! на irbis-team.ru там ядро!

african
14-07-2010   
Если я правильно понял написание движка не такое уж и сложное дело.Нужны мозги и знание php.Плюс к этому железная логика,и чем больше железа в этой самой логике ,тем меньше по написанию займёт сам код?Или я заблуждаюсь.Буду очень признателен если разъясните.

Володя
28-01-2010   
А у меня все работает, наверное вы что то сделали не так

sveta
25-01-2010   
Закинула движок на сервер, а он ничего не генерирует... Что-то где то тут не так...

goplit
06-09-2009   
Очень интересная статья

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Web - программирование / PHP /

GTK+: перспективы развития
02-03-2010   

Библиотека GTK+ прошла долгий путь развития и сейчас очень популярна. GNOME, одна из ведущих оконных сред, использует GTK+ почти исключительно, GIMP построен на GTK+, множество коммерческих разработчиков ПО, таких как Abobe, NVidia и VMware, решили использовать эту библиотеку в качестве графической основы для своих продуктов... подробнее

Кол. просмотров: общее - 4011 сегодня - 4

Новостной портал
13-11-2009   

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

Кол. просмотров: общее - 3828 сегодня - 4

Параллельное выполнение скриптов может нарушить целостность информации в файлах
13-11-2009   

Здесь рассматривается вопрос, что бывает, если запустить некий скрипт почти одновременно (что происходит, например, при большой нагруженности сервера) несколько раз, т.е. запустить несколько копий одного и того же скрипта. И к чему это может привести... подробнее

Кол. просмотров: общее - 3717 сегодня - 3

No spam.php
10-11-2009   

...и снова о спаме. Кто о нем только не писал, и все писали, что это плохо и ай-яй-яй. Я не буду оригинальничать, и тоже скажу – это плохо. Это ай-яй-яй. Как бороться со спамерами со своей стороны... подробнее

Кол. просмотров: общее - 3762 сегодня - 4

Начинаем работу с рисунками в php для Windows
10-11-2009   

Эта статья даст вам общее представление о том, как создавать, обрабатывать и выводить рисунки в PHP4 для Windows... подробнее

Кол. просмотров: общее - 3753 сегодня - 2

Популярные статьи



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects