ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
PHP (91) - php.ini potřetí a naposledyJak se dají nastavit sessions, zobrazování chyb a upload souborů. Dnes dokončíme zamyšlení nad konfiguračními volbami v PHP. Rovněž si ukážeme, že něco málo lze dělat i v případě, kdy se musíme spokojit s přednastavenou konfigurací.
SessionsV díle o
session proměnných jsme si vysvětlili, že identifikátor
session může být stránce předán buď pomocí cookies, nebo pomocí
parametru v URL. Jedno i druhé má své pro a proti a obojí jde vypnout.
Abych to trochu upřesnil: použití cookies pro přenos identifikátoru
session se zapíná a vypíná konfigurační volbou session.use_cookies. Pokud je to
povoleno, ukládají se identifikátory session jako cookies. Nevýhoda
tohoto přístupu k problematice spočívá v tom, že browser musí mít
povoleno přijímat cookies, jinak zkrátka nebudou session fungovat.
Výhoda je ta, že to je mnohem bezpečnější než posílat identifikátory
session v URL. Pozn.: Uvedené chování si můžete
vyzkoušet například tady na Linuxsoftu. Pokud zakážete přijímat
cookies, nebudete se moci přihlásit do svého profilu. Pakliže selže uložení identifikátoru session, má server dvě možnosti:
O tom, co se ve skutečnosti stane, rozhoduje nastavení konfigurační
volby session.use_only_cookies.
Pokud používá server pro přenos identifikátoru session pouze cookies, nastavení session
selže. Pokud ne, může nastavení jiné konfigurační volby, a sice session.use_trans_sid způsobit, že
PHP přiřadí ID session do URL. Přiřazení identifikátoru session jako
parametru do URL má jednu podstatnou výhodu - bude to fungovat vždy, i
když budou cookies vypnuté. Má to taky jednu podstatnou nevýhodu - není
to vůbec bezpečné. Jestliže je totiž ID session posláno v URL, obdržíte
URL podobné tomuto:
http://www.server.cz/stranka.php?parametr=hodnota&PHPSESSID=[identifikátor
session]. Tedy k session se může připojit kdokoli, kdo nějak zachytí
její identifikátor - vůbec to nemusí být ten, kdo session spustil (!) Z tohoto důvodu bývá většinou posílání session v URL na serverech
zakázáno. A mimochodem, pokud musí PHP generovat URL s více než jedním
parametrem, použije k oddělení parametrů takovou sekvenci znaků, která
je nastavena v php.ini jako arg_separator.output. Pokud jste seriál
podrobně sledovali, pravděpodobně víte, že výchozí nastavení ("&")
může generovat nevalidní dokumenty, a že správné nastavení je
"&". Pakliže tedy budete ověřovat validitu stránek používající
sessions a přenášející sessions v URL a budete mít v dokumentu chyby
"ampersands in URLs", je to pravděpodobně ten důvod.
Error_reportingNásledující dotaz pochází od jednoho čtenáře: Ptal se mě, proč
následující skript: echo
$_GET["cosi"]; pokud se volá bez předání proměnné "cosi" na jeho domácím počítači
skončí hláškou "Notice: Undefined index", zatímco v práci normálně
proběhne. Odpověď je prostá, závisí to na nastavení úrovně chybových
hlášení, a to se opět děje pomocí php.ini. Existují konstanty, pomocí
nichž se dá nastavit, která úroveň chyb se bude hlásit. Takže můžete
například hlásit závažné chyby, varování, poznámky, chyby kompilace a
podobně. Více se o tom dozvíte v manuálu k PHP na stránce, věnované
funkci error_reporting.
O typech chyb jsme rovněž mluvili v díle o
chybách. Příjemné je vědět, že pomocí funkce error_reporting lze v každém
skriptu zakázat či povolit zobrazování určitých chyb. Nemusíte tedy
kvůli tomu používat funkci ini_set. Ukázku by šlo přepsat tak, aby
nevracela upozornění na neinicializovanou proměnnou pomocí
následujícího kódu: error_reporting(0); S používáním chybových hlášení ve skriptech souvisí ještě jeden
zajímavý problém, vlastně dva:
Převážně z těchto dvou důvodů lze vypnout zobrazování chyb pomocí
konfigurační direktivy display_errors, a zapnout naopak protokolování
chyb pomocí související direktivy log_errors. post_max_sizeKonečně ještě jeden tip k přenášení dat pomocí formulářů.
Konfigurační volba post_max_size určuje, kolik se maximálně smí přenést
dat pomocí formulářů zpracovávaných metodou POST. Jelikož jsme si ukázali,
že pomocí formulářů lze přenášet na server i soubory, ovlivňuje tato
volba i maximální velikost souborů, které je možné uploadovat (společně
s volbou upload_max_filesize). Znát něco takového může být užitečné ze
dvou důvodů:
Možná si říkáte, že kromě odesílání souborů to k ničemu není.
Existují však aplikace, které skutečně kvanta dat ve formulářích
odesílají. Tak například PHPmyAdmin umožňuje pomocí formuláře
uploadovat definici databáze, nebo rovněž databázová data. To skutečně
může narůst na několik MB a možná byste marně pátrali po příčině, proč
to nejde nahrát na server.
Bezpečnost předevšímVe třech posledních dílech jsme se podívali na některé běžnější
volby jazyka PHP. Zejména na ty, které budou zajímat programátory,
protože přímo ovlivňují běh skriptů nebo mohou způsobit, že skript
někde běží a jinde ne. To však neznamená, že nyní budete schopni
nastavit php.ini tím nejlepším způsobem. Abyste uměli nastavit php.ini
"správně", museli byste se zabývat přinejmenším ještě následujícími
věcmi:
Pozn.:Murphyho zákon přitom
stanoví, že u jednoznačných voleb dojde k situaci, kdy každá polovina
uživatelů bude chtít přesně opačné nastavení. Neboli, kvalitní instalace a nastavení php (včetně php.ini) jde nad rámec tohoto seriálu a v praxi by měla být svěřena kvalifikovanému správci. My příště opustíme téma nastavování php a zamyslíme se nad tím, zda a jak se dá PHP použít k něčemu jinému než ke tvorbě internetových stránek.
Související články
Předchozí Celou kategorii (seriál) Další
PHP (1) - Historie a budoucnost
PHP (2) - Jak to funguje PHP (3) - Instalace PHP (4) - Základy syntaxe PHP (5) - Příkaz Echo; formátování kódu PHP (6) - Typy proměnných PHP (7) - Pole PHP (8) - Výrazy, konstanty, inkrementace PHP (9) - Přetypování proměnných PHP (10) - Logické výrazy a operátory PHP (11) - Operátory porovnání; priorita operátorů PHP (12) - Podmínky PHP (13) - Příkazy cyklu PHP (14) - Cyklus for PHP (15) - Funkce PHP (16) - Vyrobme si kalendář PHP (17) - Dokončujeme kalendář PHP (18) - Funkce pro práci s poli PHP (19) - Objekty PHP (20) - Objekty podruhé PHP (21) - Vkládání souborů PHP (22) - Regulární výrazy PHP (23) - Neztraťte se ve funkcích PHP (24) - Pracujeme s formuláři PHP (25) - Formuláře - nikomu nevěřte PHP (26) - Formuláře na sto způsobů PHP (27) - Příklady na formuláře PHP (28) - Chybovati je lidské PHP (29) - Soubory a adresáře PHP (30) - Počitadlo pomocí souborů PHP (31) - Upload a download souborů PHP (32) - Příklad na BLOG PHP (33) - HTTP hlavičky PHP (34) - Úvod do databází PHP (35) - Uložení dat v databázi PHP (36) - Připojujeme se k MySQL PHP (37) - Tvorba tabulek v MySQL PHP (38) - Dolujeme data z MySQL PHP (39) - Zobrazujeme a stránkujeme data PHP (40) - PHP a vkládání záznamů do databází PHP (41) - Měníme data v databázích PHP (42) - Odstraňujeme databázová data PHP (43) - MySQL rychleji a rychleji PHP (44) - MySQL ještě rychleji PHP (45) - Jsou data v databázi v bezpečí? PHP (46) - Importujeme data do databáze PHP (47) - Exportujeme data PHP (48) - Práce s binárními daty (BLOB) PHP (49) - Kam kráčíš, MySQL? PHP (50) - Ověřování uživatelů PHP (51) - Přenos dat mezi stránkami PHP (52) - Cookies PHP (53) - Sessions PHP (54) - Dodržování webových standardů PHP (55) - Odesílání e-mailů PHP (56) - Tisk a PDF PHP (57) - XML PHP (58) - XML lépe a radostněji PHP (59) - zapisujeme XML PHP (60) - Rozsáhlejší projekty 1. PHP (61) - Rozsáhlejší projekty 2. PHP (62) - Rozsáhlejší projekty 3. PHP (63) - Rozsáhlejší projekty 4. PHP (64) - Ladění kódu PHP (65) - Ladění kódu 2. PHP (66) - PHP debugger PHP (67) - Zdroje informací o PHP PHP (68) - Stavíme portál PHP (69) - Stavíme portál 2. PHP (70) - Registrace uživatelů na portálu PHP (71) - Přihlašování uživatelů na portál PHP (72) - Hrátky s uživateli PHP (73) - Frontend a backend PHP (74) - Administrátorské rozhraní portálu PHP (75) - Pokračujeme na portále PHP (76) - Zobrazujeme data na portále PHP (77) - Portál, databáze a relace PHP (78) - Informační obsah portálu PHP (79) - Triky s formuláři a ergonomie webu PHP (80) - Administrace diskografie hudebního portálu PHP (81) - Uživatel versus programátor PHP (82) - zabezpečení vstupů formulářů PHP (83) - Ukládání textů písní na hudebním portále PHP (84) - Ještě k registraci PHP (85) - ukládání souborů do databáze na portálu PHP (86) - zobrazení dat a stahování soborů pro registrované PHP (87) - finišujeme portál PHP (88) - provoz ve Windows PHP (89) - cesta do hlubin php.ini PHP (90) - Poťouchlé konfigurační volby PHP (92) - funkce pro interakci s operačním systémem PHP (93) - příkazový řádek PHP (94) - GUI PHP (95) - GUI podruhé PHP (96) - (ne)bezpečné PHP PHP (97) - bezpečnost ještě jednou PHP (98) - PHP 5. PHP (99) - Budoucnost PHP PHP (100) - Závěr PHP (101) - Apríl: Příklady z praxe php rewrite Byte order mark a PHP Předchozí Celou kategorii (seriál) Další Ke stažení jako HTML nebo jako PDF.
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |