Myšlenka článků

Školení, která pořádám

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:

  1. Pole procházet konstrukcí foreach
  2. Převod pole na řetězec zajistí implode
  3. Inicializovat proměnné
  4. Pro proměnné zvenku používat $_POST a podobné
  5. Ošetřovat data zvenku používaná v SQL dotazech
  6. Společné konstrukce (např. připojení k databázi) psát na jednom místě
  7. Výstup skriptů posílat ve správném kódování
  8. Na serverech s více uživateli zakázat persistentní připojení k databázi
  9. Pro psaní pokusných skriptů lze používat PHP-cli
  10. Celý obsah souboru lze načíst funkcí file_get_contents
  11. Pro vkládané soubory používat koncovku .inc.php
  12. Pro unikátní data a jejich kontrolu používat unikátní klíče
  13. Pro výpis různých řetězců v závislosti na podmínce lze použít ternární operátor
  14. Získání počtu řádek v tabulce zajistí SELECT COUNT(*)
  15. Informaci o jazykové verzi uchovávat v URL
  16. INSERT INTO psát vždy se seznamem sloupců
  17. SQL dotazy neklást opakovaně (např. v cyklech)
  18. Hesla ukládat vždy zahashovaná
  19. Pro editaci a přidání záznamu používat stejný formulář
  20. Adresáře lze procházet funkcí glob
  21. Pro ukládání obrázků nefotografického charakteru nepoužívat formát JPG
  22. Ne všechny chyby je vhodné ošetřovat přímo v kódu
  23. Na místech se zvláštním významem některých znaků je nutné escapovat
  24. Na PHP 5 přejít co nejdřív
  25. Při návrhu databáze se řídit selským rozumem
  26. Různé jazykové verze vztahující se k datům v databázi je obvykle nejlepší ukládat do sloupců spolu s daty
  27. Sjednocení polí zajišťuje operátor +
  28. V MySQL se již od verze 3.23 dají používat transakce a cizí klíče
  29. Obsah řádku s maximální hodnotou lze snadno získat pomocí klauzule LIMIT
  30. Data, která nemají charakter parametru skriptu, předávat metodu POST
  31. U větších projektů jsou k nezaplacení šablony sloužící k oddělení PHP a HTML kódu
  32. Práci nutnou pro vypsání hierarchické struktury dat je lepší vykonat už v době ukládání
  33. Pokud skript většinu času jen na něco čeká, dá se čekat paralelně
  34. U vkládaného souboru si musíme být naprosto jisti jeho původem
  35. Soubory je lepší odkazovat jako kontakt.php než jako index.php?action=kontakt
  36. Pokud si funkce potřebuje uchovat hodnotu proměnné při opakovaných voláních, tak se proměnná deklaruje jako statická
  37. Od MySQL 4.1 lze uloženým datům určit kódování
  38. Bloky kódu je vhodné uzavírat do složených závorek
  39. Pro kontrolu pravopisu lze použít rozšíření Pspell
  40. Místo safe_mode používejte raději open_basedir
  41. Pro zkrácení HTML textu nejde použít substr
  42. I desktopové aplikace lze vyvíjet v PHP
  43. Pomocí name="volby[]" lze z formuláře předat pole
  44. K setřídění dat podle vlastního kritéria lze použít MySQL funkce FIELD
  45. Délka zadávaných hodnot se dá omezit atributem maxlength
  46. Zakažte session.use_trans_sid a po přihlášení zavolejte session_regenerate_id
  47. Počet položek ve skupinách lze zjistit pomocí GROUP BY
  48. Pro ukládání hodnot z pevné množiny slouží MySQL typ ENUM
  49. Česká dokumentace PHP je zastaralá
  50. Pro posílání datových souborů PHP skriptem použijte Apache direktivu AcceptPathInfo
  51. Velikost nahrávaných souborů je omezena PHP direktivami memory_limit, post_max_size a upload_max_filesize
  52. Překlad statických textů lze ukládat do databáze
  53. V knihovnách PEAR a PECL jsou k dispozici zajímavá rozšíření
  54. Editor SciTE je velice obratný
  55. Funkci očekávající pravdivostní parametr můžete předat řetězec popisující jeho význam
  56. Formulářové pole je vhodné kontrolovat u klienta i na serveru
  57. Obrázky je vhodné vždy uvádět s rozměry, které lze doplnit skriptem
  58. Na adresář se odkazujte vždy s koncovým lomítkem
  59. XML deklaraci je jistější vypisovat PHP kódem
  60. Pro načtení dat z číselníku se vyplatí napsat funkci
  61. Informace o výrazu podá print_r nebo var_dump
  62. Nepoužívejte eval
  63. Pro převod velikosti českých písmen je nutné nastavit locales nebo použít rozšíření MBString
  64. V PHP je spousta pozůstatků z minulosti, kterým je lepší se vyhnout
  65. Zaměřte se na optimalizaci algoritmů a ne na úspory v řádech nanosekund
  66. Jako oddělovač v Perlových regulárních výrazech používám ~
  67. Místo samostatné verze pro tisk použijte jiný styl pro tisková zařízení
  68. Do práce s referencemi se dá snadno zamotat
  69. Pro kontrolu hodnoty a typu se dá použít operátor ===
  70. Při nedostupném připojení k databázi pošlete HTTP hlavičku 503
  71. Přihlašovat uživatele pomocí hlavičky WWW-Authenticate má několik nevýhod
  72. Při lokálním psaní kódu se v cizím kódu snadněji zorientujete
  73. 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
  74. Správnost XML dokumentu lze snadno ověřit rozšířením DOM
  75. Pro detekci chyb je možné použít proměnnou $php_errormsg nebo funkci set_error_handler
  76. Escapovat by se mělo právě to, co je potřeba
  77. Příslušnost do seznamu lze ověřit pomocí ||, in_array, preg_match nebo switch
  78. Pro kontrolu číselnosti lze použít funkci is_numeric
  79. Pro práci s datem se hodí funkce strtotime
  80. Referencí lze předávat pouze proměnné, vytvořené objekty a funkce vracející referenci
  81. Místo MySQL příkazu REPLACE je lepší používat ON DUPLICATE KEY UPDATE
  82. Pokud nepotřebujeme ihned ukládat všechna data, lze použít mysql_unbuffered_query
  83. Uživatelský prožitek lze podstatně vylepšit správným použitím AJAXu
  84. Pro převod HTML na XHTML lze použít rozšíření Tidy
  85. Pro dotaz do jiné databáze lze použít databaze.tabulka
  86. Datumy je vhodné ukládat do sloupce typu DATE
  87. Pro cookies ze serverů třetích stran je nutné nastavit P3P
  88. Zakázání allow_url_fopen nás od vzdáleného vykonání kódu neuchrání
  89. Pro sanity-checks se hodí funkce assert
  90. Zdrojový kód lze skrýt např. pomocí rozšíření BCompiler
  91. MySQL 5.0 zvládá triggery, pohledy a uložené procedury
  92. Stejný kód v různých adresářích může zajistit include "../data.php"
  93. Stránky může být lepší číslovat odzadu
  94. Pokud si MySQL myslí, že jsou uložená data v jiném kódování, je nutné je převést skriptem
  95. Pomocí rozšíření Runkit lze předefinovat stávající funkce a dělat další kouzla
  96. Nedefinované, null a nepravdivé proměnné nejsou totéž
  97. Pro prohlížení aktuální PHP dokumentace se dá použít Livedocs
  98. Do hlavičky Location nelze podle normy vkládat odkaz na část dokumentu
  99. PHP 6 vzbuzuje zároveň naděje i obavy
  100. Data uživatelů vypisovaná na stránky je nezbytně nutné ošetřovat
  101. Operátory porovnání fungují s různými typy
  102. Nejvýznamnější novinkou v PHP 5.1 je PDO
  103. Pokud je na serveru zakázaná direktiva expose_php, zjišťuje se přítomnost PHP těžko
  104. Pro zobrazení průběhu nahrávání souborů je nutné aplikovat patch
  105. PHP 6 nejspíš způsobí velký třesk
  106. PHP dokáže být záludný jazyk, jehož znalosti si můžete otestovat
  107. Pokud potřebujete uživateli ihned poslat část stránky, použijte ob_flush i flush
  108. Pro uložení nákupního košíku se hodí session proměnná typu pole
  109. Nabídněte svůj web ve verzi pro stažení
  110. Na co si dát pozor, pokud přecházíte na UTF-8
  111. Pokud má formulář zpracovat aktuální skript, použijte action=""
  112. I uživatelské jméno se dá testovat už u klienta
  113. Nešetřete klávesnici psaním nepřenositelného kódu
  114. Ukládat soubory od uživatele je potřeba nadmíru pečlivě
  115. Vyčleňte každému projektu vlastní databázi
  116. Pro vlastní potřeby odřádkujte vypisovaný HTML kód
  117. Používejte stejného databázového uživatele na vývojovém i ostrém serveru
  118. Komentujte kód standardními prostředky
  119. Nebojte se používat nové funkce
  120. Total Commander je velice výkonný správce souborů
  121. Pokud nemůžete ovlivnit konfiguraci serveru, můžete magic_quotes_gpc vypnout i ve skriptu
  122. V ČR se stále používá především PHP 4.3
  123. Pro hledání si v prohlížeči můžete přiřadit klávesovou zkratku
  124. Nepoužívejte funkci strip_tags pro ošetření dat od uživatele
  125. Posloupnost operací ve webových aplikacích se neprovádí atomicky
  126. Pro urychlení odezvy serveru stačí poslat některé HTTP hlavičky
  127. I v MySQL lze nasimulovat sekvence
  128. Při použití e-mailového formuláře dejte pozor na spammery
  129. IP adresu neukládejte jako číslo
  130. Průnik více období lze vypočítat už na úrovni databáze
  131. MySQL funkce CASE se dá použít např. pro výpočet celkové ceny zboží v košíku
  132. Heslo pro připojení k databázi lze umístit do direktivy mysql.default_password
  133. Je potřeba myslet i na návštěvníky z jiných časových pásem
  134. MySQL typ timestamp lze použít pro uchování data poslední modifikace záznamu
Jakub Vrána, Dobře míněné rady, 22.2.2006, diskuse: 6 (nové: 0)

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.

avatar © 2005-2024 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.