Autor Zpráva
3.141592
Profil *
Dobrý den,

mám potíže s firefoxem při vykreslování kapči. Naprosto nevím čím to může být, jak se zeptat googlu ani jak to mám vyřešit. Snad poskytnu všechny informace, které povedou k rozluštění tohoto jevu. Oprázek vykresluji pomocí php scriptu, který je nejspíše v pořádku. Pokud opakovaně refrešuji stránku, tak jednou za čas se prostě obrázek nevykreslí. Celý kód jsem tedy zvalidoval pomocí validator.webylon.info to nepomohlo.

Obrázek tedy vilám takto :

<img src="/secure/captcha.jpg" id="captcha" alt="captcha">

s tim že v .htaccess mám uvedeno :

RewriteRule ^secure/captcha.jpg /captcha.php [L,QSA]

ovšem pokud načtu jen script takto http://127.0.0.1/cs/index.php?page=captcha dostanu v prohlížeči vždy tuto odpověď. :
"Obrázek captcha nelze zobrazit, protože obsahuje chyby"

pokud ale jej načtu takto : http://127.0.0.1/captcha zobrazí se bez problémů,což nevím c čím souvisí a jestli to s tím souvisí.

Problém s občasným nezobrazováním mám jen ve firefoxu.
Davex
Profil
Pokud to dobře chápu, tak se obrázek načítá třemi různými způsoby:

1) http://127.0.0.1/cs/index.php?page=captcha - pokaždé napíše chybu
2) /secure/captcha.jpg - jednou za čas se nevykreslí
3) http://127.0.0.1/captcha - zobrazí se bez problémů

Asi bys měl začít od kroku 1) a podívat se na chyby, které skript vypisuje a dále se podívat jaké jsou rozdíly mezi způsoby 2) a 3) nebo rovnou na stránce načítat obrázek z adresy, která funguje.
3.141592
Profil *
No ano a v bodě 1 je to chyba "Obrázek captcha nelze zobrazit, protože obsahuje chyby" toto se vypíše na stránce... podivností této chybové hlášky je ten fakt, že to není text, ale obrázek ve kterém je napsaná chybová hláška. A tohle nevím proč se děje, ale ani mě zas tolik netrápí.. uvedl jsem to jenom jako zajímavost a nevím jestli to s tím vůbec nejak souvisí. Jde mi o bod 2 ... a adresa která na něj vede je prostě správná a důkazem toho je, že se obrázek zobrazí asi s 90% pravděpodobností. Navíc jak jsem také již psa děje se to jen ve firefoxu, takže chyba musí být jinde.


... jak mám zjistit kde se chyba rodí? protože to mě zajímá asi nejvíc. Zkoušel jsem chybovou konzoli ve firefoxu, ale jakmile je konzole aktivní tak se chyba nestane. Je to určitě bug ve firefoxu, ale taky určitě to má řešení.
Alphard
Profil
Chybová hláška může prozradit příčinu. Obrázky pro captchu jsou generované, když ho násilně otevřete v textovém editoru (nebo dočasně zrušíte posílání hlavičky informující o obrázku), uvidíte chybovou hlášku.
3.141592
Profil *
Alphard:
Teď uplně nerozumim jak to myslíte.
Medvídek
Profil
3.141592:
Když odkomentuješ řádek nastavující hlavičku, podobné tomuto: header('Content-type: image/jpg');
3.141592
Profil *
Totiž s tim obrázkem co se nezobrazí nic neni. Teď jsem si otevřel zdrojový kód stránky když se nezobrazil obrázek a kliknul jsem tam na přímej link na ten pbrázek v místě <img src="/secure/captcha.jpg" id="captcha" alt="captcha"> a zobrazil se mi bez problémů. Problém není v obrázku.


Medvídek:
Když odkomentuju řádek v tom scriptu který obrázek tvoří myslíte? Jakože takhle? #header ("Content-Type: image/png"); .. to sjem udělal a na stránce se místo obrázku oběví jenom nápis "captcha" který ale taky neni text ale obrázek.
Davex
Profil
3.141592:
a stránce se místo obrázku oběví jenom nápis "captcha"
To se pravděpodobně vypíše popis obrázku z atributu alt.

Po zakomentování funkce header se podívej přímo na adresu toho skriptu, který vyrábí obrázek a ne na stránku, kde se obrázek má zobrazit. Pokud není zapnuté vypisování chyb PHP, tak by bylo dobré ho zapnout.
3.141592
Profil *
Davex:
Udělal jsem to tak. v php.ini

display_errors = On
error_reporting = E_ALL

už bylo.

na začátek .htaccess jsem přidal

