Autor Zpráva
tester
Profil *
Dá se script upravit tak aby zobrazil hlášku pokud nepodporuje GD? Zkoušel jsem něco takového
$gdi = gd_info();
if (!is_array($gdi))
  die("Sorry. No support for GD. No image generated.");

ale nezobrazí se nic. Vypadá to jako by se po tom zavolání gd_info() znemožnilo odesílat html kód.
Kubo2
Profil
Ak GD nie je prítomná, neexistuje ani funkcia gd_info(), takže také volanie vyhodí fatal error o tom, že tá funkcia neexistuje a tebe sa nič ďalšie nezobrazí, lebo máš vypnuté zobrazovanie chýb. Zistiť, či je GD prítomná, by malo ísť volaním extension_loaded('gd'), viď PHP manuál.
tester
Profil *
Kubo2:
JJ, tím to bude. Až tu svou webovku rozjedu tak ty hlášky zapnu abych vše překontroloval. Dík za radu!


Ještě jeden problém. Zkouším spustit vzorový kód:

 header ('Content-Type: image/png');
$im = @imagecreatetruecolor(120, 20)
      or die('Cannot Initialize new GD image stream');
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);
imagepng($im);
imagedestroy($im);
die();

Samostatně to funguje, ale když ho vložím do metody tak ne. Nevíš čím by to mohlo být?

// TADY TO JELO
if ( !extension_loaded('gd'))
  die("Sorry. No support for GD. No image generated.");

// TADY TO JELO
$p=new VerifyImage();
// TADY TO NEJEDE - odsud už nelze zobrazit žádný text

Celá třída s obrázkem je tady
paste.ofcode.org/he3jBKchTCRyeauAEX7E3m

Pokud do konstruktoru na řádek 37 vložím testovací kód ten co je výše tak se obrázek nezobrazí. Když tam dám
echo "NECO";die; 
Když dám jen odeslat hlavičku typu png

header ('Content-Type: image/png');
die;

Tak konzola "sítě" ukazuje hlavičku typu text/html.
Keeehi
Profil
tester:
Až tu svou webovku rozjedu tak ty hlášky zapnu abych vše překontroloval.
Dělá se to přesně naopak, když vyvíjíš na lokálním stroji, měl bys mít chybové hlášky vždy zapnuté. Naopak na veřejném webu tyto hlášky mohou být i bezpečnostním rizikem. Proto vy tam měly být vždy vypnuté.
tester
Profil *
S tímhle označením se shodneme. Bezpečnostní riziko mi přijde přesnější označení než "nebezpečí". Už to skoro mám. Tak jedna chyba byla že constructor byl private. Na co jsem myslel když jsem tu třídu psal to by mě zajímalo...


Jo a hlášky nemám vypnuté ani tak v php jako přímo ve scriptu

error_reporting(0);

Proto se nic nezobrazovalo. Je to script na zobrazení obrázku captcha. A teď jsem našel skvělou pomůcku pro ladění i když je to zobrazování někde v kódu vypnuté, stačí napsat:
print_r(error_get_last());
Martin2
Profil *
tester:
Jo a hlášky nemám vypnuté ani tak v php jako přímo ve scriptu
Funkci error_reporting bys vůbec neměl používat. U sebe doma si nech zobrazit všechno, tedy E_ALL, na produkčním serveru zase vůbec nic, tam chybová hlášení patří jen do logu – cizí návštěvníci podrobnosti o chybě znát nemají.

„print_r(error_get_last());“
Stejný případ, výpis chyb přímo v kódu nemá co pohledávat.

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: