Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Кухарчик А. -> "РНР: обучение на примерах" -> 52

РНР: обучение на примерах - Кухарчик А.

Кухарчик А. РНР: обучение на примерах — Мн.: Новое знание, 2004. — 237 c.
ISBN 985-475-050-7
Скачать (прямая ссылка): phpobuchennaprimerah2004.pdf
Предыдущая << 1 .. 46 47 48 49 50 51 < 52 > 53 54 55 56 57 58 .. 68 >> Следующая

РНР предоставляет массу возможностей по работе с файловой
системой сервера. Вот пример:
I
Интернет-магазин
179
$dir = opendir ("banner/"); while($f = readdir($dir) )
{
if (!stristr($f,".."> and $f != ".") { $tt[ ] = $f; } } }
В этом отрезке кода мы просматриваем выбранную директорию и все имена файлов, которые там имеются, заносим в массив $tt. Дальше можно работать уже не с директорией, так как это медленнее, а непосредственно с массивом, который будет содержать точную копию содержимого диска сервера (выбранной директории).
Решение, какой блок баннеров выводить, мы будем принимать на основании показаний счетчика. Счетчик можно хранить на компьютере клиента и показывать каждому посетителю следующий за просмотренным блок баннеров или вести общий для всех учет просмотренных блоков. В первом случае это проще, достаточно установить cookie для посетителя. Второй случай давайте рассмотрим подробнее:
$ttl = file ( "counter.php" );
$str = trim(str_replace ("\n","",$ttl[0]));
$str+ + ;
if ($str >= count($tt) or $str < 0} { $str = 0; }
Считываем файл с показаниями счетчика в массив (или в строку), получаем из него первую строку, предварительно обрезав в ней пробелы и переводы строк. Потом увеличиваем показания счетчика и проверяем, не вышло ли его значение за установленный предел. В нашем случае допустимые значения лежат в пределах от ноля до размера массива, в котором хранятся имена файлов в директории с баннерами. И, если вышло, сбросить счетчик в ноль.
Показания счетчика необходимо снова записать в файл:
$fp = fopen("counter.php", "w");
if ($fp) { $fw = fwrite($fp, $str); fclose ($fp); }
180
Программирование на РНР
Обратите внимание на имя файла, в котором хранится показание счетчика. Точнее, на его расширение. Оно, в принципе, может быть любым. Мы выбрали рнр, чтобы никто не мог получить к нему доступ. И кстати, не забудьте установить этому файлу атрибуты, разрешающие запись в него, иначе ничего работать не будет.
Начинаем работать над массивом имен баннеров:
$str1 = trim{str_replace (".","-", $tt[$str]));
@list ($id_price, $id_ras) = split("~", $str1);
Первая строка удаляет пробелы и переводит символы точки, являющейся разделителем между именем файла и его расширением, в тильду. Дальше раскладываем составляющую имени на собственно само имя и его расширение.
Если расширение очередного файла в каталоге подлежит обработке и выводу, то выводим баннер, если нет — ничего не ¦ делаем, пропускаем цикл:
if ($id_ras == "jpg" or $id_ras == "jpeg") {
echo "<img border=0 src=banner/$tt [$str]>"; } else {
В случае пропуска цикла требуется ввести еще одну переменную, что немного усложнит ситуацию:
@$siluro++; }
Дело в том, что некоторые баннеры, возможно, не понадобится
выводить на экран, например, в связи с тем, что товара, который рекламирует баннер, нет в наличии. Учтем это в коде. Все, что нам надо, это еще несколько переменных. В самом начале такой части кода поместим следующие строки:
$temp_siluro = @$siluro;
if {@!$siluro} {
После блока чтения списка файлов надо поставить закрывающую скобку, так как этот блок должен выполняться только один раз — тогда, когда переменная $siluro равна нулю.
Интернет-магазин
181
А в самом конце:
if (@$siluro != $temp_siluro and $siluro < 50) { include("mini.phtml"); }
Вы, наверное, уже догадались, что сам скрипт целиком должен располагаться в файле с именем mini.phtml, и вызываться в нужном месте командой include ("mini.phtml"); Получается интересная ситуация. Скрипт обрабатывается, и если по какой-то причине вдруг оказывается, что баннер не выведен на экран, то программа вызывает сама себя. Это позволяет избежать сбоев.
Текстовые баннеры
Иногда не требуются графические баннеры, достаточно текстовых, представляющих собой ссылку на статью, описание товара и т.д. В этом случае можно пользоваться более простым алгоритмом.
В файле chitatxt.php мы будем хранить то, что надо вывести на
экран. Информация будет заноситься туда следующим образом:
дата, адрес ссылки, текст для вывода на экран. Разделяться все
параметры, как обычно, будут тильдой.
Итак, подготавливаем нужные нам переменные, считываем файл с текстовой базой в массив и определяем его длину:
$nomer = 1;
$file = "chitatxt.php";
$ii = 0;
$tt = file ( $file ); $qw = count ($tt);
Открываем цикл, в котором и будем выводить наши сообщения: while < 4):
Всего будет выведено четыре сообщения; если вам нужно другое количество, измените число в этом операторе. Если надо вывести только одно текстовое сообщение, можно не пользоваться циклом.
182
Программирование на РНР
Ничего сложного, это мы уже проходили — раскладываем параметры строки на составляющие для последующей обработки:
$nomer++;
@$str = trim($tt[$nomer]);
list ($data, $add, $txt) = split ("~", $str) ; Выводим ссылку в нужном нам виде:
echo "<b> $data</b> <a href=\"$add\"><br>$txt </a>"; Закрываем цикл и саму программу:
endwhile;
Все. Правда, мы не рассмотрели в этом примере сортировку по дате и вывод по счетчику, но это попробуйте сделать самостоятельно, в качестве домашнего задания.
Предыдущая << 1 .. 46 47 48 49 50 51 < 52 > 53 54 55 56 57 58 .. 68 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100