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

ПРИМЕНЕНИЕ СЛОЖНОЙ СХЕМЫ БЛОКИРОВКИ ФАЙЛА. ФУНКЦИИ ДЛЯ РАБОТЫ С КАТАЛОГАМИ

Теперь о другой проблеме. В книге посетителей при записи отзывов по­сетителей в текстовый файл мы применим функцию блокировки этого тек­стового файла, чтобы избежать одновременного использования программы для записи в файл несколькими посетителями, что привело бы к разрушению информации в файле (о значении блокировки файла см. в гл. 4). Однако при­менять блокировку в таком простом виде, которую мы применяли при созда­нии счетчика посещений страницы, не годится. Допустим, два разных посе­тителя заполнили поля формы книги отзывов и одновременно нажали на кнопку типа «Отправить». Данные первого посетителя, который оказался проворнее на микросекунду, отправятся программе для обработки. Эта про­грамма временно заблокирует текстовый файл для записи отзывов. Файл за - блокируется всего на микросекунды, но если в это время придут данные от второго посетителя, то программа не сможет их записать в этот текстовый файл. Данные второго посетителя могут быть утеряны и ему снова придется их вводить, т. е. заполнять форму заново. Здесь нужно будет применить дру­гую схему блокировки, которая будет разъяснена чуть позже в гостевой кни­ге, при разборке листинга 7.3 программы gostev.php.

В этой главе нам еще понадобятся функции для работы с каталогами, т. е. папками. Прежде чем работать с какой-либо папкой, ее нужно сначала открыть. Для этого существует функция opendir(dir), где в качестве аргумента dir содержиться путь к открываемому каталогу. Эта функция возвращает идентификатор, с которым и нужно работать в дальнейшем. Функция readdir($iden) считывает содержимое каталога и возвращает имена всех эле­ментов в каталоге. Здесь $iden - идентификатор открытого каталога. Мы бу­дем использовать функцию readdir для вывода списка файлов и папок, со­держащихся в указанном в ее параметре каталоге. При каждом своем вызове она выдает имя случайно выбранного файла (или вложенной папки) указан­ного каталога, каждый раз - новое, до тех пор, пока не перечислит имена всех файлов и вложенных папок. Среди выданных функцией readdir имен будут и ссылки на текущий и родительский (т. е. включающий в себя текущий) ка­талог, обозначаемые соответственно одной и двумя точками (так уж работает web-cepeep). Поскольку нас будут интересовать только файлы каталога, то данные ссылки из списка файлов следует исключить, добавив проверку состава имени файла:

While ($fde=readdir($iden))

F Х

If(($file!=".") and ($file !="..")) $c[]=$fde; I

В этих строчках кода цикл while будет выполняться, пока не будут пере­браны все элементы каталога, задаваемые идентификатором Siden. Если эле­менты не являются ссылками на текущий и родительский каталог (условие if Истинно), то они поочередно будут записываться в массив $с['].

Вообще вместо этих двух функций (Opendir и readdir) можно использо­вать одну seandir(dir, sort), которая возвращает массив имен и каталогов, расположенных в каталоге dir. Обратите внимание, что в качестве первого аргумента используется именно каталог или путь к нему, но не идентифика­тор! Параметр sort указывает на порядок сортировки массива. Если этот па­раметр не указан, то сортировка выполняется в алфавитном порядке по воз­растанию. Если же параметру sort присвоить значение 1, то сортировка вы­полнится по убыванию.

В нашей рабочей папке сервера создайте временно подпапку, например Risynki. Скопируйте в эту подпапку несколько любых рисунков или фотогра­фий с вашего компьютера. В РНР-редакторе наберите код:

Листинг 6.2 <?php

$iden=opendir("risynki"); while ($file=readdir($iden))


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

If (($file!=".") and ($file!=".."))

{

Echo "<a href=risynki/$file target='_blank'>$file</axbr>"; }

} ?>

Строчки приведенного выше кода должны быть понятны. В окно браузе­ра будут выведены ссылки на ваши рисунки в папке risynki. Причем при пе­реходе на ссылку рисунок откроется в отдельном окне, поскольку в теге <ahref...> мы указали параметр target^blank. Запомните его. Если вы раз­местите на своем сайте ссылки на другие сайты, то эти другие сайты при ис­пользовании параметра target=blank будут открываться в отдельном окне.

Сохраните программу обязательно в рабочей папке htdocs под любым на­званием и запустите ее. В браузер, как уже было отмечено, выведутся назва - ния-ссылки на рисунки. Нажмите на любую из ссылок - в отдельном окне появится изображение соответствующей картинки (рис. 6.3). У меня, напри­мер, в папке risynki размещено 12 картинок.

' : J уу ш UJ о 1 j* ; W ш • * iy щ ; СИ Address: jhttp:^ocalhost/MyBook/obychenie3.php

^ jr ~

.. .".Z]Q &

05 spaceOl med. iPfi

0760 ips

08 groundOl med. jpg

14 groundO 1 med ipg

19 sroundOl med. ips

Aatccd006.iP2

Aatccd013.ipg

A hot gaz cannibal star. iP.2:

Coronal Loop ipg

Earths Moon ipg

Eta Cannae ipg

Hd70642 ррагс-Ыя. фя

Рис. 6.3

Вообще нежелательно, чтобы названия файлов и папок начинались с нуля, так как функция readdir может их проигнорировать! Можете теперь удалить эту программу и папку risynki, чтобы не засорять наш рабочий ка­талог.

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

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

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

ИСПОЛЬЗОВАНИЕ СЕРВИСА 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 Александр
- телефон для консультаций и заказов спец.оборудования, дробилок, уловителей, дражираторов, гереторных насосов и инженерных решений.