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

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

Теперь создадим страницу для вывода мини-копий закачанных фотогра­фий с надписями. При клике мышью по этой мини-копии в отдельном окне откроется полная фотография.

Программа для создания мини-копии картинки minkartinki.php уже нами составлена (листинг 8.2). Нам еще понадобится программа для чтения файлов с табличными данными. Эту программу мы тоже уже составили (листинг 7.1 файла func.php). Файл func.php, если вы помните, находится у нас в папке для гостевой книги gostevaja. Скопируйте этот файл в папку risynki, с которой мы и работаем в данной главе.

В РНР-редакторе создайте новый файл и сохраните его в папке risynki Под названием kartinkiObych.php. Наберите код (листинг 8.4).

Листинг 8.4 (файл KartinkiObych. php) <html> <head> <title>OoTo</title>

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

<body bgcolor="silver">

<center><I id=lolo>MoH Фотографии</1Х/Сеп1ЕгхЬг>

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

Echo "<table align=CENTER border=2xtr>"; $z=0;

$kart=opendir("./foto"); $foto=" foto. txt"; include "minkartinki. php"; include "func. php"; $mass=read($foto);

While (($file=readdir($kart)) !=false) {

If($file !="." && Sfile !=".." && Sfile !="Thumbs. db")

{

If($mass($z] (0]=$file) $zap=$mass[$zj [ 1 ;

If(!file_exists("./fotomin/$file")) {

Resizeimg("foto/$file", "fotomin/$file", 130, 100);

}

$size_r=getimagesize("foto/$file");

Print r ("<td align=,center*><a href='foto/$file' target='_blank, ximg src='fotomin/$file' border=0 alt='$file'x/axbrxl id=lolo5>$file<br>$size_r[01 x $size_r [ 1 ]<br>$zap</I></td>"); $zap=""; $z++;

If (($z/4) = is_integer($z/4)) echo "</tr> <tr> "; }

}

Closedir($kart);

?>

</body> </html>

Код для вас уже должен быть несложным, но мы его все равно разберем, начиная с тега <?php:

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

Echo "<table align=CENTER border=2><tr>"; - создаем таблицу, в ячейках которой и будут выводиться ваши фотографии. Тег <tr>, если помните, соз­дает новую строку в таблице;

$z=0; - вводим переменную $z, которая потом будет счетчиком числа фото­графий в папке foto;

$kart=opendir("Jfoto"); - функция opendir открывает директорию, указанную в скобках в качестве аргумента. У нас это директория foto, где хранятся за­груженные нами фотографии. Открытой директории присваивается дескрип­тор $kart, который и используется в дальнейшем;

$foto="foto.txt"; - переменной $foto присваиваем имя текстового файла, где будут храниться надписи к фотографиям;

Include "minkartinki.php"; - вставляем в этот код другой код из файла minkar- tinki.php. Там у нас функция resizeimg для создания мини-копий;

Include "func.php"; - вставляем код из страницы func.php. Там у нас функция Read для чтения табличных данных из файла;

$mass=read($foto); - при помощи созданной нами функции read считываем данные из текстового файла foto.txt. Функция возвратит двумерный массив $mass из строк и ячеек, из которых эти строки состоят;

While (($fde=readdir($kart)) !==false) - цикл с условием, который перебирает все файлы (фотографии) из директории foto (дескриптор $kart). Этот цикл выполнится столько раз, сколько файлов в директории, присваивая перемен­ной $fde очередное название файла с фотографией. Как только условие цикла ($file=readdir($kart)) false станет истинным, т. е. все картинки будут пе­ребраны (переменной $fde ничего уже не будет присвоено, и она примет зна­чение false), цикл прекратится;

If - начало цикла;

If($fde /="." && $file !=".." && $fde !="Thumbs.db") - среди выданных функ­цией readdir имен файлов будут и ссылки на текущий и родительский (т. е. включающий в себя текущий) каталог, обозначаемые соответственно одной и двумя точками (так уж работает web-cepeep). Поскольку нас будут интересовать только файлы каталога, то данные ссылки из списка файлов следует исключить, добавив проверку состава имени файла. Также следует исключить файл Thumbs.db, который может создаться на сервере автоматиче­ски. Итак, если выбранный функцией readdir файл ($fde) не является теку­щим или родительским каталогом и это не файл Thumbs.db, то выполнится код между фигурными скобками под номером 2; 2{

If($mass[$z][0]==$fde) $zap=$mass[$z][1]; - проверяется условие. Если помните, данные в текстовом файле foto.txt представлены в виде таблицы с двумя столбцами. В первом столбце - имя графического файла с фотогра­фией, во втором - надпись под этой фотографией. Второй индекс в двумер­ном массиве $mass указывает на номер столбца (у нас их два - с индексами соответственно 0 и 1). Нулевой индекс указывает на первый столбец с име­нами файлов. Первый индекс массива $mass[$z] указывает на строку, нуме­рация которой тоже начинается с нуля. При каждом выполнении цикла про­веряется каждая строка (переменная Sz каждый раз увеличивается на едини­цу). Смысл проверки условия следующий: если название очередного файла Sfile, совпадает с названием файла из первого столбца проверяемой строки таблицы, то переменной $zap присваивается содержимое второго столбца этой же проверяемой строки, т. е. надпись под фотографией для фото с име­нем Sfile;

If (!file_exists("./fotomin/$flle")) - снова проверяется условие, существует ли уже мини-копия фотографии с именем Sfile. Мини-копии у нас будут хра­ниться в заранее созданной папке fotomin. Если мини-копии еще нет, то выполнится команда между фигурными скобками под номером 3;

Resizeimg("foto/$file", "fotomin/Sfile", 130, 100); - при помощи созданной нами функции resizeimg (эта функция в файле minkartinki.php, а файл мы уже вста­вили в этот код при помощи оператора include) создаем мини-копию из фото­графии с именем Sfile, размером 130 х 100, и сохраняем ее в папке fotomin под таким же именем;

V

Ssize_r=getimagesize("foto/Sfile"); - функция getimagesize создает массив Ssize r с данными о файле (фотографии) Sfile в папке foto (см. разд. 8.1-8.3). В элементе массива Ssize_r[0] будет содержаться ширина полной фотографии в пикселах, а в элементе $size_r[l] - высота полной фотографии;

Print Г ("<td align='center'><a href=foto/$file' target='_blank'><img src-fotomin/Sfile' border=0 alt='$file'X/a><br><I id=lolo5>$file<br> Ssize rfO] x Ssize rfl] <br>$zap</I></td>"); - в этой длинной строке при по­мощи оператора print r выводим мини-копию фотографии в браузер. Копия будет выводится в ячейку (тег <td>) таблицы, созданной в самом начале это­го кода. Мини-копия фотографии в папке fotomin является еще и графической ссылкой на полную фотографию в папке foto (тег <а>). Далее выводятся кур­сивом название файла Sfile, его ширина и длина и надпись под фотографией (она у нас в переменной Szap). Идентификатор 1о1о5 указывает на тип и раз­мер шрифта для вывода названия файла, его размера и надписи под фото. Этот идентификатор задан у меня в таблице стилей stil.css, а сама таблица стилей была задана в начале этого кода в строке <link rel="stylesheet" type = "text/ess" href="stil.css">. Кстати, файл стилей stil.css должен обязатель­но быть в папке risynki. Как создавать файл стилей, рассказано в гл. 4;

$zap=""; - очищаем содержимое переменной Szap. При следующем выполне­нии цикла while этой переменной будет присвоена следующая надпись для следующей фотографии;

Sz++; - при каждом выполнении цикла будем увеличивать счетчик файлов Sz На единицу;

If (($z/4) == is_integer($z/4)) echo "</tr> <tr> "; - как только число загружен­ных фотографий станет кратно четырем, завершаем строку таблицы с фото­графиями и начинаем новую. Например, пятая фотография будет выведена уже во втором ряду. Если вы хотите, чтобы в одном ряду выводилось, напри­мер, 5 фотографий, измените в этой строке число 3 на 5;

2} - окончание блока команд для условия, выполняющегося, когда выбран­ный функцией readdir файл не является текущим или родительским катало­гом и это не файл Thumbs.db;

1} - окончание блока команд для цикла while, который перебирает все файлы (фотографии) из директории foto;

Closedir($kart); - закрываем директорию foto с дескриптором $kart; ?> - конец РНР-кода.

Итак, программа разобрана. А теперь при помощи формы для загрузки файлов (программа zagryzkaObych.php листинга 8.3, рис. 8.3) загрузите в пап­ку foto семь любых фотографий, предварительно переименовав их на img001.jpg, img002.jpg и т. д. У меня, например, это 7 космических фото. Надписи к ним (в текстовом поле формы в программе zagiyzkaObych.php) Я написал просто: первое фото, второе фото и т. д. Теперь запустите послед­нюю разобранную программу kartinkiObych.php. Результат работы данной программы на рис. 8.4.

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

Рис. 8.4

Как видите, мини-копии фотографий выводятся по 4 штуки в ряд. Клик­ните мышью по какой-нибудь мини-копии - в отдельном окне откроется полная фотография.

Теперь допустим, что вам надо удалить какую-либо фотографию. Зайди­те в папку foto и удалите оттуда, например, фото с названием img005.jpg. Пе­резапустите заново программу kartinkiObych.php. Вы увидите, что пятая кар­тинка img005.jpg будет удалена, но начиная с картинки img006.jpg изчезнут надписи внизу (изчезнут надписи «шестое фото» и «седьмое фото»). А про­изошло это потому, что мы не удалили в текстовом файле foto.txt строку, принадлежащую картинке с названием img005.jpg. Если вы внимательно ра­зобрали программу kartinkiObych.php листинга 8.4, то поймете, что надпись под какую-либо картинку будет выводиться в браузер, если она действитель­но принадлежит именно этой картинке. Мы удалили картинку, но программа все равно будет искать название файла с этой картинкой в папке foto и в тек­стовом файле foto.txt строго по порядку. Картинок у нас стало на одну мень­ше, но число записей в файле foto.txt не изменилось. Начиная с картинки Img006.jpg возникнет несоответствие картинок и надписей к ним, поэтому они (надписи) и перестанут выводиться в браузер. Под картинкой будет только выведено название файла и размеры полной картинки. Откройте те­перь текстовый файл foto.txt и полностью удалите там строку, начинающуюся с названия удаленного файла img005.jpg. У нас это пятая по счету строка. Удалите так, чтобы между строками 4 (Img004.jpg) и 6 (img006.Jpg) не было бы даже пустой строки. Сохраните изменения в файле и вновь перезапустите программу kartinkiObych.php. Теперь все в порядке, каждая надпись соответ­ствует своей картинке. Если же вы потом захотите вновь разместить удален­ное фото на странице kartinkiObych.php, загрузив его опять при помощи фор­мы (программы zagryzkaObych.php), то вам придется сначала изменить но­мерное название фото с img005.jpg на название с более большим номером (следующим после номера последней закачанной картинки). В нашем случае (см. рис. 8.4) название удаленного файла img005.jpg, прежде чем его вновь загрузить, нужно будет заменить, например на img008.jpg. Делается это, что­бы не нарушать цифровой порядок закачанных фотографий (чтобы не спута­лись файлы с фотографиями и надписи к ним).

Вы, конечно, можете задать вопрос, а почему мы вообще делаем надписи, дополнительно создаем для их хранения текстовый файл? Почему бы просто не назвать свои файлы по-русски, например, не img001.jpg. а мое первое фо - mo.jpgl Увы, так делать нельзя. Как я уже отметил выше, на многих серверах (почти на всех) интерпретатор php не распознает файлы с русскими назва­ниями. Поэтому надписи на русском языке мы сохраняем отдельно в тексто­вом файле.

Итак, мы составили нашу web-страничку для вывода фотографий. Теперь давайте создадим еще одну страничку. Допустим, вы хотите вывести много картинок - 1000 и более. Надписи к ним выводить, допустим, не нужно. На­звания файлов переименовывать не будем, если, конечно, они не на русском языке. Закачивать картинки на сервер при помощи нашей формы (программа ZagryzkaObych.php) мы не будем (если картинок очень много, то это будет утомительно), а просто закачаем их в отдельную папку вручную. На первой странице будет выводиться только 12 картинок (точнее, их мини-копий), ос­тальные (тоже по 12) будут выводиться на последующих страницах. Мини - копии картинок тоже будут создаваться программно. На всех страницах, ес­тественно, будут ссылки и к другим страницам. На всех страницах будет на­ходиться форма для загрузки графических файлов, чтобы любой посетитель вашей web-странички с картинками мог добавить свою картинку. Программу для загрузки файлов посетителями мы создадим чуть позже. Она немного бу­дет отличаться от ранне созданной программы zagiyzkaObych.php. Там уже не будет никакой формы (она будет уже на страницах с картинками), и мы введем ограничение, чтобы объем закачиваемой посетителем картинки не превышал бы 3Мб.

Итак, если на каждой странице у нас будет по 12 картинок, а всего карти­нок будет, предположим, 1000, то число страниц с картинками будет 84. Со­ставлять каждую страницу мы не будем, да и зачем? Мы создадим одну - единственную страницу для вывода картинок. Она будет называться kar - Tinki.php. Введем некую переменную $j и в зависимости от ее значения, на страницу будет выводиться тот или иной блок из 12 картинок. Например, при $j=l выведутся картинки с 1 по 12, при $j=2 выведутся картинки с 13 по 24 и т. д. Значение переменной $j можно указать после названия страницы с картинками. Например, если мы хотим, чтобы переменная $j была равна 2, нужно записать kartinki.php?] =2 (без значка $). Такой способ передачи на страницу переменных был рассмотрен в разд. 5.1.

