Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> генерация изображений, возникают глюки :( 
:(
    Опции темы
nordmen88
Дата 25.2.2006, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



задача следующая - есть картинки в папке, нужно random'ом выбирать одну и загружать. но работает 50/50 т.е. не всегда загружается картинка. подскажите где ошибка. см. код:

Код

$folder = '.';

   $extList = array();
    $extList['jpg'] = 'image/jpeg';
    $extList['jpeg'] = 'image/jpeg';


// You don't need to edit anything after this point.


// --------------------- END CONFIGURATION -----------------------

$img = null;

if (substr($folder,-1) != '/') {
    $folder = $folder.'/';
}

if (isset($_GET['img'])) {
    $imageInfo = pathinfo($_GET['img']);
    if (
        isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) &&
        file_exists( $folder.$imageInfo['basename'] )
    ) {
        $img = $folder.$imageInfo['basename'];
    }
} else {
    $fileList = array();
    $handle = opendir($folder);
    while ( false !== ( $file = readdir($handle) ) ) {
        $file_info = pathinfo($file);
        if (
            isset( $extList[ strtolower( $file_info['extension'] ) ] )
        ) {
            $fileList[] = $file;
        }
    }
    closedir($handle);

    if (count($fileList) > 0) {
        $imageNumber = time() % count($fileList);/* original variant */
    $imageNumber =rand(1,count($fileList)-1);//или так
    $img = $folder.$fileList[$imageNumber];
    }
}

if ($img!=null) {
    $imageInfo = pathinfo($img);
    $contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
    header ($contentType);
    readfile($img);
} else {
    if ( function_exists('imagecreate') ) {
        header ("Content-type: image/png");
        $im = @imagecreate (100, 100)
            or die ("Cannot initialize new GD image stream");
        $background_color = imagecolorallocate ($im, 255, 255, 255);
        $text_color = imagecolorallocate ($im, 0,0,0);
        imagestring ($im, 2, 5, 5,  "IMAGE ERROR", $text_color);
        imagepng ($im);
        imagedestroy($im);
    }
}


Это сообщение отредактировал(а) nordmen88 - 25.2.2006, 22:52
PM MAIL   Вверх
PARROT
Дата 25.2.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



nordmen88, отредактируйте свое сообщение, использую кнопку КОД, пожалуйста.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
nordmen88
Дата 25.2.2006, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



отредактировал.
и еще - я тестирую это дело off-line с помощью denwer (вряд ли это причина ошибки).
все картинки jpg т.е. все просматриваются в соответствующих редакторах.
отображение картинок естественно включено в настройках обозревателя, etc
PM MAIL   Вверх
nordmen88
Дата 26.2.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



ошибка возникает здесь

Код

 $contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
    header ($contentType);


почему возникает ошибка???
PM MAIL   Вверх
PARROT
Дата 26.2.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Ошибку в студию, в смысле описание ошибки то что выдает браузер при тестировании.
Добавлено @ 16:15
Скорее всего хедер инфа не передается, так как до него имеется вывод (как предположение)


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
nordmen88
Дата 26.2.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



Notice: Undefined index: JPG in z:\home\northland.ru\www\northernland\best images\rotate.php on line 189
Warning: Cannot modify header information - headers already sent by (output started at z:\home\northland.ru\www\northernland\best images\rotate.php:189) in z:\home\northland.ru\www\northernland\best images\rotate.php on line 190

это выдает denwer
189-190 -> те строчки, которые я указал выше.
PM MAIL   Вверх
AztEK
Дата 26.2.2006, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Да, видимо проблема, как сказала PARROT.
Возможно перед выдачей заголовка чего-нибуть echo'ется.
Предположительно, хм, сообщение о предыдущеё ошибке. smile


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
PARROT
Дата 26.2.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



При чем тут Денвер? У вас хедер не передается, потому как до него идет вывод. Пользуйтесь буферизацией или посылайте заголовки до вывода инфы на экран и пользуйтесь поиском.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
nordmen88
Дата 26.2.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



но прикол то в том что работает 50/50 т.е. когда загрузит, а когда нет...
короче что делать то ?)
PM MAIL   Вверх
DemoCode
Дата 26.2.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: 1
Всего: 41



Цитата(nordmen88 @ 26.2.2006, 18:52 Найти цитируемый пост)
Notice: Undefined index: JPG in z:\home\northland.ru\www\northernland\best images\rotate.php on line 189
Warning: Cannot modify header information - headers already sent by (output started at z:\home\northland.ru\www\northernland\best images\rotate.php:189) in z:\home\northland.ru\www\northernland\best images\rotate.php on line 190


Суть сообщения в том что у тебя в файле rotate.php в строке 189 в каком-то массиве неопределен индекс JPG. А заголовки уже не отправляются, потому что до них выведено это сообщение. Решения:
[1] Определить в этом файле индекс JPG
или
[2] Вставить в начало текста скрипта строку Error_Reporting (E_ALL & ~E_NOTICE); Что запретит сценарию выводить сообщения типа NOTICE.


--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
nordmen88
Дата 26.2.2006, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



//Определить в этом файле индекс JPG
что еще за индекс и как его определить?
надеюсь это мой последний вопрос )))
PM MAIL   Вверх
DemoCode
Дата 26.2.2006, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: 1
Всего: 41



Цитата(nordmen88 @ 26.2.2006, 20:22 Найти цитируемый пост)
что еще за индекс и как его определить?
надеюсь это мой последний вопрос


Так ты покажи код этого rotate.php в строке 189.
Там должно быть что-то типа

$kakoito_massiv[JPG] ;
или $kakoito_massiv[$peremennay_so_znacheniem_JPG];
Вот индекс JPG этого массива и не определен.

Это не ошибка, а "предупреждение" о возможной ошибке.
Если ты хочешь чтоб они выводились, вставь строку из решения[2] которое я тебе привел.

Это сообщение отредактировал(а) DemoCode - 26.2.2006, 19:28


--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
nordmen88
Дата 26.2.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



все равно не знаю где error )))
сделал такую же фичу на другой странице - но там изображения все одинаковые 113*113 (и маленькие т.к. в 1 случае были 800*600 и более ) - работает без глюков!!!

в чем же дело???
PM MAIL   Вверх
nordmen88
Дата 27.2.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



алло люди кто-нить знает как это решить?)
я тут чуть разобрался
1 алгоритм верен, т.е. случайный номер генерируется правильно
2 от имени файла картинки ничего не меняется
3 если указать прямой адрес картинки, а не генерировать изображение через php ф-ию), то избражение всегда отображается
4 подогнал все картинки 800*600, одинаковые DMI, но проблема не в этом.

ПАМАГИТЕ!!! smile
PM MAIL   Вверх
CTAPbIuMABP
Дата 27.2.2006, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 17.2.2006
Где: Киев

Репутация: 2
Всего: 1



Код

$imageNumber = time() % count($fileList);/* original variant */
$imageNumber =rand(1,count($fileList)-1);//или так


я чтото не понимаю что это?!
первая строка никак не может выдать больше 4, а вторая никогда не покажет первую картинку....

PM WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0628 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.