ARCHIV |
|||||||||||||||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
PHP (30) - Počitadlo pomocí souborůDnes se podívame na to, jak umí PHP soubory na serveru přímo vytvářet. S praktickou ukázkou počitadla přístupů. PHP umí soubory nejen číst a vkládat do skriptů, ale rovněž
vytvářet. To může být výhodné, pokud potřebujeme uložit nějaké
informace na straně serveru nebo pokud vytváříme aplikaci, která ke své
činnosti potřebuje zapisovat do souborového systému. Pro vytváření a pohyb v souborech slouží v PHP sada příkazů. Příkaz
fopen
soubor otevře, fread
z něj přečte data, fwrite do
něj data zapíše
a fclose
jej zavře. Funkce file_exists
zjistí, zda daný soubor
existuje. Tady by byla všechna další teorie nudná, takže si pojďme
vytvořit něco praktického. Součástí našeho webu může být malý textový soubor, který bude obsahovat údaj o počtu shlédnutí naší stránky - takové primitivní počítadlo. Tady je kód, který jej zrealizuje: <?
Skript sám je dobře čtivý, musíte si ovšem dát pozor na některé
drobnosti. Především jsme jako název souboru pro uložení počitadla
použili konstantu - to je velmi rozumné, protože časem třeba můžeme
chtít umístění souboru změnit a nikomu by se nechtělo přepisovat jeho
název na mnoha místech. Z programátorských fintiček jsme ještě použili preinkrementaci (++$stav) a automatickou expanzi proměnné
(zaznamenáno $stav přístupů). A teď k práci se souborem: V zásadě mohou existovat dvě situace: Celý skript se buď spouští
poprvé, nebo již poněkolikáté. Pakliže se spouští prvně, nezbývá než
soubor s počitadlem vytvořit a výchozí stav nastavit na nulu, pokud již
počítací soubor existuje, načteme z něj aktuální stav počitadla pomocí
funkce fread. Funkce fopen přijímá povinný parametr mode, který může
nabývat následujících hodnot (zvýraznil jsem ty, které si pletu, raději
bych uvítal dvoupísmenné hodnoty):
Ještě jednou se zmíním o právech k souborům: Na úspěšné vykonání
funkce fopen musíte mít k vytvářenému nebo otevíranému souboru
dostatečná práva. Většinou je mít nebudete na komerčních webhostinzích,
protože správci nedávají uživateli, pod nímž běží PHP příliš rozsáhlá
práva. Takže, na Linuxsoftu by se Vám například vytvoření souboru
nepovedlo. Pokud byste ale měli na serveru účet, mohli byste si soubor
počitadla vytvořit ručně. Ani to Vám však nemusí fungovat, pokud nejste
uživatelem, který spouští PHP. Já jsem například musel aby příklad
fungoval soubor nejprve vytvořit, a pak změnit jeho práva tak, aby do
něj mohl zapisovat a číst z něj kdokoli. A ještě něco: Pokud požadujete otevřít soubor například v režimu r+
a nemáte k tomu práva, PHP nahlásí neúspěch a nepokusí se otevřít
soubor v žádném jiném režimu (třeba, jen čtení). Myslete na to. Pozn.: Stav počitadla nebude
souhlasit s číslem určujícím počet shlédnutí tohoto článku. Tam je
použita odlišná filozofie. Možná vás napdane, co by se stalo, kdyby se do souboru pokusili přistupovat dva uživatelé najednou. V takovém případě by naše jednoduché počitadlo mohlo selhat. V praxi se v takovém případě nasazuje systém zamykání souborů, který se v PHP realizuje příkazem flock.
Soubory obsahující dataČastou úlohou související se zpracováním souborů je vytáhnout z nich data (třeba data, která se budou vkládat do databáze). PHP přímo podporuje zpracování souborů s hodnotami oddělenými středníky. Máte-li třeba následující soubor: Petr;Zajíc;1. máje
6;Liberec
můžete jej rozsekat na jednotlivé hodnoty pomocí volání funkce fgetcsv. Následující ukázka to ozřejmí: Pozn.: Pakoměřice skutečně existují. <?
Příkaz fgetcsv načte řádek a vrátí jej jako pole položek $data. Ta
následně zobrazíme pomocí funkce foreach. Fgetcsv může obsahovat
nepovinný třetí parametr, který specifikuje jiný oddělovač (třeba
tabelátor, středník a podobně). Pozn.: Většina databází má vlastní
rychlý způsob načítání textových souborů do tabulek, takže to tvrzení v
úvodu berte s rezervou. Další možnostiZpracování souborů v PHP zahrnuje daleko více. Za určitých okolností
je možné například:
My se v dalším díle našeho seriálu zaměříme na to, jak nám může PHP pomoci při kopírování souborů na server nebo při stahování souborů ze serveru.
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 (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 (91) - php.ini potřetí a naposledy 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 |