Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z przerobieniem tokena
Forum PHP.pl > Forum > Przedszkole
Balon
przerabiam token Crasha na klase. jednak caly czas wywala blad - blad grafiki. zadnego innego bledu nie wyswietla. czy ktos moze mi pomoc ?

pozdrawiam

  1. <?php
  2. class token {
  3. var $fontDir = '../font'; // katalog z czcionkami
  4. var $fontFiles = array('TT1221M_.TTF'); // nazwy używanych plików czcionek
  5. var $imgType  = 'gif'; // format wyświetlanej grafiki (png, gif, jpeg)
  6. var $length = 6; // długo�ć losowego cišgu
  7.  
  8. var $backColor = '#ffffff'; // kolor tła grafiki
  9. var $fontColor = '#2a2a2a'; // kolor czcionki
  10. var $dotsColor = '#c0c0c0'; // kolor plam ;-)
  11.  
  12. var $token;
  13.  
  14. function token( $length ){
  15. $token = substr(md5(uniqid(time())), 0 - $length);
  16. for($i = 0; $i < strlen($token); $i++)
  17. {
  18.  if(($token{$i} >= 'a' and $token{$i} <= 'z') and (rand(0, 10) > 5))
  19.  {
  20. $token{$i} = strtoupper($token{$i});
  21.  }
  22. }
  23. $this->token = $token;
  24. $_SESSION['token'] = $token;
  25. }
  26.  
  27. function make_color($img, $color)
  28. {
  29.  if(is_resource($img) and preg_match('/^#[a-f0-9]{6}$/i', $color))
  30.  {
  31. $color = substr($color, 1);
  32.  
  33. $rgb = array();
  34.  
  35. for($i = 0; $i < 6; $i += 2)
  36. {
  37.  $rgb[] = (int)hexdec($color{$i}.$color{$i + 1});
  38. }
  39.  
  40. return imagecolorallocate($img, $rgb[0], $rgb[1], $rgb[2]);
  41.  }
  42.  else
  43.  {
  44. return 0;
  45.  }
  46. }
  47.  
  48. function display(){
  49. header('Content-type: image/'.$this->imgType);
  50.  
  51. $width = strlen($this->token) * 15 + 10;
  52. $height = 25;
  53.  
  54. $img = imagecreate($width, $height);
  55.  
  56. $back = $this->make_color($img, $this->backColor);
  57. $font = $this->make_color($img, $this->fontColor);
  58. $dots = $this->make_color($img, $this->dotsColor);
  59.  
  60. $pts = array();
  61.  
  62. for($i = 0; $i < round($width / 1.5); $i++)
  63. {
  64.  $x = rand(0, $width);
  65.  $y = rand(0, $height);
  66.  
  67.  if(!in_array($x.'_'.$y, $pts))
  68.  {
  69. imageellipse($img, $x, $y, rand(2, 7), rand(3, 6), $dots);
  70. $pts[] = $x.'_'.$y;
  71.  }
  72.  else
  73.  {
  74. $i--;
  75.  }
  76. }
  77.  
  78. for($i = 0; $i < strlen($this->token); $i++)
  79. {
  80.  imagettftext($img, rand(14, 16), rand(-10, 10), rand(3, 5) + $i * 15, 20 + rand(-3, 3), $font, $this->fontDir.'/'.$this->fontFiles[rand(0, count($this->fontFiles) - 1)], $this->token{$i});
  81. }
  82.  
  83. switch($this->imgType)
  84. {
  85.  case 'jpeg':
  86. imagejpeg($img);
  87. break;
  88.  case 'gif':
  89. imagegif($img);
  90. break;
  91.  default:
  92. imagepng($img);
  93. break;
  94. }
  95.  
  96. imagedestroy($img);
  97. }
  98. }
  99. ?>
