Проблема с картинками

Discussion in 'PHP' started by brasco2k, 21 May 2008.

  1. brasco2k

    brasco2k Elder - Старейшина

    Joined:
    23 Nov 2007
    Messages:
    258
    Likes Received:
    91
    Reputations:
    0
    Cитуация такая:
    Есть код(генерирует случайные картинки):

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

    $img imagecreatetruecolor(800600);
    $zzz=imagecolorallocate($imgrand(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($imgrand(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),$inkline);            
            }
    }

    imagegif($img);
    imagedestroy($img);
    ?>
    Вроде бы все хорошо, но через некоторое время получаются одинаковые картинки.

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

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

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Попробуй такие хидеры, рандомизируй имя запрашиваемого файла...

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

    brasco2k Elder - Старейшина

    Joined:
    23 Nov 2007
    Messages:
    258
    Likes Received:
    91
    Reputations:
    0
    Спасибо, заголовок no-store, Pragma: no-cache помогли.

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

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Ещё вместо rand() намного лучше использовать функцию mt_rand().
     
    1 person likes this.
  5. brasco2k

    brasco2k Elder - Старейшина

    Joined:
    23 Nov 2007
    Messages:
    258
    Likes Received:
    91
    Reputations:
    0

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

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