Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Skrypt captcha nie wyświetla obrazka tylko "robaki"
bogdanh
post 2.05.2013, 15:38:39
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

Ostrzeżenie: (0%)
-----


Wczytuje standardowy skrypt dla prostego captcha ale zamiast obrazka dostaję błąd PHP i "robaki zamiast grafiki".
Poniżej skrypt, który wczytuję poprzez include do pliku index.php...
Kod
header("Content-type: image/png");
$string = "abcdefghijklmnopqrstuvwxyz0123456789";
for($i=0;$i<6;$i++)
{
    $pozycja_znaku = rand(0,strlen($string));
    $szesc_znakow .= $string{$pozycja_znaku};
}
$obrazek = ImageCreate(60, 20) or die("Serwer posiada biblioteke GD?");
$kolor_tla = ImageColorAllocate($obrazek, 255, 255, 255);
$kolor_tekstu = ImageColorAllocate($obrazek, 0, 0, 0);
ImageString($obrazek, 32, 5, 0, $szesc_znakow, $kolor_tekstu);
Imagepng($obrazek);


Błąd:Warning: Cannot modify header information - headers already sent by...
Zamiast obrazka dostaję coś takiego:
�PNG  IHDR<����jPLTE

Ten post edytował bogdanh 2.05.2013, 15:46:32
Go to the top of the page
+Quote Post
lobopol
post 2.05.2013, 15:43:40
Post #2





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Obstawiam kodowanie pliku, zmień na utg8 bez bom i kolejna rzecz czy coś jest wyświetlane przed tym includem (nawet spacja przed <?php może to powodować)


--------------------
Go to the top of the page
+Quote Post
bogdanh
post 2.05.2013, 15:52:51
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

Ostrzeżenie: (0%)
-----


Cytat(lobopol @ 2.05.2013, 16:43:40 ) *
Obstawiam kodowanie pliku, zmień na utg8 bez bom i kolejna rzecz czy coś jest wyświetlane przed tym includem (nawet spacja przed <?php może to powodować)

Całość mam kodowaną w UTF-8. Próbowałem zmieniać jak piszesz kodowanie, ale dalej pisze "robakami".
Skrypt jest includowany do kodu html. Poniżej wycinek:
Kod
<div class="form_row"><label class="left">Email: </label><input type="text" class="form_input"/></div><?php include("captcha.php");?>                    
                    <div style="float:right; padding:10px 25px 0 0;">

Żeby nie dostawać komunikatu o wysyłaniu nagłowka zastosowałem ob_start() i ob_end_flush() ale bez efaktu.

Go to the top of the page
+Quote Post
lobopol
post 2.05.2013, 16:28:55
Post #4





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


To nie ma się co dziwić, że masz źle skoro ustawiasz całemu plikowi mime obrazka to krzaki będą. musisz sobie generować w oddzielnym adresie i dodawać obrazek w tagu img
  1. <img src="captcha.php?tujakiś randomblokujący cacheowanie"/>


--------------------
Go to the top of the page
+Quote Post
bogdanh
post 2.05.2013, 16:49:11
Post #5





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

Ostrzeżenie: (0%)
-----


Oczywiście, że masz rację - doczytałem tą informację. Niestety nie wyświetla nic jako <img...
Kodowanie sprawdziłem (używam notepad++) mam UTF8 bez BOM.
Co prawda nie mogę znaleźć nic na temat przesłania parametru do blokowania casch, ale to teraz jest nieważne. smile.gif
Skrypt generuje grafike, bo wczytany sam działa.
Czyli na przeszkodzie stoi ten cholerny nagłówek. sad.gif
Go to the top of the page
+Quote Post
lobopol
post 2.05.2013, 16:54:03
Post #6





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


pokaż jak teraz wczytujesz. Masz jeszcze błędy kodowe:
1. używasz niezainicjalizowanych zmiennych $szesc_znakow
2.
  1. $pozycja_znaku = rand(0,strlen($string));

może wcelować w nieistniejący znak jeżeli wylosuje liczbę równą ilości znaków

co do randomowego geta możesz użyć time albo microtime

Ten post edytował lobopol 2.05.2013, 17:01:09


--------------------
Go to the top of the page
+Quote Post
bogdanh
post 2.05.2013, 17:01:36
Post #7





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

Ostrzeżenie: (0%)
-----


Kod
<div class="form_row"><label class="left">Email: </label><input type="text" class="form_input"/></div>
<img scr="captcha.php"/>
Go to the top of the page
+Quote Post
lobopol
post 2.05.2013, 17:02:23
Post #8





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


src a nie scr w img


--------------------
Go to the top of the page
+Quote Post
bogdanh
post 2.05.2013, 17:09:33
Post #9





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

Ostrzeżenie: (0%)
-----


Cholera - przepraszam za mój debilizm. Tak się zasugerowałem teorią, że palce źle piszą.
Zmienna poprawiona.
Dziękuję działa. smile.gif
P.s.
Pisałeś: "może wcelować w nieistniejący znak jeżeli wylosuje liczbę równą ilości znaków".
Można to w prosty sposób zmienić?


Ten post edytował bogdanh 2.05.2013, 17:12:29
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:27