Ваш первый Сайт С использованием РНР-скриптов

СОЗДАНИЕ СБОРНИКА СТАТЕЙ И ВЫВОД ИХ НА САЙТ

Итак, допустим, вы являетесь администратором сайта, на котором раз­мещаются статьи разных авторов. В таком случае при поступлении новой статьи, если не прибегать к помощи php, вам приходится, помимо размеще­ния на web-cepeepe (или выделенном вам аккаунте) ее самой, еще и обнов­лять страницу со списком этих статей, добавив ссылку на новоразмещенную web-страницу со статьей - иначе ведь попасть на новую статью с сайта будет невозможно. А если статьи поступают часто? Да еще и не только поступают, но и удаляются, или в них меняется название? Тогда ведь для отслеживания правильности содержания приходится прилагать немало усилий. Создадим программу, которая автоматизировала бы этот процесс. В рабочей папке Htdocs вы должны были создать подпапку Statji. А в этой подпапке создайте еще 6 папок с названиями 1, 2, 3, 4, 5, б, как на рис. 6.4.

Файл Правка Вид Избранное Сервис ^правка Qi Назад - - Поиск (gS Папки J

Адрес! I С: Home_serverApach e2htdocsstat ji|

Tjg|f Просмотреть как слайд-и. оу

^ Заказ отпечатков через

Интернет ||Ь| Печать изображении

^ Копировать все объекты на компакт-диск

В каждой из шести папок будет находиться по статье в виде web(html)- документа. Вы спросите, почему я каждую статью размещаю в отдельной папке? Да потому, что к каждой статье могут прилагаться рисунки. Если все «слить» в одну общую папку, то возникнет путаница. А так у нас каждая ста­тья и прилагающиеся к ней рисунки в отдельной папке. В браузер будут вы­водиться ссылки на web-страницы со статьями, находящимися в разных пап­ках. Однако для состаЕления списка статей информации только об именах файлов мало. Ведь в таком списке желательно указать хотя бы название ста­тьи и имя ее автора. Чтобы это сделать, можно, например, указывать эти дан­ные в тегах Meta, включаемые в каждый файл со статьей. Эти теги распола­гают между тегами заголовочной части <Head> и </Head> HTML-доку­ментов. Для данного примера я скачал из Интернета шесть HTML-доку-

Ментов с различными статьями. Первый HTML-документ со статьей я раз­местил в первой папке и назвал его statjal.html. Второй HTML-документ со статьей я разместил во второй папке и назвал его statja2.html и т. д. Вы може­те проделать то же самое. В каждом из HTML-файлов со статьей разместим Meta-TQYK, примерно так: <head>

<Пйе>Статья</ше>

<meta name="nazvanie" content^"Название статьи"> <meta name="avtor" content^"Автор статьи"> </head>

Содержимое данных тегов нужно указать в программе, где мы будем вы­водить названия статей, с помощью функции getmetatags (имя файла со статьей). Функция get meta tags создает массив, элементы которого со­ответствуют названиям мета-тегов (пате), которые были указаны в файле со статьей (если, конечно, такие meta-теги там есть), а значения этих элемен­тов - соответствующим значениям мета-тегов (content). Строки сценария, вы­таскивающие из файла содержимое этих тегов и помещающие их на страни­цу, будут выглядеть так: $statji="statji/$i";

$meta=get_meta_iags("$statji/$fde");

Echo "<А href=$statji/$file target='_blank'>$meta[nazvanie]</a> $meta[avtor]< br> ";

В переменной Sstatji будет находиться путь к одной из шести папок. В переменной $fiie - название файла со статьей в какой-либо из шести папок. Устанавливаем ссылку на этот файл, выводим название статьи, которое будет в переменной $meta[nazvanie] и (уже без ссылки) автора статьи из перемен­ной $meta[avtor]. В реальной программе, в листинге 6.3, мы все эти названия и авторов разместили для удобства в ячейках таблицы.

После таблицы со статьями разместим книгу отзывов о странице и форму для оценки по пятибалльной шкале. Постарайтесь набрать код сами, после того как в нем разберетесь. Разбор кода сразу после листинга 6.3. В РНР - редакторе создайте новый файл и сохраните его в рабочей панке htdocs под названием statji.php.

Листинг 6.3 (файл Statjiphp) <Html> <Head>

<Ш1Е>Подборка Статей</Ш1Е>

<link rel=" stylesheet" type="text/css" href="stil. css"> </head>


Глава 6. Подборка статей на сайте. Оценка страниц посетителями <Body Bgcolor="Cyan">

<centerxtable widthss"80%M border="2" bordercolor="green"xtr> <td align="CENTER" id= Чо1оЗ">Название статьи<М> <td align="CENTER" id= Чо1оЗ">Автор CTaTbH</td></tr> <?php

For($i=l; $i<=100; {

$statji="statji/$i"; if(!file_exists($statji)) break; $dir=opendir($statji);

$raz=array(".htmr, ".htm", ".shtml", ".php");

While(($file=readdir($dir))!==false)

{

If(($file !=".")&&($fi! e !="..")) {

If(in_array(strrchr($file,"."), $raz)) {

$meta=get_meta_tags("Sstatji/$file"); echo "<trxtd id=loloxa href=$statji/$file

Target='_blank'>$meta[nazvanie]</ax/tdxtd id=lolo>$meta[avtor]</td></tr>"; }

}

}

Closedir(Sdir);

}

Echo "</tablex/center><br>"; $ind=basename($_SERVER|,PHP_SELF'], ".php"); include ("soobshenie. php");

Include ("ocenka. php");

?>

</body> </html>

Разберем этот код: <html> <head>

<title>Подборка статей<///Y/e>

<link rel="stylesheet" type="text/ess" href="stilcss"> - указываем лист стилей, который будем использовать. Файл листа стилей stil.css мы создали раньше. Что это такое и для чего он нужен, было рассказано в гл. 3;

</head>

<body bgcolor="cyan"> - устанавливаем цвет фона страницы;

<center><table width="80%" border="2" bordercolor="green"><tr> - создаем двухколонную таблицу, открываем первую строку, которая будет заголовоч­ной;

<td align="center" id="lolo3">Название cmambu</td> - в центре первой ячейки первой строки выводим текст «Название статьи». Идентификатор 1о1оЗ задает тип и цвет шрифта для вводимого в ячейку текста. Этот иденти­фикатор и его параметры должны быть указаны в файле стилей stil.css. Если такого идентификатора там нет, то создайте его (как это сделать, см. в гл. 3) или здесь вместо 1о1оЗ поставьте другой, который там есть; <td aligns"center" id="lolo3">Автор cmambu</td></tr> - аналогично во второй ячейке верхней строки выводим текст «Автор статьи»;

< ?php - начало РНР-кода;

For($i=l; $i<=100; $i++) - начало цикла, счетчиком которого является пере­менная $i. Данный счетчик пробегает папки со статьями. Мы не зря дали имена шестерым папкам в виде последовательности чисел (1, 2, 3...). Их так легче считать. Если общее число статей у вас не будет превышать 100, то можно оставить $i<=J00. У нас пока шесть статей, но начиная с 5/=7 цикл в холостую работать не будет, ибо мы его прервем;

1{ - открывается скобка начала цикла. Для удобства скобки попарно нуме­руются;

$statji="statji/$i"; - присваиваем переменной Sstatji (назовите как угодно) путь к папке со статьей (например, при $i=l переменной Sstatji будет присво­ен путь к первой папке, т. е. $statji=statji/l)',

Ij(!file exists (Sstatji)) break; - проверяется условие, существует или нет такая папка (такой путь к папке). Если такой папки еще нет, например при $i>6, То цикл for прерывается. Если папка существует, то выполнение цикла продолжится дальше;

$dir=opendir(Sstatji); - открываем папку со статьей. Например, при Si=1 от - кроится первая папка, при $i=2 будет открыта уже вторая папка со второй статьей. Открытой папке присваивается идентификатор $dir

$raz=array(".html", ".htm", ".shtml", ".php"); - создаем массив Sraz с расшире­ниями web-файлов со статьями. Зачем это нужно, увидите через пару строк кода. Статьи могут содержаться не только в HTML-файлах, но и в файлах с расширением htm, shtml, php. Я думаю, этого достаточно;

While(($fde=readdir($dir))!==false) - начинается цикл, суть которого была рассмотрена в разд. 6.1-6.2. При каждом выполнении этого цикла перемен­ной Sfile присваивается какой-нибудь файл или каталог, содержащийся в от­крытой на данный момент папке (при $i=l будет открытая первая папка); 2{

If(($file !=".")&&($fde Г-'..")) - как отмечалось выше, среди выданных функ­цией readdir имен будут и ссылки на текущий и родительский каталоги. Если переменная $fde не содержит текущий или родительский каталог, то выпол­нится блок команд за открывающейся фигурной скобкой под номером 3;

If (in array (strchr ($fde, "."), $raz)) - снова проверка условия. Дело в том, что в папке, где содержится файл со статьей, могут также содержаться и другие файлы и каталоги, на которые могут указывать ссылки из данной статьи (кар­тинки, рисунки и т. п.). Мы должны вывести в браузер ссылки только на фай­лы со статьей, остальные файлы отсечь. Функция strchr, как отмечалось в гл. 4, возвращает часть строки, начиная с символа «.» и до конца строки. Строка находится в переменной $fde. Это название файла с расширением в открытой на данный момент папке. Данная функция возвратит только то, что следует от точки в названии файла, т. е. его расширение, включая точку вначале. Функция in_array, напомню,,ищет значение, полученное при помо­щи функции strchr, в массиве $raz и возвращает true, если это значение най­дено. Иными словами, если расширение файла, содержащегося в переменной $fde, совпадет хотя бы с одним элементом массива $raz (".html", ".htm", ".shtml", ".php"), то общее выражение в круглых скобках после оператора if Будет истинно и выполнится блок команд за открывающейся фигурной скоб­кой под номером 4;

4{ - этот блок команд внизу выполнится, если выбранный файл имеет расши­рение либо html, либо him, либо shtml, либо php, т. е. файл со статьей; $meta=get_meta_tags("$statji/$fde"); - вытаскиваем из файла содержимое те­гов <meta>. Эти теги должны быть в каждом файле со статьей; Echo "<tr><td id=lolo><a href=$statji/$file target='_blank'>$meta[nazvanie] </a></td><td id-lolo>$meta[avtor]</td></tr> "; - при помощи оператора echo выводим в браузер содержимое тегов <meta>. Сначала открываем новую строку таблицы. В первую ячейку новой строки выводится ссылка на файл со статьей и содержимое тега <meta> с именем name=nazvanie. В нем должно содержаться название статьи. Далее действие ссылки заканчивается (закры­вающийся тег </а>). Во вторую ячейку новой строки выводится содержимое тега <meta> с именем name=avtor, т. е. указывается автор данной статьи;

4} - заканчивается блок команд в фигурных скобках под номером 4; 3} - заканчивается блок команд в фигурных скобках под номером 3;

2} - заканчивается блок команд в фигурных скобках под номером 2, т. е. как только заканчиваются файлы в открытой папке, цикл while завершается;

Closedir($dir); - закрываем открытую папку;

1} - завершается самый первый цикл for (см. начало кода) для данного значе­ния переменной $i. После переменная $i увеличится на единицу и цикл снова весь повторится, если, конечно, папка со статьей с таким номером $i сущест­вует;

Echo "</table></center><br>"; - закрываем таблицу. Все, таблицу с назва­ниями статей и их авторов вывели. Далее выводим книгу отзывов и форму для оценки;

$ind=basename($_SERVER['PHP_SELF'], ".php"); - элемент суперглобального массива;

S SERVERf'PHP SELF'] возвращает полный путь к текущей странице, где находится данный код (statji.php), а функция basename урезает его до назва­ния страницы без расширения (statji). Все эти функции были рассмотрены в гл. 4. Переменной $ind присваиваем название данной страницы с кодом [statji). Она будет использоваться в кодах для книги отзывов soobshenie.php И для формы оценки ocenka.php. Эти коды мы напишем позже и сделаем их универсальными, т. е. вы можете вставлять их на любые страницы сайта (на разных страницах и переменная $ind будет различной); Include ("soobshenie.php ");

Include ("ocenka.php"); - вставляем коды страниц, которые напишем чуть позже. Пока их еще нет.

Последние 2 строчки лучше пока временно удалить и обратно вставить их после написания всех программ, иначе браузер будет выдавать ошибку!

Ваш первый Сайт С использованием РНР-скриптов

Создание сайта

Итак, при помощи данной книги вы создали сайт. Конечно, сайт в таком виде не очень привлекателен, так как он создавался исключительно для при­мера. Но используя полученные знания в этой книге, …

ИСПОЛЬЗОВАНИЕ СЕРВИСА ROBOXCHANGE ДЛЯ ОПЛАТЫ

Если у вас нет никакой возможности получить персональный аттестат, или просто лень это делать, то для оплаты товаров со своего сайта вы можете воспользоваться сервисом Roboxchange. Этот сервис дает возможность …

ИСПОЛЬЗОВАНИЕ СЕРВИСА WEB MERCHANT INTERFACE ДЛЯ ОПЛАТЫ

Сервис Web Merchant Interface позволяет получать денежные средства на свои электронные кошельки от клиентов при оплате ими электронных товаров на вашем сайте. Электронные кошельки WebMoney и Yandex мы с вами …

Как с нами связаться:

Украина:
г.Александрия
тел./факс +38 05235  77193 Бухгалтерия

+38 050 457 13 30 — Рашид - продажи новинок
e-mail: msd@msd.com.ua
Схема проезда к производственному офису:
Схема проезда к МСД

Партнеры МСД

Контакты для заказов оборудования:

Внимание! На этом сайте большинство материалов - техническая литература в помощь предпринимателю. Так же большинство производственного оборудования сегодня не актуально. Уточнить можно по почте: Эл. почта: msd@msd.com.ua

+38 050 512 1194 Александр
- телефон для консультаций и заказов спец.оборудования, дробилок, уловителей, дражираторов, гереторных насосов и инженерных решений.