Slashdot? На PHP - халява!

Никита "Nikitos" Кислицин

Xakep, номер #051, стр. 051-086-2


index.php - главная страница сайта, скрипт для вывода статей, поиска по ним и т.д.

admin.php - административный скрипт.

config.php - скрипт конфигурации.

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

connect(dbname) - возвращает указатель на активное соединение с БД dbname.

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

showposts([category], [start], [howmuch]) - принимает три необязательных параметра. Первый указывает на раздел сайта, откуда выбираются статьи. Второй и третий параметры позволяют показывать определенное количество статей (сколько именно – указывает параметр howmuch), начиная со статьи, указанной параметром start. Для всех параметров предусмотрены значения по умолчанию.

showpost(pid) - показывает статью, производя выборку из БД по ее уникальному идентификатору pid.

showcomments(pid) - выводит комментарии пользователей к статье pid.

addcommentform(pid) - выводит форму для добавления комментария.

addcomment(aname, aemail, comment, pid) - добавляет комментарий к статье pid. Все параметры являются обязательными.

navigation - выводит навигационную строчку.

auth - выводит форму для аутентификации автора.

athinfo(login) - возвращает ассоциативный массив с информацией об авторе.

isadmin(login,passwd) - проверяет, есть ли в БД автор с такой комбинацией login/pass.

iseditor(aid, cid) - проверяет, указан ли автор с идентификатором aid в качестве редактора раздела cid.

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

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

Назад на стр. 051-086-1  Содержание  Вперед на стр. 051-086-3