Итак, в папке risynki вы должны были создать две подпапки: подпапку Kart, куда мы будем загружать полные картинки, и подпапку kartmin, где бу­дут храниться созданные программно мини-копии картинок. В папку kart я, к примеру, скопировал 27 космических картинок. В РНР-редакторе создайте новый файл. Сохраните его в папке risynki под названием kartinki.php. Набе­рите код:

Листинг 8.5 (файл Kartinki. php) <Html> <Head>

<*Ше>Космические рисунки</Ш1е>

<meta http-equiv=,,conteiit-typeM content="text/html; charset=vindows-1251"> <link rel="stylesheet" tvpe="text/ess" href="stil. css"> </head>

<body bgcolor="silver">

<center><! id=lolo3>KocMH4ecKHe pncyHKH</lx/center><br>

<?php

$z=0;


If (!$_GET['j']) {

$j=i; }

Else {

$j=$_GET['j'l;

}

Echo "<table align=CENTER border=2 bgcolor=black><tr>";

Include "minkartinki. php";

$kart=opendir("./kart");

While (($file=readdir($kart)) !==false) {

If($file !="." && $file!=".." && $file!="Thumbs. db")

{

$z++;

If (!file_exists("./kartmin/$file")) {

Resizeimg("kart/$file", "kartmin/$file", 100, 70); }

$size_r=getimagesize("kart/$file");

If (($z>12*$j-12) && ($z<=12*$j)) {

Print_r ("<td align=center id=lolo2><a href="kart/$file" target=_blankximg src="kartmin/$file" border=0 alt="$file"x/axbrxl id=lolo6>$file<br>$size_r[3]</Ix/td>");

If (($z/4) = is_integer($z/4)) echo "</tr>"; }

}

}

EchoM</tdx/trx/table>"; echo "<centerxp>";

For($i=l; $i<=$z/12+l; $i++) {

$k=(12*$i-ll)."...".($i*12);

If($i=$j) {

Echo "<b id=lolo4>$k</b>M; }

Else {

Echo "<а href-kartinki. php? j=$i'><b id=lolo4>$k</bx/a>";

}

}

Echo "</px/center>M; ?>

<brxbr>

<div>Moжeтe закачать на сайт свою картинку!</div>

<form enctype^multipart/form-data' action=zagryzka. php method=POST>

<input type=FILE narae=zakxbr><br>

<input type=SUBM! T name=otpr Уа1ие='Отправить'>

</form>

</body>

</html>

Пока не запускайте эту программу, поскольку она еще работать не будет. Давайте разберем строчки кода, начиная с тега <?php: < ?php

$z=0; - вводим счетчик картинок. В переменной $z будет храниться порядко­вый номер картинки;

If (!$_GET['j']) - при загрузке данной страницы мы должны сначала опреде­литься со значением переменной $j. Ведь от нее зависит, какие картинки бу­дут выводиться. Смысл условия следующий: если переменная $j не получена (или мы ее не указали), то мы присваиваем ей значение единица, т. е. делаем

По умолчанию $j=l; {

$j=l; }

Else - иначе, если мы задали значение j в строке браузера, например, kar- tinki.php?j=2, то присваиваем переменной $j указанное значение (это значе­ние будет храниться в элементе суперглобального массива $_GET['j'J); {

$j=$_GET['j']; }

Echo "<table align=CENTER border=2 bgcolor=black><tr>"; - выводим нача­ло таблицы, в ячейках которой и будут вставлены мини-копии картинок. Толщина линий таблицы равна 2 пиксела (Border=2), фоновый цвет таблицы задан черный (bgcolor=black), хотя можете задать и свой. Открываем первую строку таблицы, при помощи тега <tr>. Все, пока строительство таблицы прерываем;

Include "minkartinki.php"; - вставляем код из файла minkartinki.php. В том ко­де есть написанная нами функция resizeimg для создания мини-копий карти­нок;

$kart=opendir("./kart"); - открываем директрию с полными картинками;

While (($fde=readdir($kart)) !==false) - цикл с условием, который будет вы­полняться до тех пор, пока функция readdir не переберет все файлы в дирек­тории kart. Этот цикл выполнится столько раз, сколько файлов в директории, присваивая переменной $file очередное название файла с картинкой;

1{— начало цикла;

f(Sfile •= "•" && Sfile /=".." && Sfile !="Thumbs.db") - если выбранный функ­цией readdir файл {Sfile) не является текущим или родительским каталогом и это не файл Thumbs.db, то выполнится код между фигурными скобками под номером 2; 21

$z+ +; - при каждом выполнении цикла будем увеличивать счетчик файлов $z На единицу. Это и будет как бы порядковый номер картинки, выбранный функцией readdir;

If (!file_exists("./kartmin/Sfile")) - если мини-копии выбранной функцией read­dir картинки еще не существует в папке kartmin, то выполнится команда ме­жду фигурными скобками под номером 3 для создания данной мини-копии; 3(

Resizeimg("kart/$file", "kartmin/Sfile", 100, 70); - при помощи созданной нами функции resizeimg (эта функция в файле minkartinki.php, а файл мы уже вста­вили в этот код при помощи оператора include) создаем мини-копию из кар­тинки с именем Sfile, размером 100X70, и сохраняем ее в папке kartmin под таким же именем;

3}

Ssize_r=getimagesize("kart/Sfile"); - функция getimagesize создает массив Ssize_r с данными о файле (картинке) Sfile в папке kart (см. разд. 8.1-8.3). В элементе массива Ssize_r[0] будет содержаться ширина полной картинки в пикселах, а в элементе Ssize_r[l] - высота полной картинки. Здесь же мы воспользуемся другим элементом массива - Ssize_r[3], в котором содержится строка с указанием ширины и высоты изображения;

If (($z> 12*$j-12) && (Sz< = 12*$j)) - условие, указывающее на интервал но­меров выводимых картинок на страницу. Например, при $j=l условие будет истинно, если номера картинок ($z) будут соответствовать интервалу от 1 до 12;

4{

Print_Г ("<tdalign=center id=lolo2><a href="kart/$fde" target=_blank><img src="kartmin/$fde" border=0 alt="$fde"></a><br>

<1 id=lolo6> $fde<br>$size_r[3] </I></td> "); - если условие if истинно, то 12 мини-копий картинок при помощи функции printjr будут выводиться в окно браузера на страницу. Подобная строка уже разобрана в прошлом листинге;

If (($z/4) == is_integer($z/4)) echo "</tr>"; - как только число загруженных картинок на странице станет кратно четырем, завершаем строку таблицы с картинками и начинаем новую. Например, пятая картинка-будет выведена уже во втором ряду;

4} - окончание цикла вывода картинок на страницу;

2} - окончание действия условия if проверяющего, не является ли выбран­ный функцией readdir файл ($fde) текущим или родительским каталогом или файлом Thumbs.db

1} - окончание цикла while перебора всех файлов в директории kart;

Echo"</td></tr></table>"; - заканчиваем (закрываем) таблицу с картинками на странице;

Echo "<center><p>"; - после таблицы с 12 картинками мы должны размес­тить ссылки на другие таблицы с другими 12 картинками. Ссылки выводим в центре, в отдельном блоке <р>;

For($i=l; $i<=$z/12+l; $i++) - при помощи цикла for выводим ссылки на ос­тальные страницы с картинками, причем, эти ссылки будут в виде интервала чисел - порядковых номеров картинок. Страниц с картинками у нас будет много, но все они как бы будут объединены в одну. Будет меняться только параметр $j, и в зависимости от этого параметра на страницу будет выво­диться та или иная порция из 12 картинок. К этому моменту в переменной $z У нас будет храниться общее число всех картинок в папке kart. Число $z/12+l Означает, сколько всего должно быть страниц с картинками. Отсюда счетчик

$i означает у нас как бы номер страницы с картинками; *{

$k=(l2*$i-lГ). "...".($i*12); - формируем интервалы чисел, означающие номе­ра картинок на странице. Например, при $i=l выведется интервал /.../2, а при $i=2 выведется интервал 13...24 и т. д.;

If ($i==$j) - проверяется условие, которое я сейчас попытаюсь объяснить. Итак, на странице, например kartinki.php?j=I, будут ссылки на другие табли­цы с картинками (на страницы с другим параметром $j). Нам нужно сделать так, чтобы не срабатывала ссылка на ту страницу, на которой находится. по­сетитель. Например, если посетитель находится на второй странице (в этом случае $i=$j=2), то зачем ему ссылка на вторую страницу? Выведется только

Числовой интервал картинок (выполнится команда между фигурными скоб­ками под номером 6). Параметр id=lolo4 задает стиль шрифта из таблицы стилей stil.css; Б{

Echo "<b id=lolo4>$k</b> "; 6} Else

7{

Echo "<a href='kartinki.php?j=$i'><b id=lolo4>$k</b></a>"; - выводим ссылки на страницы с другими параметрами $j, на которых посетитель еще не находится;

7}

5} - окончание цикла вывода ссылок;

Echo "</р> </center> "; - закрываем блок ссылок;

?> - конец РНР-кода;

<Ъг><Ъг>

<div>Moжeme закачать на сайт свою картинку!</div>

<form enctype='multipart/form-data' action=zagryzka.php method=POST> - де­лаем форму для закачки картинок на страницу посетителями сайта. После нажатия кнопки «Отправить» запустится сценарий загрузки графического файла на сервер zagryzka.php. Его мы создадим в следующем листинге;

<input type=FILE name=zak><br><br> - создаем поле с именем name=zak Для ввода загружаемого на сервер файла;

<input type=SUBMT name=otpr value='Omnpaeumb'> - кнопка для отправки данных;

</form> - закрываем форму.

Теперь напишем код для загрузки файлов на сервер zagryzka.php. Этот код идентичен коду сценария zagryzkaObych.php (листинг 8.3) с той лишь разницей, что в коде zagryzka.php не строится форма (она уже есть на страни­це kartinki.php), мини-картинки создаются другого размера и вводится огра­ничение на объем закачиваемого файла. В РНР-редакторе создайте новый файл и сохраните его в папке risynki под названием zagryzka.php. Наберите код:

Листинг 8.6 (файл zagryzka. php) <?php

If ($_POST[,otpr, J=true)

{

$zak=$_POST['zak, l; $file=$_FILES['zak'] ['name'];


$size=$_FI LE S i 'zak' ] |' size' ];

If($size> 1024*1024*2) {

Echo "Размер файла не должен превышать 2 МБ! Повторите попытку.<br>";

Exit(); }

$ext=array(".jpg",".gifypng",".JPG",".GIF",".PNG");

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

If(copy($_FILES["zak"]["tmp_name"], "kart/".Sfile)) {

Echo "Файл ".$file." объемом: ".Ssize." байт успешно закачан!<Ьг>";

Echo "<a href=# onClick-history. backO'xbutton>BepHyTbCH</buttonx/a>";

}

Else {

Echo "Ошибка при закачке файла! Повторите попытку.<br>";

ExitO; }

}

Else {

Echo "Расширение закачиваемых файлов должно быть jpg, png или gif! Повторите попытку.<Ьг>";

Exit();

}

} ?>

Сохраните код. Этот код разбирать не буду, поскольку похожий код ра­зобран выше (листинг 8.3). Объясню лишь пару строк:

If($size > 1024*1024*2') - условие, вводящее ограничение на объем закачи­ваемого файла (до 2 Мб). Если посетители начнут закачивать файлы, напри­мер, в 20 Мб, то они быстро заполнят все дисковое пространство, выделенное вам на сервере;

Echo "<а href=# onClick= 'history.backQ '><Ьи№п>Вернуться</ЬиПоп></а> "; - После закачки файла нам надо вернуться со страницы zagryzka.php на первую страницу с картинами kcirtinki.php, т. е. назад. Для этого и существует ссылка <а href=# onClick= 'history.backQ '>, которая возвращает посетителя на про­шлую страницу. Ссылка сделана в виде кнопки «Вернуться».

Запустите теперь код страницы с мини-картинками kartinki.php (лис­тинг 8.5). У меня, например, в папке kart уже имеется 48 космических карти­нок и результат работы данной программы изображен на рис. 8.5.

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

Рис. 8.5

При нажатии кнопкой мыши на любую мини-копию в отдельном окне должна появиться полная картинка. Теперь щелкните мышью на числовом интервале 13...24. Вы должны попасть на эту же страницу с мини-картин­ками kartinki.php (рис. 8.6), но с параметром у=2. Посмотрите вверху на стро­ку браузера. Вы увидите, что после названия страницы стоит параметр у: Kartinki.php ?j=2.

Все мини копии-картинок созданы программно и вы должны их увидеть в подпапке kartmin, которая, в свою очередь, была раньше создана вами в папке risynki.

Вернемся теперь к странице kartinki.php (рис. 8.5). Выберите при помощи кнопки «Обзор» какой-нибудь графический файл на вашем компьютере (файл должен быть с расширением jpg, gif или png) и нажмите кнопку «От­править». В случае успешной закачки файла, вы, попав на страницу za­gryzka.php, увидите в браузере надпись, примерно как на рис. 8.7.

Нажав на кнопку «Вернуться», вы снова вернетесь на страницу kar­tinki.php (по умолчанию мы сделали параметр j=l). Обновите страницу. Вы увидите вашу закачанную картинку (ее мини-копию) на какой-либо из страниц (она, например, может оказаться последней).

Глава 8. Размещение на сайте фотографий, картинок

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

Рис. 8.6

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

Рис. 8.7

К&тмщстш ри^уит-' - -4 ' v';;* й/; 0

Теперь вы можете создавать на сайте свой фотоальбом или картинную галерею. Вам только остается загружать фотографии или картинки в отдель­но созданную папку. Все остальное php сделает за вас! Что касается оформ­ления и дизайна ваших страниц, то при помощи html-тегов и таблицы стилей вы это сможете сделать самостоятельно на свой вкус.

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

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

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

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