Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2008, 12:32   #1
mager
Пользователь
 
Регистрация: 12.11.2006
Сообщений: 57
По умолчанию каталог фотографий

Здравствуйте посетители этого форума. На счет самоубийства пошутил, но есть одна проблемка, уже 2 дня пытаюсь создать скрипт, который сканировал бы директорию с фотографиями и находить лишь те который в своем названии имеют определённый ид код, конец ид кода обозначим %, после % пользовательское название файла. Вот к какому коду я пришел(полностью расписал его, чтобы понятно, что к чему было) но почему то не работает:
PHP код:
<?
$dir 
"dir1/dir2"#путь имена директорий
$dh  opendir($dir); #открываем директорию
$filename readdir($dh); #читаем файлы в открытой директории
$id $_COOKIE[id]; #ид уже определён, когда происходила аутентификация пользователя.
$a_files[] = $filename#закидываем имена файлов в масив
$key array_search($id$a_files); #ицем в масиве ключ фалов, содержащих в своём имени ид код
echo("Ваши фотографии:<br>$a_files[$key]<hr>");# выводим результат
#Код ещё не доработан!!
?>
Должно быть так в директории dir1 находиться директория dir2 в ней храняться файлы, допустим такого формата: 123456%name.jpg, 123456%nnn.jpg, где 123456 это $id, а name и nnn - это имена файлов, скрипт отсканировав директорию, должен найти все фотографии одного и того же ида, в нашем случае это 123456 и вывести на экран эти фотографии, но уже с пользовательским названием без ид кода, т.е. не 123456%name.jpg, а просто name.jpg. Пожалуйста кто с таким сталкивался помогите, ато уже 2 дня мучаюсь и ничего . Заранее спасибо.
Незнание человека не повод, чтобы над ним издеваться или смеяться, все мы чего-то не знали или не знаем...
mager вне форума Ответить с цитированием
Старый 27.03.2008, 12:47   #2
Adamant
Пользователь
 
Аватар для Adamant
 
Регистрация: 20.09.2007
Сообщений: 99
По умолчанию

У вас в третьей строке читается один файл (обычно это . или ..). Вам надо это делать в цикле, чтобы просканировать всю папку с файлами, причем перед записью в массив проверить является ли $filename файлом

