ugrás a tartalomhoz

php ellenorzo kod segitseg

lacaaa · 2010. Nov. 20. (Szo), 09.20
Sziasztok lenne egy olyan kerdesem hogy szeretnek egy weboldalra kitenni egy ellenorzo kodot amikor regisztral a felhasznalo akkor beirja a kodot es csak ugy tud regisztralni. En megirtam a kodot ami egy kepre kitesz veletlen szamokat csak az a gondom hogy amikor bepitem a weboldalra akkor vagy a php kod jelenik meg vagy a kep jelenik meg de nem kerul a kep a helyere es van olyan amikor hibaval ter vissza a php hogy a php kod hibat tartalmaz es megall.

Gondolom a hiba a header hivas miatt van amikor kepet talal akkor kiteszi es megjelenik a kep es megall de ezt a problemat hogy lehetne kikuszobolni esetleg ha nem az a gond akkor mi lehet a baj.
mellekelem a kodot is hatha igy konnyeben kaphatnek valaszt a kerdesemre.

$img=imagecreate(120,40);
$hatter=imagecolorallocate($img,200,200,200);
$szoveg=imagecolorallocate($img,255,255,255);

$szoveg2=imagecolorallocate($img,0,0,0);

$val=rand(100000,999999);
$leptek=8;
$t=str_split($val);

imagettftext($img,20,29,10,30,$szoveg2,"BaroqueScript.ttf",$t[0]);
imagettftext($img,20,12,25,30,$szoveg2,"BaroqueScript.ttf",$t[1]);
imagettftext($img,20,-12,35,30,$szoveg2,"BaroqueScript.ttf",$t[2]);
imagettftext($img,20,-10,46,30,$szoveg2,"BaroqueScript.ttf",$t[3]);
imagettftext($img,20,-20,56,30,$szoveg2,"BaroqueScript.ttf",$t[4]);
imagettftext($img,20,-36,66,30,$szoveg2,"BaroqueScript.ttf",$t[5]);

for($i=0;$i<imagesx($img);$i=$i+$leptek)
imageline($img,$i,0,$i,imagesy($img),$szoveg);
for($j=0;$j<imagesy($img);$j=$j+$leptek)
imageline($img,0,$j,imagesx($img),$j,$szoveg);

header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
 
1

A font-ot nem mindegy hogyan

Tanul0 · 2010. Nov. 20. (Szo), 11.36
A font-ot nem mindegy hogyan adod meg neki.
  1. $font="./BaroqueScript.ttf";  
  2.   
  3. imagettftext($img,20,29,10,30,$szoveg2,$font,$t[0]);  
  4. imagettftext($img,20,12,25,30,$szoveg2,$font,$t[1]);  
  5. imagettftext($img,20,-12,35,30,$szoveg2,$font,$t[2]);  
  6. imagettftext($img,20,-10,46,30,$szoveg2,$font,$t[3]);  
  7. imagettftext($img,20,-20,56,30,$szoveg2,$font,$t[4]);  
  8. imagettftext($img,20,-36,66,30,$szoveg2,$font,$t[5]);  
Nálam így működik a scripted.

A kód generálást én nem így oldanám meg. Indíts egy session-t a kódodba, amely megegyezik az oldaladon használt session nevével, és a $_SESSION['captcha'] nevű tömben tárold a kódodat valamilyen encode-olással.
2

hello

lacaaa · 2010. Nov. 20. (Szo), 12.29
Koszi hogy valaszoltal arra tudnal e nekem peldat mutatni hogy azt hogyan lehet megoldani hogyha randommal csinalok egy 6 jegyu szamot es rateszem a kepre megjelenitem a kepet es eltarolom a random aszam erteket akkor a kepen nem az az ertek lesz amit en eltarolok hanem mas es minden egyes frissitesnel az eltarolt adat mindig a kepen levo elozo adattal egyezik meg soha nem egyeik a kepen levo ertek es a randommal tombben eltarolt ertek .


pl : kepen levo ertek mondjuk 123456
a tombe ebben az esetben megegyezik szoval ott is 123456
kov frissites

kepen:654398

tombben:123456

aztab kepen 908765
tombben:654398

es igy soha se talal mindig az elozo erteket tarolja a tomb. hogy lehet hogy az aktualisat tarolja el ne az elozot?
3

session_name("weboldalad_sess

Tanul0 · 2010. Nov. 20. (Szo), 13.01
  1. session_name("weboldalad_sessionje");  
  2. session_start();  
ezt a legelejére
Majd tárolod a kódot valamilyen encodeolt formában
  1. $_SESSION['captcha']=md5($t[0].$t[1].$t[2].$t[3].$t[4].$t[5]);  
majd az ellenőrzésnél pedig
  1. if(isset($_POST['captcha'])){  
  2.      if($_SESSION['captcha']==md5($_POST['captcha'])){  
  3.          //amit védtél a biztonsági kóddal  
  4.      }  
  5. }  
4

hello

lacaaa · 2010. Nov. 20. (Szo), 13.12
ez ok de igy nem general veletlen szamokat az a baj vele olyanra gondoltam hogy veletlen szamokat general minden weboldal ujratoltsesnel.
5

function

Tanul0 · 2010. Nov. 20. (Szo), 13.47
  1. function random_string($len=5, $str='')  
  2.   {  
  3.     for($i=1; $i<=$len$i++)  
  4.         {  
  5.   
  6.   
  7.      $ord=rand(48, 90);  
  8.      if((($ord >= 48) && ($ord <= 57)) || (($ord >= 65) && ($ord<= 90)))  
  9.     $str.=chr($ord);  
  10.   
  11.   
  12.     else  
  13.         $str.=random_string(1);  
  14.     }  
  15.     return $str;  
  16.   
  17. }  
  18.   
  19. $rand_str=random_string(6);  
  20.   
  21. $letter1=substr($rand_str,0,1);  
  22. $letter2=substr($rand_str,1,1);  
  23. $letter3=substr($rand_str,2,1);  
  24. $letter4=substr($rand_str,3,1);  
  25. $letter5=substr($rand_str,4,1);  
  26. $letter6=substr($rand_str,5,1);  
És akkor a $t tömböd helyett a $letter1, $letter2 ..... lesz a karaktered
6

Rejtett input

deejayy · 2010. Dec. 7. (K), 12.17
Ez nem jó megoldás?
  1. <div style='display:none'><input type='text' name='e-mail'/></div>  
  1. if (array_key_exists('e-mail'$_POST) && $_POST['e-mail']) {  
  2.     print("Te egy bot vagy. Hess");  
  3. }