NetJaro
Ale warto, byś wkleił ten błąd..
Balon
sorry zapomnialem, przed przerobka:
  1. <?php
  2. $fontDir  = '../font'; // katalog z czcionkami
  3. $fontFiles = array('TT1221M_.TTF'); // nazwy używanych plików czcionek
  4. $imgType  = 'gif'; // format wy�wietlanej grafiki (png, gif, jpeg)
  5. $length = 4; // długo�ć losowego cišgu
  6.  
  7. $backColor = '#ffffff'; // kolor tła grafiki
  8. $fontColor = '#2a2a2a'; // kolor czcionki
  9. $dotsColor = '#c0c0c0'; // kolor plam ;-)
  10.  
  11. $token = substr(md5(uniqid(time())), 0 - $length);
  12.  
  13. for($i = 0; $i < strlen($token); $i++)
  14. {
  15.  if(($token{$i} >= 'a' and $token{$i} <= 'z') and (rand(0, 10) > 5))
  16.  {
  17. $token{$i} = strtoupper($token{$i});
  18.  }
  19. }
  20.  
  21. $_SESSION['token'] = $token;
  22.  
  23. function make_color($img, $color)
  24. {
  25.  if(is_resource($img) and preg_match('/^#[a-f0-9]{6}$/i', $color))
  26.  {
  27. $color = substr($color, 1);
  28.  
  29. $rgb = array();
  30.  
  31. for($i = 0; $i < 6; $i += 2)
  32. {
  33.  $rgb[] = (int)hexdec($color{$i}.$color{$i + 1});
  34. }
  35.  
  36. return imagecolorallocate($img, $rgb[0], $rgb[1], $rgb[2]);
  37.  }
  38.  else
  39.  {
  40. return 0;
  41.  }
  42. }
  43.  
  44. header('Content-type: image/'.$imgType);
  45.  
  46. $width = strlen($token) * 15 + 10;
  47. $height = 25;
  48.  
  49. $img = imagecreate($width, $height);
  50.  
  51. $back = make_color($img, $backColor);
  52. $font = make_color($img, $fontColor);
  53. $dots = make_color($img, $dotsColor);
  54.  
  55. $pts = array();
  56.  
  57. for($i = 0; $i < round($width / 1.5); $i++)
  58. {
  59.  $x = rand(0, $width);
  60.  $y = rand(0, $height);
  61.  
  62.  if(!in_array($x.'_'.$y, $pts))
  63.  {
  64. imageellipse($img, $x, $y, rand(2, 7), rand(3, 6), $dots);
  65. $pts[] = $x.'_'.$y;
  66.  }
  67.  else
  68.  {
  69. $i--;
  70.  }
  71. }
  72.  
  73. for($i = 0; $i < strlen($token); $i++)
  74. {
  75.  imagettftext($img, rand(14, 16), rand(-10, 10), rand(3, 5) + $i * 15, 20 + rand(-3, 3), $font, $fontDir.'/'.$fontFiles[rand(0, count($fontFiles) - 1)], $token{$i});
  76. }
  77.  
  78. switch($imgType)
  79. {
  80.  case 'jpeg':
  81. imagejpeg($img);
  82. break;
  83.  case 'gif':
  84. imagegif($img);
  85. break;
  86.  default:
  87. imagepng($img);
  88. break;
  89. }
  90.  
  91. imagedestroy($img);
  92. ?>


po przerobce macie u gory winksmiley.jpg
NetJaro
Napisałeś, że jest to "błąd grafiki". Jednak nie wkleiłeś jego treści - chodzi mi o właśnie tą treść smile.gif

Bo w skrypcie nie widze nigdzie 'błąd grafiki'.
Balon
Firefox wyrzuca ze nei moze wyswietlic grafiki bo zawiera ona bledy winksmiley.jpg
NetJaro
To daj na "pokaż źródło" - zobaczysz wtedy błędy jaki paser php Ci "wyłożył" i wklej tutaj ;-)
Balon
chociaz mam E_ALL to nic nie wywalil. pustka...
NetJaro
.. ja mówię, żebyś zajrzał do źródła strony..
Balon
na początku GIF a potem jakies kosmiczne znaczki
NetJaro
Sprawdź czy czcionkę masz dobrze ustawioną i znajduje się ona w katalogu.
kszychu
Sprawdź w error logu apache'a, tam będziesz miał treść błędu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.