PHP код:
while ($file readdir($dh)) {
    if (
is_file($file)) {
        
$a_files[] = $file;      
    }

Голова человеку дадена - не токмо шапку носить!
Adamant вне форума Ответить с цитированием
Старый 27.03.2008, 14:59   #3
mager
Пользователь
 
Регистрация: 12.11.2006
Сообщений: 57
По умолчанию

Всеравно скрипт работать не хочет
Вот его модифицированная версия, уже с циклом:
PHP код:
<?
$dir 
"dir/dir2";
$dh  opendir($dir);
$id $_COOKIE[id]; # вместо этого возмите название любого файла и пометите в директорию "dir/dir2"
echo("Ваши фотографии:<br>");
while (
$file readdir($dh)) { 
    if (
is_file($file)) { 
           
$a_files[] = $file;
    
$key array_search($id$a_files);
    echo(
"$a_files[$key]");
    }}
?>
Даже после этого скрипт наглым образом не работает
Незнание человека не повод, чтобы над ним издеваться или смеяться, все мы чего-то не знали или не знаем...
mager вне форума Ответить с цитированием
Старый 27.03.2008, 16:32   #4
Adamant
Пользователь
 
Аватар для Adamant
 
Регистрация: 20.09.2007
Сообщений: 99
По умолчанию

PHP код:
<?php
$dir 
"dir/dir";
$dh opendir($dir);
chdir($dir); // Это делает директорию "dir/dir" для PHP текущей
$id $_COOKIE[id]; // В вашем случае это  $id = "12345%"; 
echo "Ваши фотографии:<br>";
while (
$file readdir($dh)) {
    if (
is_file($file)) {
        if (
stristr($file$id) !== false)
            echo 
"$file<br />";
    }
}
?>
Голова человеку дадена - не токмо шапку носить!

Последний раз редактировалось Adamant; 27.03.2008 в 21:48.
Adamant вне форума Ответить с цитированием
Старый 27.03.2008, 20:34   #5
mager
Пользователь
 
Регистрация: 12.11.2006
Сообщений: 57
Хорошо

Спасибо большое Adamant. Но как известно человек существо ненасытное, и я не исключение. Картинки полность и удачно открывает. Но вдруг пользователь закинет на сайт картинку размером 1024*768 , а мне нужно все компактное, проверять в начале, нет смысла, ведь некоторые пользователи не умеют пользоваться графическими редакторами, вот и приходиться изощряться, чтобы им было удобно, поэтому написал скрипт уменьшающий картинку, отдельно он идеально работает! (использует гд библиотеку), но как только интегрирую его в получившийся выше код выдают вот такую ошибку(первый раз увидел такую, век живи, век учись!):
Код:
яШяаJFIFяю>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality яЫC    $.' ",#(7),01444'9=82<.342яЫC  2!!22222222222222222222222222222222222222222222222222яАZ–"яД яДµ}!1AQa"q2Ѓ‘Ў#B±БRСр$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzѓ„…†‡?‰Љ’“”•–—˜™љўЈ¤Ґ¦§Ё©ЄІіґµ¶·ё№єВГДЕЖЗИЙКТУФХЦЧШЩЪбвгдежзийкстуфхцчшщъяД яДµw!1AQaq"2ЃB‘Ў±Б #3RрbrС $4б%с"µ’г X@к№8¦›*:шD'т‹Еy ЛМ?§‘Y7r*¶c·˜3њqQЈI(yЊМЬЙ9цН2в1?%`sОЬr*•ъ’мU їс‘ЊъUўIWђ;ъљQlзb?бIБЗ*ZxЎX Ь{sѓЃE‡s=џи©L0©%cv№ў‹Ш4Agpw\[…V–hЙИмП*?SѕµТ¬~Х©1ЋЕQ~ыЛЊd"њnк=Ѕk„єс\у\-Ї‡б‘А ™е?dЌ¤о 3ґ d“АЙX^ ·Хнu5U˜Ь…ЭжHr6·#n8АЙЊд ВUR^йґi¶эвеѕ·-ј&Щ$•aљUcik!Њ№ •ѓИгѓУ+ї?®gУe–гBі’бНКHыG%pr»·И8Аяjј¦В8ж‚еЩ|Й„lT6оIг9цОy<гЮЅ ᆕ{*Ю¦*6л˜R7¶ЋV ѓ’X… т^{gЮ±Њ™¤ўєљљ^“*xѕР<Нafшy$·?GЉN<ёП%І7e‰`?»У=N‡аИ4W‹NыB‡'{<¤о'№3Рp+УъН Я-м{iHоq\Д?ЪW‡!6:Lл>Їјa„8<†$ёфЗ8з=ЃҐS]LЬ[ШYмoЩv›лІ`rАAйТІ®4K’>щ•ЅЯО№›ЌµтM±†е§‹c¤LГfIt!‰Йo•rа·C‚=·MІ‡UРмоЮ+_ґЭїЙ¬њљ\¦ј©ѕbк –мa0‰¤o.eаёк2G>Ж›$уµВBBИкЗћtБ тИ#ѕj_Э[Ь]Akd…m¬a[t#y–b2pI'Ѕf[ґЯh ПсwЁЅќ‹·Sё—ЗєнЖ›&“.шпI+$Г ЛѓћґЋџ…r“]Ko"(3™2Тѓ’IюЅsQM~яj”HЬЌЋSqэ)ђ‘&Ў“ ВеІ;сФ{х>ФЬ®%Ж—НnОSyl:ЃѓнџВЅ3Bшівё'ґ‚KЫE±ЬSМёµTQЋѓ(cЃ…†}kѓј6¶–ВЮЪоЦжWЌHК’ЄIи¤nуњtг9¬иe«&щКЛёоMЈhИ9щqйЫрв‹%ЈзУЧџ4xо“S’FXЩcі„ЖЛ+daІђr@ыГїКN3NывХҐµ”w6VWЧіK»Лµ`ЉAR,›rИ@?Э#§<ЊьР!HЌИ;±“щЏЛ©«љTСЪK,П$щB›v\ЋGRAАь(ґCSй 7вf‘v¶ЧZЌЬ¶й8ex±0=AL’ !FBз°«·Е/Zкwvу+ЯB$Ц[X щvЌКжMёpБєqµ—ѕqвpТх Н:ЖeVTQ№ѓЛ‘Ђ@ЬЛЊџЇsЦbюY|«™6ІрИ7І†яххЄP[ЉзҐкМvП Џ‡Хn%;-ЯО<W`зЇ<ъЦdџ/нь5эћ–ТЕ©&г5дІ«№ff-…ШЊ’єЋХжљќ¤Vъ…ј°FwЊO‘ИПзV Э•’bжИОуf.UЊJr0s“њЂqЦ„’cиkk>8ХЇ.хЇ®вФ#) Xт›Tn№б”’A<џJз&ЅФхЩЩп/жёrK†»№ЭЋXхЖСфУ‰о-ЦЙ®o(d¶”(g№Ћ8э8 7q"ќB+hA|GдамFлшр~эщЎщ‚т°? Ѕ6˜DЄКONшПqИ?оћЬХie|јFgШяy@В’ в¬ИсE°' ±f?ёе˜цяѕXчкѕш¬ч2HыќЛ7RXдФ±ўЛ%¬(ЋЌ>БЮ‹Ч=шзµь V ЃИя?…†fGжј± 0ђq]ФWVs<пKц„3ВЄбАFb ьј›H8ЗҐrЈ'ЦҐJГhТ DY$zъФ%И“*OЉ§љ)s ёX8'ҐO$ePH±ад`ьЈ dюќЄ=ї.w ъSh ЄlzтsйэzRmОбЯЉm+DЄ ЖШЖП9фнУщfЈЗ^E%Ўry`8НIдЇ’$увЬA>_;‡ c¦=ъфJЉЉRёо*DHД±‰J°HАП<ая#QQ@,ѕ!ґ™ZwіёЋюk±y-Е*у'пЋАЂкД0W`qюФ0b}oHё›P‰t©`Іј»Mwj{Uцўg~Д`ЁЗ«љўЂ:цс&‹%нэфљ •еёЉKx.nѓ¤*ёВЂ"P RБvІ*і5_ю{CЇizџцk§|ҐYА."eШ¶|Я"N2X“ђЎPsPEЉяЩяШяаJFIFяю>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality яЫC    $.' ",#(7),01444'9=82<.342яЫC  2!!22222222222222222222222222222222222222222222222222яАZ–"яД яДµ}!Цє»Л‹gтЩ&RЭПZ•!YcVАьЁЊ¬9Fз=k4* U…Рc]‡—*Л“‚±…З®yя "‹#h™nп¬щБ˜F™bрх§{˜Ф†‡^hНFC nгpН\иЊУШЭmHщї+:гPG;Sыt‘†ИUC“]&ЌЎ0+=Таз+юfљ¦–Ј•NбN‘ДX\nэkRИЦ¬v :юсFСР‘Rd ЉL~9¤Оw+•cђћ3РcҐMћЏ#㱥’ОxF|ІGЄЊХrаu8нR+’Є¦ьHч§єЂ„Їx#5Ow<(wlg8‚„K&fЏбйM'Џ›‘нQ›§zBOBi?о’?*0ВЉ.? •ъкХ~+XУ–%Пд)йчEH>сь*’E;FмЊR›њзлH~р§/ACvзЋХ4aZ=Ћ№ЗOҐF:ю5$_лАъя*СGь1њюUџЄйVЧ¶*зЖLЂ|ЊЅAъЦО8Є—<Э…<ЇЙЗn¦©v0ґПШЩ†wc$б?Л¦6cШч*?мнЧћїZЌI:›rY[>ьЏс?ќZю!CCm± ЊjЏх¬ы°>ЖN9p}9ўВ№“јgЬRg<“Loїшљ$&•ЂvpzСQ“Йъљ)4яЩ
Вод исходник нового скрипта:
PHP код:
$dir "dir/dir2";
$dh  opendir($dir);
chdir($dir);
$id $_COOKIE[id];
echo(
"Ваши фотографии:<br>");
while (
$file readdir($dh)) { 
    if (
is_file($file)) { 
    if(
stristr($file$id) !== false
    
$filename $file;
    list(
$width$height) = getimagesize($filename);
    
$thumb imagecreatetruecolor(15090);
    
$source imagecreatefromjpeg($filename);
    
imagecopyresized($thumb$source000015090$width$height);    
    
imagejpeg($thumb);
    }} 
Скрипт должен был просканировать директорию, вывести файлы, имеющие в название $id и затем вывести их в уменьшином ввиде, размером 150*90.
Прошу прощение за отнятое время! Заранее спасибо.
Незнание человека не повод, чтобы над ним издеваться или смеяться, все мы чего-то не знали или не знаем...
mager вне форума Ответить с цитированием
Старый 27.03.2008, 21:41   #6
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

А кто сказал что это ошибка? Скрипт прекрасно работает и выполняет то, что от него просят. )) Просто просят от него вывести JPG файл прямо в HTML страницу, чем он старательно и занимается.
Я бы сделал отдельный скрипт, который изменяет размер картинки, например img.php, а к нему бы обращался уже из главного скрипта.

