Myšlenka článků
Ve většině článků publikovaných na tomto serverů se snažím dávat dobře míněné rady a popisovat důvody, které mě k mému názoru vedou. Když se vypustí omáčka okolo, dá se jejich myšlenka shrnout obvykle do jedné věty, byť často s nějakým zjednodušením. Berte tedy prosím tento seznam jako podstatu toho, co jsem se zatím snažil říct:
- Pole procházet konstrukcí foreach
- Převod pole na řetězec zajistí implode
- Inicializovat proměnné
- Pro proměnné zvenku používat $_POST a podobné
- Ošetřovat data zvenku používaná v SQL dotazech
- Společné konstrukce (např. připojení k databázi) psát na jednom místě
- Výstup skriptů posílat ve správném kódování
- Na serverech s více uživateli zakázat persistentní připojení k databázi
- Pro psaní pokusných skriptů lze používat PHP-cli
- Celý obsah souboru lze načíst funkcí file_get_contents
- Pro vkládané soubory používat koncovku
.inc.php
- Pro unikátní data a jejich kontrolu používat unikátní klíče
- Pro výpis různých řetězců v závislosti na podmínce lze použít ternární operátor
- Získání počtu řádek v tabulce zajistí
SELECT COUNT(*)
- Informaci o jazykové verzi uchovávat v URL
- INSERT INTO psát vždy se seznamem sloupců
- SQL dotazy neklást opakovaně (např. v cyklech)
- Hesla ukládat vždy zahashovaná
- Pro editaci a přidání záznamu používat stejný formulář
- Adresáře lze procházet funkcí glob
- Pro ukládání obrázků nefotografického charakteru nepoužívat formát JPG
- Ne všechny chyby je vhodné ošetřovat přímo v kódu
- Na místech se zvláštním významem některých znaků je nutné escapovat
- Na PHP 5 přejít co nejdřív
- Při návrhu databáze se řídit selským rozumem
- Různé jazykové verze vztahující se k datům v databázi je obvykle nejlepší ukládat do sloupců spolu s daty
- Sjednocení polí zajišťuje operátor +
- V MySQL se již od verze 3.23 dají používat transakce a cizí klíče
- Obsah řádku s maximální hodnotou lze snadno získat pomocí klauzule LIMIT
- Data, která nemají charakter parametru skriptu, předávat metodu POST
- U větších projektů jsou k nezaplacení šablony sloužící k oddělení PHP a HTML kódu
- Práci nutnou pro vypsání hierarchické struktury dat je lepší vykonat už v době ukládání
- Pokud skript většinu času jen na něco čeká, dá se čekat paralelně
- U vkládaného souboru si musíme být naprosto jisti jeho původem
- Soubory je lepší odkazovat jako
kontakt.php
než jakoindex.php?action=kontakt
- Pokud si funkce potřebuje uchovat hodnotu proměnné při opakovaných voláních, tak se proměnná deklaruje jako statická
- Od MySQL 4.1 lze uloženým datům určit kódování
- Bloky kódu je vhodné uzavírat do složených závorek
- Pro kontrolu pravopisu lze použít rozšíření Pspell
- Místo safe_mode používejte raději open_basedir
- Pro zkrácení HTML textu nejde použít substr
- I desktopové aplikace lze vyvíjet v PHP
- Pomocí
name="volby[]"
lze z formuláře předat pole - K setřídění dat podle vlastního kritéria lze použít MySQL funkce FIELD
- Délka zadávaných hodnot se dá omezit atributem maxlength
- Zakažte session.use_trans_sid a po přihlášení zavolejte session_regenerate_id
- Počet položek ve skupinách lze zjistit pomocí GROUP BY
- Pro ukládání hodnot z pevné množiny slouží MySQL typ ENUM
- Česká dokumentace PHP je zastaralá
- Pro posílání datových souborů PHP skriptem použijte Apache direktivu AcceptPathInfo
- Velikost nahrávaných souborů je omezena PHP direktivami memory_limit, post_max_size a upload_max_filesize
- Překlad statických textů lze ukládat do databáze
- V knihovnách PEAR a PECL jsou k dispozici zajímavá rozšíření
- Editor SciTE je velice obratný
- Funkci očekávající pravdivostní parametr můžete předat řetězec popisující jeho význam
- Formulářové pole je vhodné kontrolovat u klienta i na serveru
- Obrázky je vhodné vždy uvádět s rozměry, které lze doplnit skriptem
- Na adresář se odkazujte vždy s koncovým lomítkem
- XML deklaraci je jistější vypisovat PHP kódem
- Pro načtení dat z číselníku se vyplatí napsat funkci
- Informace o výrazu podá print_r nebo var_dump
- Nepoužívejte eval
- Pro převod velikosti českých písmen je nutné nastavit locales nebo použít rozšíření MBString
- V PHP je spousta pozůstatků z minulosti, kterým je lepší se vyhnout
- Zaměřte se na optimalizaci algoritmů a ne na úspory v řádech nanosekund
- Jako oddělovač v Perlových regulárních výrazech používám
~
- Místo samostatné verze pro tisk použijte jiný styl pro tisková zařízení
- Do práce s referencemi se dá snadno zamotat
- Pro kontrolu hodnoty a typu se dá použít operátor ===
- Při nedostupném připojení k databázi pošlete HTTP hlavičku 503
- Přihlašovat uživatele pomocí hlavičky WWW-Authenticate má několik nevýhod
- Při lokálním psaní kódu se v cizím kódu snadněji zorientujete
- Pro práci s UTF-8 řetězci používejte rozšíření Iconv nebo MBString, v regulárních výrazech potom modifikátor
u
- Správnost XML dokumentu lze snadno ověřit rozšířením DOM
- Pro detekci chyb je možné použít proměnnou $php_errormsg nebo funkci set_error_handler
- Escapovat by se mělo právě to, co je potřeba
- Příslušnost do seznamu lze ověřit pomocí ||, in_array, preg_match nebo switch
- Pro kontrolu číselnosti lze použít funkci is_numeric
- Pro práci s datem se hodí funkce strtotime
- Referencí lze předávat pouze proměnné, vytvořené objekty a funkce vracející referenci
- Místo MySQL příkazu REPLACE je lepší používat ON DUPLICATE KEY UPDATE
- Pokud nepotřebujeme ihned ukládat všechna data, lze použít mysql_unbuffered_query
- Uživatelský prožitek lze podstatně vylepšit správným použitím AJAXu
- Pro převod HTML na XHTML lze použít rozšíření Tidy
- Pro dotaz do jiné databáze lze použít
databaze.tabulka
- Datumy je vhodné ukládat do sloupce typu DATE
- Pro cookies ze serverů třetích stran je nutné nastavit P3P
- Zakázání allow_url_fopen nás od vzdáleného vykonání kódu neuchrání
- Pro sanity-checks se hodí funkce assert
- Zdrojový kód lze skrýt např. pomocí rozšíření BCompiler
- MySQL 5.0 zvládá triggery, pohledy a uložené procedury
- Stejný kód v různých adresářích může zajistit
include "../data.php"
- Stránky může být lepší číslovat odzadu
- Pokud si MySQL myslí, že jsou uložená data v jiném kódování, je nutné je převést skriptem
- Pomocí rozšíření Runkit lze předefinovat stávající funkce a dělat další kouzla
- Nedefinované, null a nepravdivé proměnné nejsou totéž
- Pro prohlížení aktuální PHP dokumentace se dá použít Livedocs
- Do hlavičky Location nelze podle normy vkládat odkaz na část dokumentu
- PHP 6 vzbuzuje zároveň naděje i obavy
- Data uživatelů vypisovaná na stránky je nezbytně nutné ošetřovat
- Operátory porovnání fungují s různými typy
- Nejvýznamnější novinkou v PHP 5.1 je PDO
- Pokud je na serveru zakázaná direktiva expose_php, zjišťuje se přítomnost PHP těžko
- Pro zobrazení průběhu nahrávání souborů je nutné aplikovat patch
- PHP 6 nejspíš způsobí velký třesk
- PHP dokáže být záludný jazyk, jehož znalosti si můžete otestovat
- Pokud potřebujete uživateli ihned poslat část stránky, použijte ob_flush i flush
- Pro uložení nákupního košíku se hodí session proměnná typu pole
- Nabídněte svůj web ve verzi pro stažení
- Na co si dát pozor, pokud přecházíte na UTF-8
- Pokud má formulář zpracovat aktuální skript, použijte
action=""
- I uživatelské jméno se dá testovat už u klienta
- Nešetřete klávesnici psaním nepřenositelného kódu
- Ukládat soubory od uživatele je potřeba nadmíru pečlivě
- Vyčleňte každému projektu vlastní databázi
- Pro vlastní potřeby odřádkujte vypisovaný HTML kód
- Používejte stejného databázového uživatele na vývojovém i ostrém serveru
- Komentujte kód standardními prostředky
- Nebojte se používat nové funkce
- Total Commander je velice výkonný správce souborů
- Pokud nemůžete ovlivnit konfiguraci serveru, můžete magic_quotes_gpc vypnout i ve skriptu
- V ČR se stále používá především PHP 4.3
- Pro hledání si v prohlížeči můžete přiřadit klávesovou zkratku
- Nepoužívejte funkci strip_tags pro ošetření dat od uživatele
- Posloupnost operací ve webových aplikacích se neprovádí atomicky
- Pro urychlení odezvy serveru stačí poslat některé HTTP hlavičky
- I v MySQL lze nasimulovat sekvence
- Při použití e-mailového formuláře dejte pozor na spammery
- IP adresu neukládejte jako číslo
- Průnik více období lze vypočítat už na úrovni databáze
- MySQL funkce CASE se dá použít např. pro výpočet celkové ceny zboží v košíku
- Heslo pro připojení k databázi lze umístit do direktivy mysql.default_password
- Je potřeba myslet i na návštěvníky z jiných časových pásem
- MySQL typ timestamp lze použít pro uchování data poslední modifikace záznamu
Diskuse
mrako:
Tak teda klobuk (v mojom pripade, kuklu :)) dole. Genialna vec, jednoducha (clovek zisti az potom ako jednoducha, ked to vidi)klevo:
toto je rozhodne najlepsi blog ohlade PHP v CR/SR, klubok dolu.Tibor:
Dobrý nápad - takéto myšlienky... To človek hneď skôr nájde to čo hľadá...Borek:
Výborný seznam, měla by pro něj být vyhrazena samostatná stránka. Díky za poučný blog.brwm:
Ked je autor blogu spoluautorom php dokumentacie, tak sa necudujte, ze je to najkvalitnejsi blog v sr/sr ohladom PHP. Ale inak fakt. Klobuk dole.Honza Odvárko:
Možná by nebylo od věci takovou myšlenku uchovávat u každého článku a pak ji zobrazit třeba pidipísmem pod titulkem.
Diskuse je zrušena z důvodu spamu.

