Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Php] Generowanie captchy - problem
Forum PHP.pl > Forum > Przedszkole
Heniut
Mam taki kod:
  1. <?php
  2. $tla = "Tlo.png";
  3. $czcionki = "Captcha.ttf";
  4. $znaki = 'ABCDEFGHIJKLMNPQRSTUWXYZ123456789.,';
  5. $obrazek_tla = $tla;
  6. $liczba_znakow = rand(15, 31);
  7. $cap = imagecreatefrompng($obrazek_tla);
  8. $kolor = imagecolorallocate($cap, 250, 250, 250);
  9. for($x = 1; $x <= $liczba_znakow; $x++);
  10. {
  11. $czcionka = $czcionki;
  12. $znak = $znaki[rand(0, strlen($znaki)-1)];
  13. $odleglosc_miedzy_znakami = round(imagesx($cap) / $liczba_znakow+1)-10)*($x-1)+20;
  14. imagettftext($cap,rand(10, 25),rand(-5, 10),$odleglosc_miedzy_znakami,5,$kolor,$czcionka,$znak);
  15. }
  16. imagepng($cap);
  17. ?>

i wyskakuje błąd:
Cytat
Parse error: syntax error, unexpected T_VARIABLE in /home/heniutx/public_html/captcha.php on line 1


I moje 2 pytania:
1. Co tu jest źle, że wyskakuje błąd?
2. Czy to mi zrobi captche? Naturalnie plik png i czcionki są w folderze ze skryptem.

Kod przerobiłem z tąd:
http://php.pl/Wortal/Artykuly/PHP/Bibliote...1-Captcha-w-PHP
Wilu88
Cytat(Heniut @ 22.07.2011, 14:25:25 ) *
I moje 2 pytania:
1. Co tu jest źle, że wyskakuje błąd?
2. Czy to mi zrobi captche? Naturalnie plik png i czcionki są w folderze ze skryptem.



Wiem że na pewno wywali Ci błąd w linii 13 nie otwarty nawias.

Poza tym po skopiowaniu tego kodu mój serwer łyka linię 1. To jest początek pliku czy masz coś jeszcze przed tym?
Heniut
Tylko to mam.

Przecież u mnie też wywala w 1 linii nerdsmiley.png
Wilu88
Powtarzam że mi łyka to serwer czyli działa. Na pewno chodzi tam o linię 1 questionmark.gif może ucięło ci komunikat i chodzi o 14? w pierwszej linii masz przecież <?php

Spróbuj jeszcze za pomocą Notepad++ zmienić kodowanie za pomocą: Konwertuj na format UTF-8 (bez BOM) w zakładce Format
Heniut
Komunikatu nie ucielo.
Zmiana formatu > nie da się. Zmieniam na UTF-8 be zbom i po wlaczeniu i wylaczeniu nadal ansi.
Wilu88
Cytat(Heniut @ 22.07.2011, 14:51:59 ) *
Komunikatu nie ucielo.
Zmiana formatu > nie da się. Zmieniam na UTF-8 be zbom i po wlaczeniu i wylaczeniu nadal ansi.


To zrób nowy plik zmień kodowanie na UTF8- bez bom i wklej do tego kod.
Heniut
Teraz mam tak:
  1. <?php
  2. $tla = "Tlo.png";
  3. $czcionki = "Captcha.ttf";
  4. $znaki = 'ABCDEFGHIJKLMNPQRSTUWXYZ123456789.,';
  5. $obrazek_tla = $tla;
  6. $liczba_znakow = rand(15, 31);
  7. $cap = imagecreatefrompng($obrazek_tla);
  8. $kolor = imagecolorallocate($cap, 250, 250, 250);
  9. for($x = 1; $x <= $liczba_znakow; $x++);
  10. {
  11. $czcionka = $czcionki;
  12. $znak = $znaki[rand(0, strlen($znaki)-1)];
  13. $odleglosc_miedzy_znakami = (round(imagesx($cap) / $liczba_znakow+1)-10)*($x-1)+20;
  14. imagettftext($cap,rand(10, 25),rand(-5, 10),$odleglosc_miedzy_znakami,5,$kolor,$czcionka,$znak);
  15. }
  16. imagepng($cap);
  17. ?>

i jest w utf-8 bez bom ale wyskakuje:
Cytat
‰PNG  IHDRŢ#t #'-IDATxœíÁ1 őOm  ŕh[1â6ŮëIENDŽB`‚

zamiast captchy
Spawnm
Ustaw header()
Wilu88
Jeśli jeszcze masz z tym problem to oto przykład z mojej captchy

  1.  
  2. header('Expires: Tue, 08 Oct 1991 00:00:00 GMT');
  3. header('Cache-Control: no-cache, must-revalidate');
  4.  
  5.  
  6. header("Content-Type: image/png");
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.