Да, кстати, результат стараний "imagejpeg()" можно также вывести в файл и сохранить этот файл в другой папке, дабы заранее иметь уменьшенные копии картинок. А то если у вас будет 1000 картинок, то при каждом запуске страницы скрипт будет довольно сильно тормозить.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 27.03.2008, 22:05   #7
mager
Пользователь
 
Регистрация: 12.11.2006
Сообщений: 57
По умолчанию

А можно поконкретнее, как это сделать, можете выложить пример скрипта, и как результат в отдельный файл записать? Я незнаю что со мной седне, но вообще голова не соображает , щас даже в масивах чет я запутался(скрипт пишу), пожалуйста если сказали а, то говорите и б выложите пример, буду очень вам признателен.
Незнание человека не повод, чтобы над ним издеваться или смеяться, все мы чего-то не знали или не знаем...
mager вне форума Ответить с цитированием
Старый 27.03.2008, 22:37   #8
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Есть несколько вариантов. Я бы выбрал такой:
- юзер загружает картинку на сервер
- скрипт автоматически создаёт её миниатюрную копию в отдельной папке
- при выводе картинок сканируется директория с картинками и проверяется наличие уменьшенной копии
- вывод осуществляется через обычный <img src="..."> тэг.

Вариант два:
- создаётся скрипт, например img.php в котором берётся переменная через метод GET, обрабатывается и используя эту переменную как имя файла - читается большой оригинал картинки, она уменьшается и выводится. При этом, в начале скрипта нужно не забыть отослать заголовки
PHP код:
header ("Content-Type: image/jpeg"); 
- обращение к данному скрипту производится методом <img src="img.php?a=somefilename.jpg"> или в этом роде.
То есть главный скрипт, когда пишет <img> тэги для миниатюр, вместо того, чтобы обращаться напрямую к картинке - обращается к PHP скрипту, который выводит уменьшенный вариант большой картинки.

