Autor | Zpráva | ||
---|---|---|---|
tester Profil * |
#1 · Zasláno: 10. 3. 2016, 01:44:25
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 |
#2 · Zasláno: 10. 3. 2016, 04:25:12
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; header ('Content-Type: image/png'); die; Tak konzola "sítě" ukazuje hlavičku typu text/html. |
||
Keeehi Profil |
#4 · Zasláno: 10. 3. 2016, 09:36:36
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 * |
#6 · Zasláno: 10. 3. 2016, 12:55:21
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. |
||
Časová prodleva: 9 let
|
0