K tomu, abychom mohli vytvářet, mazat, zobrazovat soubory i složky musíme využít souborové (filesystemové) funkce. Práce s těmito funkcemi je opravdu jednoduchá a ukážeme si ji na příkladech.
fopen( soubor, mód )
Pomocí této funkce můžeme vytvořit nový nebo otevřít již existující soubor na pevném disku počítače nebo stránku pomocí http protokolu. S identifikátorem (deskriptorem), který vrátí tato funkce v případě úspěchu, budeme pracovat i v dalších funkcích. V případě neúspěchu bude vrácena hodnota FALSE.
Tato funkce má dva parametry:
Pokud budeme chtít vytvářet soubory a složky, měli bychom mít také nastavena dostatečná práva na disk. Při vytváření souborů a složek potřebujeme právo write (zápis). Většina poskytovatelů má nastavena práva pouze na čtení a práva na zápis si musíme nastavit sami. Učiníme tak na platformě Linux (Unix,...) nastavením patřičných práv (Chmod) na vyhovující hodnotu. Na platformě Windows nastavíme na NTFS disku nastavením patřičných práv pro skupinu Everyone.
Příklad:
// Do proměnné $fp uloží identifikátor na otevřený soubor "test.txt". $fp = fopen("text.txt","r"); // Do proměnné $fp uloží identifikátor na otevřený soubor na webovém serveru. $fp = fopen("http://www.nejaky-server.cz/soubor.php","r"); // Do proměnné $fp uloží identifikátor na otevřený soubor pro zápis. $fp = fopen("obrazek.gif","wb");
fclose ( deskriptor )
Všechny otevřené soubory je "potřeba" zavřít. Vyvarujeme se tak mnoha problémům, které by mohly nastat nekorektním zavřením.
Příklad:
// Zavře identifikátor (deskriptor), který je uložen v proměnné $fp. fclose($fp);
filesize ( soubor )
Vrátí velikost lokálního souboru v bajtech. Tuto funkci využijeme např. při volání funkce FRead.
Příklad:
// Zjistí velikost souboru data.txt. filesize("data.txt");
fread ( deskriptor, délka )
Pomocí této funkce můžeme binárně přečíst zvolený soubor.
Tato funkce má dva parametry:
Příklad:
// Přečte ze zvoleného souboru data.txt. $fp = fopen("data.txt", "r"); $data = fread($fp, filesize("data.txt")); fclose($fp); echo $data;
fgetc ( deskriptor )
Tato funkce vrací jediný znak ze zvoleného souboru.
Příklad:
// Přečte ze zvoleného souboru data.txt. $fp = fopen("data.txt", "r"); $data = fgetc($fp); fclose($fp); echo $data;
fgets ( deskriptor, délka )
Tato funkce přečte jeden řádek o maximální velikosti délka - 1 ze zvoleného souboru.
Příklad:
// Přečte jeden řádek ze zvoleného souboru data.txt. $fp = fopen("data.txt", "r"); $data = fgets($fp, 2000); fclose($fp); echo $data;
fgetss ( deskriptor, délka )
Tato funkce přečte jeden řádek o maximální velikosti délka - 1 ze zvoleného souboru a odstraní z něj HTML a PHP tagy.
Příklad:
// Přečte jeden řádek ze zvoleného souboru data.txt. $fp = fopen("data.txt", "r"); $data = fgetss($fp, 2000); fclose($fp); echo $data;
fputs ( deskriptor, text )
Tato funkce zapíše zvolený textový řetězec do vybraného souboru. Tato funkce je identická s funkcí fwrite.
Příklad:
// Zapíše do souboru data.txt text "testik". $fp = fopen("data.txt", "w"); fputs($fp, "testik"); fclose($fp);
fputs ( deskriptor, pozice )
Nastaví ukazatel pozice v souboru zadaného pomocí deskriptoru na zvolenou pozici.
Příklad:
// Nastaví pozici na začátek souboru. fseek($fp, 0);
feof ( deskriptor )
Pomocí této funkce můžeme testovat, zda je konec souboru. Funkce vrací hodnotu TRUE pokud je dosáhnuto konce souboru.
Příklad:
// Přečte data ze souboru. $fp = fopen("data.txt", "w"); while (!feof($fp)) { $data .= fread($fp, 1024); } fclose($fp); echo $data;
mkdir ( název, mód )
Pomocí této funkce vytvoříme nový adresář.
Tato funkce má dva parametry:
Příklad:
// Vytvoří složku "test" s módem "777". mkdir("test", 0777);
rmdir ( nazev)
Pomocí této funkce můžeme smazat zvolený prázdný adresář.
Příklad:
// Smaže adresář "test". rmdir("test");
Pokud budeme chtít vytvořit určitou webovou aplikaci, ke které by měl přistup zvolený okruh lidí, můžeme využít autentifikace, která je obsažena v HTTP protokolu. Pomocí PHP tak můžeme jednoduše vytvořit komplexní systém přihlašování.
Pokud budeme chtít využít autentifikace, musí být PHP nainstalováno jako modul webového serveru (naše úvodní instalace toto kritérium splňuje). Nyní využijeme funkce Header, abychom prohlížeči odeslali požadavek o autentifikaci (objeví se námi požadované okno).
Proměnné, se kterými budeme pracovat nalezneme v poli $_SERVER["PHP_AUTH_USER"] - uživatelské jméno a $_SERVER["PHP_AUTH_PW"] - uživatelské heslo. Pomocí těchto proměnných můžeme sestavit SQL dotaz, který ověří v databázi, zda má uživatel právo přihlásit se do zvolené sekce.
Náš příklad by mohl vypadat následovně:
<? /* Ověříme, zda proměnná $_SERVER["PHP_AUTH_USER"] obsahuje nějakou hodnotu. V případě, že neobsahuje, pošleme hlavičky pro autentifikaci. */ If (!IsSet($_SERVER["PHP_AUTH_USER"])) { Header("WWW-Authenticate: Basic realm=\"Tajné\""); Header("HTTP/1.0 401 Unauthorized"); echo "Musíte se přihlásit platným jménem a heslem!"; exit; } else { // Porovnáme, zda uživatel zadal správné údaje. If ($_SERVER["PHP_AUTH_USER"] != "test" || $_SERVER["PHP_AUTH_PW"] != "test") { echo "Musíte se přihlásit platným jménem a heslem!"; exit; } } ?> Tady již může být zbytek HTML stránky.
Do parametru realm v autentifikační hlavičce můžeme dosadit například název aplikace, který se zobrazí v přihlašovacím okně. V případě, že již přihlášenému uživateli pošleme hlavičku s autentifikací (kódem 401), prohlížeče (IE, NN) vyprázdní cache s uloženými přihlašovacími údaji.
Pro tento díl to bude vše. V příštím díle budeme dále pokračovat v poznávání jazyka PHP.