Category Archives

42 Articles

PHP: Proč byste neměli spouštět session_start() automaticky na všech stránkách?

by Zdeněk Večeřa 0 Comments

Nejrůznější PHP tutoriály často radí, abyste na začátku skriptů zavolali session_start(). Bez něj totiž nemůžete pracovat se sessions. To je samozřejmě pravda. Často v návodech chybí důležité upozornění – sessions byste měli nastartovat pouze v případě, kdy s nimi opravdu potřebujete pracovat. Na grafech můžete vidět, jak se díky tomu sníží zátěž serveru, pokud se tím budete řídit.

PHP 8.1 změnilo zpracování SQL chyb, ve striktním režimu nově vyvolá výjimku

Až do PHP 8.0 bylo nastaveno výchozí reportování chyb mysqli_report() na stav MYSQLI_REPORT_OFF. To se změnilo s příchodem PHP 8.1.0, kde je výchozí nastavení kombinace MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT. Autoři PHP se tak rozhodli kvůli tomu, že databázové chyby jsou častý problém, které ovlivňuje běh webových aplikací – nyní se tedy programátoři webů budou muset poprat se všemi chybami.

Rozdíl mezi nastavím lze popsat následovně:

Instalace nejnovější verze Apache 2.4, PHP 8.2, MariaDB 10.11, Memcached a Xdebug na Windows 10 a 11

Nainstalujte si webový server Apache 2.4 se skriptovacím jazykem PHP 8.2 přímo na svůj počítač s Windows 10 a 11. K tomu si během pár vteřin přidejte databázový server MariaDB 10.11 Memcached.

A pro fajnšmekry tu je návod na „VirtualHost“, který využijete pro více (sub)domén na localhostu. Každá (sub)doména bude mít vlastní DocumentRoot“ a bude dostupná na samostatné adrese, například http://tronlaserarena.cz.localhost a http://devtea.cz.localhost.

Instalace nejnovější verze Apache 2.4, PHP 8.0, MariaDB 10.5 a Memcached na Windows 10

Nainstalujte si webový server Apache 2.4 se skriptovacím jazykem PHP 8.0 přímo na svůj počítač s Windows 10. K tomu si během pár vteřin přidejte databázový server MariaDB 10.5 Memcached.

A pro fajnšmekry tu je návod na „VirtualHost“, který využijete pro více (sub)domén na localhostu. Každá (sub)doména bude mít vlastní DocumentRoot“ a bude dostupná na samostatné adrese, například http://tronlaserarena.cz.h a http://devtea.cz.h.

POZOR: Už existuje novější návod na instalaci Apache 2.4, PHP 8.2, MariaDB 10.11 a Memcached na Windows 10 a 11.

PHP: Pozor na zákeřnou funkci filter_var() a FILTER_VALIDATE_INT. Provádíte validaci nulových hodnot (a nejen těch) správně?

by Zdeněk Večeřa 0 Comments

Chceme ověřit, jestli vstup od uživatele je opravdu jakákoliv hodnota integer. Očekáváme tedy celé záporné číslo, celé kladné číslo nebo nulu. Pokud pro validaci celočíselných hodnot (FILTER_VALIDATE_INT) používáme PHP funkci filter_var(), můžeme se při nevhodně použité podmínce dostat do problémů s nulou.

PhpStorm 2020: Jak vypnout otevírání zdrojových souborů v novém odlehčeném editoru „LightEdit“?

by Zdeněk Večeřa 0 Comments

Nová verze aplikace PhpStorm 2020.1 přinesla spoustu vylepšení a také odlehčený editor nazvaný LightEdit, který slouží pro rychlou úpravu zdrojových souborů. Editor se sice zobrazí bleskově, ale chybí mu pluginy, porovnání obsahu a další užitečné nástroje, na které jste zvyklí z plnohodnotného PhpStormu.

Vývojáři budou LightEdit nadále vylepšovat, pokud vám ale jeho současné funkce nedostačují (prakticky nic neumí) nebo nechcete čekat, můžete se vrátit k původnímu chování – otevírání zdrojových souborů v plnohodnotném PhpStormu.

Internet Explorer nezobrazuje JPG/JPEG obrázky s chybně nastaveným MIME typem

by Zdeněk Večeřa 0 Comments

Možná jste se setkali s problémem, kdy Internet Explorer 8-11 nezobrazil nějaký obrázek s příponou JPG, který byl vytvořený přes PHP. Pokud jste původní obrázek zpracovali přes PHP funkci imagecreatefromjpeg() a následně vytvořili nový obrázek pomocí imagejpeg(), tak vězte, že vytváříte soubor JPEG, nehledě na to, že jste mu dali příponu JPG.

Pokud navíc máte zakázáno očmuchávání MIME typu pomocí této hlavičky:

Jak přesměrovat web z HTTP na HTTPS a přidat WWW?

by Zdeněk Večeřa 0 Comments

Přesměrování všech požadavků z HTTP na HTTPS a přidání www lze snadno provést pomocí .htaccess souboru (Apache) s následujícím obsahem. Myslete na to, že je nejlepší řešení nejprve všechno přesměrovat z HTTP na HTTPS a až poté v dalším kroku přidat WWW.

Měli byste vědět, že uvedený postup vyžaduje také HSTS (HTTP Strict Transport Security, neboli vynucené HTTPS), takže pokud jej někdy v budoucnu budete chtít využít, budete aspoň připraveni.

Přesměrování tedy může vypadat nějak takto:

PHP: Jak pomocí mkdir() jednoduše vytvořit vnořený adresář? I když některý adresář v cestě zatím neexistujte

by Zdeněk Večeřa 1 Comment

Máte existující adresář /data/ a chcete v něm pomocí PHP vytvořit další dva adresáře (export/temp/)? Čili aby výsledná struktura vypadala nějak takto: /data/export/temp/

Zavolání funkce:

mkdir('/data/export/temp/')

zahlásí chybu, protože nedokáže vytvořit adresář „temp“ v adresáři „export“, který neexistuje. Potřebujete tedy zavolat funkci mkdir() se třetím parametrem „true“ (recursive), kterým říkáte, že chcete, aby funkce vytvořila všechny adresáře, které jsou v cestě uvedeny.