Второй вариант всё равно более нагружает сервер, чем первый.

Поконкретнее объяснил, пример скрипта в предыдущем посте, как записать результат в отдельный файл можно легко найти в мануале PHP: http://www.php.net/manual/ru/function.imagejpeg.php

Надеюсь полностью расписал как написать букву "б". Если хотите чтобы за вас написали букву "б" - милости просим в раздел Фриланс. Там вам с удовольствием и рвением помогут с гарантией качества.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 27.03.2008, 22:43   #9
mager
Пользователь
 
Регистрация: 12.11.2006
Сообщений: 57
Подмигивание

Спасибо за то, что отписались на этом топике, и действительно я обнаглел, решил что за меня скрипт напишут . Просто на седня с меня достаточно, мне уже во сне различные скрипты сняться, утром на свежую голову напишу скрипт, если вдруг возникнет вопрос отпишусь. Спасибо большое за активность!
Незнание человека не повод, чтобы над ним издеваться или смеяться, все мы чего-то не знали или не знаем...
mager вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт приема фотографий на печать через форму на сайте Hellog PHP 8 29.01.2009 16:25
непрерывная смена большого количества фотографий brenfire Помощь студентам 5 08.08.2008 11:23
непрерывная смена фотографий в разных папках. brenfire Общие вопросы по Java, Java SE, Kotlin 0 07.08.2008 14:39
Скрипт приема фотографий на печать через форму на сайте Hellog Фриланс 2 05.06.2008 15:37
ай нид хелп меню для каталога фотографий Чайник PHP 8 12.04.2008 16:26