Šta je novo?

PHP Form image verification

  • Začetnik teme Začetnik teme dj13
  • Datum pokretanja Datum pokretanja

dj13

Čuven
Učlanjen(a)
30.01.2002
Poruke
1,111
Poena
715
Prvo sam uradio ovako:
<?php
session_start();
$font = "fonts/font.ttf";
$text = $_SESSION['gen_text'];
$im = imagecreatefrompng("images/brlja.png");
header("Content-type: image/png");
$razmak_x=1;
for($i=0;$i<5;$i++) {
$boja[] = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
$velicina=mt_rand(20,30);
$ugao=mt_rand(-35,35);
$razmak_x=$razmak_x+$velicina;
$razmak_y=mt_rand(40,50);
imagettftext($im, $velicina, $ugao, $razmak_x, $razmak_y, $boja[$i], $font, $text[$i]);
}
imagepng($im);
imagedestroy($im);
?>

i radilo je ali sa bagom. Samo prva 2 slova je farbao u razlicitu boju a ostala u uvek istu neku sivu.
Onda sam malo prepravio i sad izgleda ovako i farba svako slovo u drugu boju:
<?php
session_start();
$font = "fonts/font.ttf";
$text = $_SESSION['gen_text'];
$im = imagecreatefrompng("images/brlja.png");
$n=0;
while($n<5) {
$boja[] = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
$n++;
}
header("Content-type: image/png");
$razmak_x=1;
for($i=0;$i<5;$i++) {
$velicina=mt_rand(20,30);
$ugao=mt_rand(-35,35);
$razmak_x=$razmak_x+$velicina;
$razmak_y=mt_rand(40,50);
imagettftext($im, $velicina, $ugao, $razmak_x, $razmak_y, $boja[$i], $font, $text[$i]);
}
imagepng($im);
imagedestroy($im);
?>
Kao sto se vidi premestio sam
$boja[] = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
u posebnu petlju.
Cisto me zanima zasto prvi primer ne radi kako treba ako neko zna? Po meni bi trebalo da radi i manje vise isto je sto i ovo drugo.
poz
 
ovako povrsno i meni prvi kod deluje ok... jedino mislim da ti onda uopste ne treba niz boja, nego ti je dosta jedna promenljiva, pa probaj tako (prvu varijantu)...
 
ovako povrsno i meni prvi kod deluje ok... jedino mislim da ti onda uopste ne treba niz boja, nego ti je dosta jedna promenljiva, pa probaj tako (prvu varijantu)...
Ako mislis nesto ovako:
for($i=0;$i<5;$i++) {
$boja = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
$velicina=mt_rand(20,30);
$ugao=mt_rand(-35,35);
$razmak_x=$razmak_x+$velicina;
$razmak_y=mt_rand(40,50);
imagettftext($im, $velicina, $ugao, $razmak_x, $razmak_y, $boja, $font, $text[$i]);
}
I to sam probavao u najranijim varijantama, ali ima isti problem. Prva 2 slova razlicita, ostala iste boje. Mada sam primetio jos nesto da otprilike jednom u 20 puta izadje i trece slovo u drugoj boji. Da li je moguce da rand stvarno izbacuje te vrednosti? Bas me zanima sta se desava. Uvek do sad sam imao problema ili radi ili neradi kod. Ali ovako da radi malo a ponekad malo vise to mi nije jasno.
 
Nazad
Vrh Dno