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.