Autor Zpráva
denCo
Profil
Zdravím. Mám vytvorený vlastný captcha obrázok pri registrácií. Vygeneruje sa vždy nový pri každom načítaní stránky:
<?php
$velkost_x = 200;
$velkost_y = 75;

function nahodny_retazec ( $pocet ) {
$vystup = "";
$nahoda = array ("A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M",
                 "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
                 "2", "3", "4", "5", "6", "7", "8", "9" ); 
$polia = count ( $nahoda ) - 1;
  for ( $int = 1; $int <= $pocet; $int++ ) {
    $index = mt_rand(0, $polia); //vygenerovať náhodný znak
    $vystup .= $nahoda[$index]; //pripojenie náhodného znaku k premennej $vystup
  }
return $vystup;
}
$text = nahodny_retazec ( 6 );

$miesto_na_znak = $velkost_x / (strlen( $text ) +1 );
$obrazok = imagecreatetruecolor( $velkost_x, $velkost_y );

$pozadie = imagecolorallocate ( $obrazok, 255, 255, 255 );
$okraj = imagecolorallocate ( $obrazok, 128, 128, 128 );
$farby[] = imagecolorallocate ( $obrazok, 128, 64, 192 );
$farby[] = imagecolorallocate ( $obrazok, 92, 64, 128 );
$farby[] = imagecolorallocate ( $obrazok, 10, 190, 64 );

imagefilledrectangle( $obrazok, 1, 1, $velkost_x - 2,
                      $velkost_y - 2, $pozadie);
imagerectangle( $obrazok, 0, 0, $velkost_x - 1, $velkost_y - 1, $okraj );

for ( $i = 0; $i < strlen($text); $i++) {
$farba = $farby[$i % count( $farby)];
imagettftext (
$obrazok,
28 + rand(0, 8),
-20 + rand(0, 40),
( $i +0.3 ) * $miesto_na_znak,
50 + rand( 0, 10 ),
$farba,
'ARIAL.TTF',
$text{$i}
);
}

for ( $i = 0; $i < 1000; $i++)
{
$x1 = rand( 5, $velkost_x -5 );
$y1 = rand(5, $velkost_y -5 );
$x2 = $x1 - 4 + rand( 0, 8 );
$y2 = $y1 - 4 + rand( 0, 8 );
imageline( $obrazok, $x1, $y1, $x2, $y1,
$farby[rand(0, count($farby) - 1 ) ]
);
}

imagejpeg ( $obrazok, "img.jpg", 100 );
?>

<img src="img.jpg">



a hneď na tej stránke ho zobrazujem pomocou tagu img. Chcem sa spýtať, ako je možné, že sa stále zobrazuje ten istý pri prechádzaní webu odkazom, aj keď je už fyzicky ten obrázok úplne iný? Aj keď prídem an tú stránku o 10 min neskôr, stále sa zobrazuje ten istý. Zmení sa len keď dám refresh stránky.
živá ukážka: http://hra.gravegame.net/index.php?page=registrace
tiso
Profil
denCo: cache. Musíš k tomu obrázku pripájať náhodný reťazec, aby sa volal inak.
denCo
Profil
To som si aj myslel, práve preto som pridal do meta tagu aj no cache, ale nepomohlo. Ok, skúsim to.

EDIT// Hej, stačilo dať namiesto
 <img src="img.jpg">
toto
<img src="img.jpg?<?php echo mt_rand (1000,9999);?>">
Toto téma je uzamčeno. Odpověď nelze zaslat.