PDA

Просмотр полной версии : Проблема с картинками


brasco2k
21.05.2008, 12:47
Cитуация такая:
Есть код(генерирует случайные картинки):

<?php
header ("Content-type: image/gif");
header("Cache-Control: no-cache, must-revalidate");

$img = imagecreatetruecolor(800, 600);
$zzz=imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));
imagefilledrectangle($img,0,0,800,600,$zzz);

for($i=0;$i<rand(5,40);$i++){
$inkline = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));
imageline($img,rand(20,780),rand(25,580), rand(20,780),rand(25,580),$inkline);

for($n=0;$n<rand(100,250);$n++) {
imagesetpixel($img,rand(0,800),rand(0,600),$inklin e);
}
}

imagegif($img);
imagedestroy($img);
?>


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

Собсно вопрос:
В чем проблема?

p.s Я догадываюсь что проблема в кэшировании сервером. Если да то как отключить?

groundhog
21.05.2008, 13:12
Попробуй такие хидеры, рандомизируй имя запрашиваемого файла...

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache

brasco2k
21.05.2008, 13:19
Спасибо, заголовок no-store, Pragma: no-cache помогли.

Тему можно закрыть

d_x
21.05.2008, 13:27
Ещё вместо rand() намного лучше использовать функцию mt_rand().

brasco2k
21.05.2008, 13:30
Ещё вместо rand() намного лучше использовать функцию mt_rand().


Действительно! Повторы все убрались!

for($i=0;$i<mt_rand(mt_rand(20,40),mt_rand(40,100));$i++){
$line=imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
imageline($im,mt_rand(1,800),mt_rand(1,600),mt_ran d(1,800),mt_rand(1,600),$line);
for($p=0;$p<mt_rand(mt_rand(200,350),mt_rand(350,600));$p++){
$pix=imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
imagesetpixel($im,mt_rand(1,800),mt_rand(1,600),$p ix);
}
}