<IfModule mod_php5.c>
php_flag display_errors On
php_value error_reporting 30719
</IfModule>

a teď uplně přesně nevim co dál... pokud teď zadám přímo http://127.0.0.1/captcha.php, tak se tam zobrazí změť šílenejch znaků... úryvek : "‰PNG  IHDRŇ8ż�V”,PLTERąŇJővĄIGět^ŃcU¶SLÚiXăn[­NIČ^RżYOĂ”drÔpŻ¤gׄa^äs›´j`Ęjwź^¶Ś_‚‰XUßpŔ" ... což ještě nejakou dobu pokračuje asi 20 řádků... takže co vlastně jsem měl udělat?


...žádnej výpis chyby nebo nic takového.


Asi mám mírný pokrok, ale stejně to nic nevyřešilo... podařilo se mi teda dostat z toho výpis chyby.. protože se tam vypisuje u toho captcha.php "Notice: A session had already been started - ignoring session_start() in C:\server\www\captcha.php on line 4" ... což asi nemá být v obrázku, takže jsem v upravil ten script na jednom řádku takto :

[pre]@session_start();[/pre

což potlačilo výpis té chyby, ale faktu že se kapča jednou za čas nezobobrazí to nezměnilo vůbec nic... žádná jiná chyba tam vypsaná neni.


Zkusil jsem změnit formát obrázku z png, na jpg... a stejně se to děje.


Chyba prostě neni v obrázku a nevim jak přijít na to kde je.


Už mám řádek který to způsobuje.

     <br>
     Opište prosím kód z obrázku. (Ochana proti robotům.) Je-li obrázek nečitelný, klikněte <a href="#" onclick="document.getElementById('captcha').src = '/secure/captcha.jpg?' + Math.random();"><b>zde</b></a>.
     <br>

když tam tohle neni tak se to zobrazí vždycky co s tím mám dělat???
3.14
Profil *
Takže problém jsem přesně lokalizoval, ale prosím aby mi to fakt někdo vysvětlil... pokud umažu to první <br> tak se kapča zobrazí pokaždý. Proč jako?


tak né no... <br> neni problém nevim jestli je to náhoda ale když to tam neni tak se ta pravděpodobnost že se kapča nezobrazí hodně snížila.


ale jak je tam to <br> tak se to stává mnohem častějc.
3.14
Profil *
Není to scriptem genetující obrázek. Nahradil jsem celý generátor kapči tímto jedoduchým kódem.

<?php
header ('Content-type: image/png');
$im = imagecreatetruecolor(200, 150);
imagepng($im);
?>

no a děje se to stejně.
3.14
Profil *
Oběvil Objevil jsem další zajímavost... pokud se obrázek nezobrazí, ale já změním velikost okna, tak se oběví objeví. :/ wtf co to je?

Moderátor Petr ZZZ: Objev je odvozen od jevu a proto se píše s j. :-)
juriad
Profil
3.14:
Vytvoř veřejně dostupnou živou ukázku. Máš potvrzeno, že se děje i někomu jinému? Jakou verzi prohlížeče používáš (doufám, že stabilní a ne něco, co má vyjít až za rok).
3.14
Profil *
juriad:
S tou živou ukázkou to bude problém trochu. Mám tam smarty a nenám kde bych to pustil veřejně... ale zkusim to vymyslet někde na nějakym freen hostingu. Neděje se to asi nikomu, nenarazil jsem na obdobnej problém a ani nevim jak to hledat v googlu... nevim co mám zadat žádnej popis chyby nic. Verzi požívám (včera jsem jí aktualizoval) firefox 33.0.2 ... staženej byl ze slunečnice nebo tak nějak... prostě to neni nic experimentálního.


dodávám že jsem to aktualizoval kvůli tomuhle problému, takže se to dělo i před tím.
rafej
Profil
Z tvého popisu mám dojem, že bys mohl mít problém v přepisu adres - mod rewrite. Zkus si zapnout logování přepisování adres a pořádně otestuj, jestli ten požadavek občas neskončí zacyklením nebo vypršením.
3.14
Profil *
rafej:
A jak mám zapnout logování přepisování adres prosím? :/


Ale to co píšete s tim vypršením to by mohlo bejt něco takovýho.. připadá mi jako by se ten obrázek chtěl načíst, ale pak se vzdá... stačí ho trochu jakoby "prošťouchnout" a pak se zobrazí... viz ta zajímavost s tím, že když trochu změním velikost okna tak se mi zobrazí.
rafej
Profil
Nepsal jsi, co používáš za server, ale pokud je to Apache tak:

v nastavení serveru/virtualhosts přidej:

u starší verze
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

nebo od verze 2.4 včetně
LogLevel alert rewrite:trace6

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: