Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • știri
  • php încărcați fișierul în variabilă. Script de fișier - Cum se încarcă un fișier PHP într-o variabilă? Alegerea este a ta

php încărcați fișierul în variabilă. Script de fișier - Cum se încarcă un fișier PHP într-o variabilă? Alegerea este a ta

$Vdata = file_get_contents("textfile.txt");

Dar acum trebuie să încarc un fișier PHP.

Bănuiesc ce vrei să obții Conținut generat de PHP, daca da:

$Vdata = file_get_contents("http://YOUR_HOST/YOUR/FILE.php");

Altfel, dacă vrei Codul sursă al fișierului PHP, acesta este același cu fișierul .txt:

$Vdata = file_get_contents("path/to/YOUR/FILE.php");

ob_start(); include "yourfile.php"; $myvar = ob_get_clean();

Dacă utilizați http://, după cum sugerează eyel, veți putea citi numai rezultatul scriptului PHP. Puteți citi un script PHP numai dacă este pe același server cu scriptul dvs. Apoi poți folosi ceva de genul

$Vdata = file_get_contents("/path/to/your/file.php");

Dacă doriți să descărcați un fișier fără a-l rula printr-un server web, următoarele ar trebui să funcționeze.

$șir = eval(file_get_contents("fișier.php"));

Apoi, conținutul fișierului va fi încărcat. Fișierul PHP trebuie să fie complet format cu etichetePentru ca eval să-l evalueze.

În teorie, puteți folosi fopen și apoi folosiți stream_get_contents.

$stream = fopen("fișier.php","r"); $șir = stream_get_contents($stream); fclose($stream);

Alternativ, puteți porni bufferingul de ieșire, faceți un include/require și apoi opriți tamponarea. Cu ob_get_contents() puteți obține pur și simplu lucruri care au fost emise de un alt fișier PHP într-o variabilă.

file_get_contents() nu va funcționa dacă serverul dvs. este dezactivat allow_url_fopen. Majoritatea gazdelor web partajate sunt dezactivate implicit din cauza riscurilor de securitate. În plus, în PHP6 opțiune allow_url_fopen nu va mai exista și toate funcțiile se vor comporta ca și cum ar fi dezactivate definitiv. Deci, aceasta este o metodă foarte proastă de utilizat.

Cel mai bun caz de utilizare dacă accesați fișierul prin http este cURL

Înainte de a încerca să lucrați cu un fișier, este o idee bună să vă asigurați că acesta există. Două funcții sunt de obicei folosite pentru a rezolva această problemă:

file_exists() și is_file().

Funcția file_exists() verifică dacă fișierul dat există. Dacă fișierul există, funcția returnează TRUE, în caz contrar, returnează FALSE. Sintaxa pentru funcția file_exists() este:

bool file_exists(fișier șir)

Un exemplu de verificare a existenței unui fișier:

dacă (!file_exists($filename)):

print "Fișierul $filename nu există!";

is_file()

Funcția is_file() verifică existența unui fișier dat și capacitatea de a efectua operațiuni de citire/scriere pe acesta. Practic, is_file() este o versiune mai robustă a file_exists() care verifică nu numai dacă un fișier există, ci și dacă poate citi și scrie date:

bool is_file(fișier șir)

Următorul exemplu arată cum să verificați dacă un fișier există și că pot fi efectuate operațiuni pe acesta:

$fișier = „un fișier.txt”;

dacă (este_fișier($fișier)):

print "Fișierul $fișier este valid și există!";

print "Fișierul $fișier nu există sau nu este un fișier valid!";

După ce vă asigurați că fișierul dorit există și că puteți efectua diverse operații de citire/scriere cu acesta, puteți trece la pasul următor - deschiderea fișierului.

Funcția filesize() returnează dimensiunea (în octeți) a fișierului cu numele dat, sau FALSE în caz de eroare. Sintaxa funcției filesize() este:

int dimensiunea fișierului (șir nume de fișier)

Să presupunem că doriți să determinați dimensiunea fișierului pastry.txt. Puteți folosi funcția filesize() pentru a obține informațiile de care aveți nevoie:

$fs = dimensiunea fișierului ("pastry.txt"); printează „Pastry.txt este $fs octeți.”;

Se afișează următorul rezultat:

Pastry.txt are 179 de octeți.

Înainte de a efectua operații asupra unui fișier, trebuie să îl deschideți și să îl asociați cu un mâner de fișier, iar când ați terminat de lucrat cu fișierul, trebuie să îl închideți. Aceste subiecte sunt tratate în secțiunea următoare.

Deschiderea și închiderea fișierelor

Înainte de a efectua operațiuni I/O pe un fișier, acesta trebuie deschis cu funcția fopen().

Funcția fopen() deschide fișierul (dacă acesta există) și returnează un număr întreg - așa-numitul mânerul fișierului(mânerul fișierului). Sintaxa funcției fopen() este:

int fopen(fișier șir, mod șir[, int include_cale])

Fișierul care este deschis poate locui în sistemul de fișiere local, poate exista ca intrare/ieșire standard sau poate reprezenta un fișier pe un sistem de la distanță acceptat de HTTP sau FTP.

Parametrul fișierului poate lua mai multe forme, după cum este enumerat mai jos:

Dacă parametrul conține numele unui fișier local, funcția fopen() deschide acel fișier și returnează un handle.

Dacă parametrul este setat la php://stdin, php://stdout sau php://stderr, se deschide fluxul de intrare/ieșire standard corespunzător.

Dacă parametrul începe cu prefixul http://, funcția deschide o conexiune HTTP la server și returnează un handle pentru fișierul specificat.

Dacă parametrul începe cu prefixul ftp://, funcția deschide o conexiune FTP la server și returnează un handle pentru fișierul specificat. În acest caz, ar trebui să acordați o atenție deosebită la două lucruri: dacă serverul nu acceptă modul FTP pasiv, apelul fopen() va eșua. Mai mult, fișierele FTP sunt deschise fie pentru citire, fie pentru scriere.

Când funcționează în modul pasiv, serverul LR așteaptă conexiunile de la clienți. Când lucrează în modul activ, serverul însuși stabilește o conexiune cu clientul. Implicit este de obicei modul activ.

Parametrul mode determină dacă fișierul poate fi citit sau scris în. În tabel. 7.1 listează câteva valori care determină modul de deschidere a fișierului.

Tabelul 7.1. Moduri de deschidere a fișierelor

Modul Descriere
Doar lectură. Indicatorul de poziție curentă este setat la începutul fișierului
r+ Citire si scriere. Indicatorul de poziție curentă este setat la începutul fișierului
w Numai înregistrare. Indicatorul de poziție curentă este setat la începutul fișierului și întregul conținut al fișierului este distrus. Dacă fișierul nu există, funcția încearcă să-l creeze.
w+ Citire si scriere. Indicatorul de poziție curentă este setat la începutul fișierului și întregul conținut al fișierului este distrus. Dacă fișierul nu există, funcția încearcă să-l creeze.
A Numai înregistrare. Indicatorul de poziție curentă este setat la sfârșitul fișierului. Dacă fișierul nu există, funcția încearcă să-l creeze.
a+ Citire si scriere. Indicatorul de poziție curentă este setat la sfârșitul fișierului. Dacă fișierul nu există, funcția încearcă să-l creeze.

Dacă al treilea parametru opțional include_path este 1, atunci calea fișierului este relativă la directorul include specificat în fișierul php.ini (vezi Capitolul 1).

Următorul este un exemplu de deschidere a unui fișier cu funcția fopen(). Apelul die(), folosit împreună cu fopen(), afișează un mesaj de eroare dacă fișierul nu se deschide:

$file = "userdata.txt"; // Unele fișiere

$fh = fopen($fișier, „a+”) sau die(„Fișierul ($fișier) nu există!”);

Următorul fragment deschide o conexiune la un site PHP (http://www.php.net):

$site = "http://www.php.net": // Server accesibil prin HTTP

$sh = fopen($site., "r"); //Asociați manipulatorul cu pagina de index Php.net

Fișierul ar trebui să fie întotdeauna închis cu funcția fclose() după finalizare.

Funcția fclose() închide un fișier cu mânerul dat. Returnează TRUE la succes, FALSE la eșec. Sintaxa funcției fclose() este:

int fclose(int manipulator)

Funcția fclose() închide cu succes numai acele fișiere care au fost deschise anterior de funcțiile fopen() sau fsockopen(). Un exemplu de închidere a unui fișier:

$file = "userdata.txt";

dacă (fișier_există($fișier)):

$fh = fopen($fisier, "r");

// Efectuați operațiuni cu fișiere

print "Fișierul fișierul nu există!";

Scrie la dosar

Pe fișierele deschise sunt efectuate două operații de bază - citirea și scrierea.

Funcția is_writeable() verifică dacă fișierul există și poate fi scris. Scriibilitatea este verificată atât pentru fișier, cât și pentru director. Sintaxa funcției is_writeable() este:

bool is_writeable(fișier șir)

O considerație importantă: PHP va rula cel mai probabil sub ID-ul de utilizator utilizat de serverul web (de obicei „nimeni”). Un exemplu de utilizare a is_writeable() este dat în descrierea funcției fwrite().

Funcția fwrite() scrie conținutul unei variabile șir în fișierul specificat de handle-ul fișierului. Sintaxa funcției fwrite() este:

int fwrite(int manipulator, variabilă șir [, int lungime])

Dacă un parametru opțional de lungime este transmis la apelarea funcției, înregistrarea se oprește fie după ce a fost scris numărul specificat de caractere, fie când se ajunge la sfârșitul șirului. Verificarea capacității de a scrie într-un fișier este demonstrată în următorul exemplu:

// Informații despre trafic pe site-ul utilizatorului

$data = "08:13:00|12:37:12|208.247.106.187|Win98";

$filename = "somefile.txt";

// Dacă fișierul există și poate fi scris în

dacă (este_scris($nume fișier)):

$fh = fopen($nume fisier, "a+");

// Scrieți conținutul $data într-un fișier

$succes - fwrite($fh, $date);

// închide fișierul

fclose($fh); altceva:

print „Nu s-a putut deschide Sfilename pentru scriere”;

Funcția fputs() este un alias pentru fwrite() și poate fi folosită oriunde este folosit fwrite().

Funcția fputs() este un alias pentru fwrite() și are exact aceeași sintaxă. Sintaxa funcției fputs() este:

int fputs (manipulator int, variabilă șir [, lungime int])

Personal, prefer să folosesc fputs(). Rețineți că aceasta este doar o chestiune de stil și nu are nimic de-a face cu diferențele dintre cele două funcții.

Citirea dintr-un fișier

Fără îndoială, citirea este cea mai importantă operație efectuată asupra fișierelor. Unele dintre caracteristicile care îmbunătățesc eficiența citirii dintr-un fișier sunt descrise mai jos. Sintaxa acestor funcții copiază aproape exact sintaxa unor funcții similare de înregistrare.

Funcția i s_readable() vă permite să vă asigurați că fișierul există și că este permisă o operație de citire pentru acesta. Lizibilitatea este verificată atât pentru fișier, cât și pentru director. Sintaxa funcției is_readable() este:

hui! is_redable(fișier șir]

Cel mai probabil, PHP va rula sub ID-ul utilizatorului folosit de serverul web (de obicei „nimeni”), așa că pentru ca funcția is_readable() să returneze TRUE, toată lumea trebuie să aibă voie să citească din fișier. Următorul exemplu arată cum să verificați dacă un fișier există și este lizibil:

if (este_citit($nume fișier)):

// Deschideți fișierul și setați indicatorul de poziție curentă la sfârșitul fișierului

$fh = fopen($nume fisier, "r");

print "$filename nu poate fi citit!";

Funcția fread() citește numărul specificat de octeți din fișierul specificat de handle-ul fișierului. Sintaxa funcției fwrite() este:

int fread (manipulator int, lungime int)

Manipulatorul trebuie să se refere la un fișier deschis care poate fi citit (vezi descrierea funcției is_readable()). Citirea se oprește după citirea numărului specificat de octeți sau când se ajunge la sfârșitul fișierului. Luați în considerare fișierul text pastry.txt prezentat în Listarea 7.1. Citirea și ieșirea acestui fișier în browser se face prin următorul fragment:

$fh = fopen("pastry.txt", "r") sau die("Nu se poate deschide fișierul!");

$fișier = fread($fh, dimensiunea fișierului($fh));

Folosind funcția fllesize() pentru a determina dimensiunea pastry.txt în octeți, vă asigurați că funcția fread() citește întregul conținut al fișierului.

Lista 7.1. Fișier text pastry.txt

Reteta: aluat de patiserie

1 1/4 cani de faina universala

3/4 de bat (6 linguri) unt nesarat, tocat

2 linguri de scurtare vegetală 1/4 linguriță sare

3 linguri de apa

Funcția fgetc() returnează un șir care conține un caracter din fișier la poziția curentă a indicatorului, sau FALSE dacă se ajunge la sfârșitul fișierului. Sintaxa funcției fgetc() este:

șir fgetc (manipulator int)

Manipulatorul trebuie să se refere la un fișier deschis care poate fi citit (vezi descrierea funcției is_readable() mai devreme în acest capitol). Următorul exemplu arată citirea și ieșirea unui fișier caracter cu caracter folosind funcția fgetc():

$fh = fopen("patiserie.txt", "r"); în timp ce (!feof($fh)):

$car = fgetc($fh):

print $char; sfârşitul timpului;

Funcția fgets() returnează șirul citit din poziția curentă a pointerului în fișierul specificat de filehandle. Pointerul de fișier trebuie să indice către un fișier deschis care poate fi citit (vezi descrierea funcției is_readable() mai devreme în acest capitol). Sintaxa funcției fgets():

șir fgets (manipulator int, lungime int)

Citirea se oprește atunci când este îndeplinită una dintre următoarele condiții:

  • citire din lungimea fișierului -- 1 octet;
  • un caracter newline a fost citit din fișier (inclus în șirul returnat);
  • sfârșitul fișierului (EOF) a fost citit din fișier.

Dacă doriți să citiți fișierul linie cu linie, treceți în al doilea parametru o valoare care este evident mai mare decât numărul de octeți din linie. Un exemplu de citire și ieșire a unui fișier linie cu linie:

$fh = fopen("patiserie.txt", "r");

în timp ce (!feof($fh));

$line = fgets($fh, 4096);

print $line. "
";

Funcția fgetss() este exact aceeași cu fgets() cu o excepție - încearcă să elimine toate etichetele HTML și PHP din textul citit:

șir fgetss(Manipulator int, lungime int [, șir permise_tags])

Înainte de a trece la exemple, aruncați o privire la Listarea 7.2 -- acest fișier este folosit în Listarea 7.3 și 7.4.

Lista 7.2. fișier science.html

Știri de ultimă oră - Știință

Forma de viață extraterestră descoperită


20 august 2000

În această dimineață devreme, o nouă formă ciudată de ciupercă a fost găsită crescând în dulapul vechiului frigider de apartament al lui W. J. Gilmore.Nu se știe dacă radiațiile puternice emanate de monitorul computerului chiriașului au ajutat această evoluție.

Lista 7.3. Eliminarea etichetelor din fișierul HTML înainte de a fi afișate în browser

$fh = fopen("știință.html", "r");

în timp ce (!feof($fh)):

print fgetss($fh, 2048);

Rezultatul este prezentat mai jos. După cum puteți vedea, toate etichetele HTML au fost eliminate din fișierul science.html, ceea ce duce la pierderea formatării:

În unele situații, toate etichetele sunt eliminate din fișier, cu excepția unora - de exemplu, etichetele de întrerupere de linie
. Lista 7.4 arată cum se face acest lucru.

Lista 7.4. Eliminarea selectivă a etichetelor dintr-un fișier HTML

$fh = fopenC"science.html", "r");

$admisibil="
";

în timp ce (!feof($fh)):

print fgetss($fh. 2048, $admisibil);

Rezultat:

Breaking News - Science Formă de viață extraterestră descoperită pe 20 august. 2000 În această dimineață, devreme, o nouă formă ciudată de ciupercă a fost găsită crescând în dulapul vechiului frigider de apartament al lui WJ Gilmore. Nu se știe dacă radiațiile puternice emanate de monitorul computerului chiriașului au ajutat acest lucru. evoluţie.

După cum puteți vedea, funcția fgetss() facilitează conversia fișierelor, mai ales dacă aveți o mulțime de fișiere HTML formatate similar.

Citirea unui fișier într-o matrice

Funcția file() încarcă întregul conținut al unui fișier într-o matrice indexată. Fiecare element de matrice corespunde unei linii din fișier. Sintaxa pentru funcția fișier() este:

fișier matrice (fișier șir[, int include_path])

Dacă al treilea parametru opțional include_path este 1, atunci calea fișierului este relativă la directorul include specificat în fișierul php.ini (vezi Capitolul 1). Lista 7-5 folosește funcția file() pentru a încărca fișierul pastry.txt (vezi Lista 7-1).

$file_array = fisier("pastry.txt");

while (listă($line_num. $line) = eacht($file_array)):

imprimare" Line$line_num:", htmlspecialchars($line), "
\n"

Fiecare rând al matricei este scos împreună cu un număr:

Linia 0: Rețetă: Aluat de patiserie

Linia 1: 1 1/4 cani de făină universală

Linia 2: 3/4 de baton (6 linguri) unt nesarat, tocat

Linia 3: 2 linguri de scurtătură vegetală

Linia 4: 1/4 linguriță sare

Linia 5: 3 linguri de apă

Redirecționarea unui fișier la ieșire standard

Funcția readfile() citește conținutul unui fișier și îl scrie în ieșirea standard (în cele mai multe cazuri, în browser). Sintaxa funcției readfile() este:

int readfile(fișier șir[, int include_path])

Funcția returnează numărul de octeți citiți. Fișierul poate locui în sistemul de fișiere local, poate exista ca intrare/ieșire standard sau poate reprezenta un fișier pe un sistem de la distanță acceptat de HTTP sau FTP. Parametrul fișierului este setat conform acelorași reguli ca și în funcția fopen().

Să presupunem că aveți un fișier latorre.txt pe care doriți să îl afișați în browser:

Restaurantul „La Torre”. situat în Nettuno, Italia, oferă un amestec eclectic de stil. istorie și bucătărie rafinată din fructe de mare. În interiorul zidurilor borgoului medieval care înconjoară orașul, se poate lua masa în timp ce privesc trecătorii cum fac cumpărături în buticuri din sat. Confortul împreună cu doar cea mai proaspătă plajă fac din La Torre unul dintre cele mai bune restaurante din Italia.

Când se execută următorul fragment, întregul conținut al latorre.txt este trimis către fluxul de ieșire standard:

$restaurant_file = "latorre.txt";

// Trimite întregul fișier la ieșire standard

readfile($fişier_restaurant);

Deschiderea unui handle de fișier al unui proces

Împreună cu fișierele obișnuite, puteți deschide manere de fișiere pentru a interacționa cu procesele de pe server. Problema este rezolvată de funcția popen(), care are următoarea sintaxă:

int popen(comandă șir, mod șir)

Parametrul de comandă specifică comanda sistemului de executat, iar parametrul de mod descrie modul de acces:

// Deschideți fișierul „spices.txt” pentru scriere

$fh = fopen("condimente.txt","w");

// Adăugați mai multe rânduri de text

fputs($fh, "Prunjel, salvie, rozmarin\n");

fputs($fh, "Boia, sare, piper\n");

fputs($fh, "Buuioc, salvie, ghimbir\n");

// Închideți manipulatorul

// Deschideți un proces grep UNIX pentru a căuta cuvântul Busuioc în spices.txt

$fh - popen("grep Busuioc< spices.txt", "r");

// Imprimă rezultatul grep

Rezultatul arată astfel:

Busuioc, salvie, ghimbir

Funcția fpassthru() este analogă cu funcția passthru() discutată în secțiunea „Rularea programelor externe” a acestui capitol.

După ce toate operațiunile sunt finalizate, fișierul sau procesul trebuie să fie închis. Funcția pclose() închide conexiunea la procesul specificat de mâner, similar modului în care funcția fclose() închide un fișier deschis de funcția fopen(). Sintaxa funcției pclose():

int pclose(int manipulator)

În parametru manipulator manipulatorul obținut mai devreme dintr-un apel popen() reușit este trecut.

Deschiderea unei conexiuni priză

PHP nu se limitează la interacțiunea cu fișierele și procesele -- puteți, de asemenea, să faceți conexiuni socket. priză(socket) este o abstractizare software care vă permite să comunicați cu diverse servicii pe alt computer.

Funcția fsockopen() stabilește o conexiune socket la un server de pe Internet

prin protocolul TCP sau UDP. Sintaxa funcției fsockopen() este:

int fsockopen (nod șir, port int [, cod_eroare int [, text_eroare șir [, int timeout]]])

Parametrii opționali error_code și error_text conțin informații care vor fi afișate dacă conexiunea la server eșuează. Ambii parametri trebuie trecuți prin referință. Al treilea parametru opțional, timeout, specifică cât timp să aștepte un răspuns de la server (în secunde). Lista 7-6 arată cum să utilizați funcția fsockopen() pentru a obține informații despre un server. Înainte de a privi Lista 7.6, totuși, mai există o funcție care trebuie introdusă, socket_set_blocking().

UDP (User Datagram Protocol) este un protocol de comunicare care nu este orientat spre conexiune.

socket_set_blocking()

Funcția socket_set_b1ocki ng() vă permite să setați controale de timeout pentru operațiunile serverului:

socket_set_blocking (manipulator int, modul boolean)

Parametrul manipulator specifică priza deschisă anterior, iar parametrul mode selectează modul în care trece soclul (TRUE pentru modul de blocare, FALSE pentru modul neblocant). Un exemplu de utilizare a funcțiilor fsockopen() și socket_set_blocking() este prezentat în Listarea 7.6.

Lista 7.6. Utilizarea funcției fsockopen() pentru a obține informații despre server

funcția getthehost($gazdă.$cale) (

// Deschide conexiunea la nod

$fp - fsockopen($gazdă, 80, &$errno, &$errstr, 30);

// Treceți în modul de blocare

socket_set_blocking($fp, 1),

// Trimite antete

fputs($fp,"GET $path HTTP/1.1\r\n");

fputs($fp, „Gazdă: $gazdă\r\n\r\n”); $x = 1;

// Obține antete

în timp ce($x< 10) :

$headers = fgets($fp, 4096);

// Închideți manipulatorul

getthehost("www.apress.com", "/");

Listarea 7.6 produce următorul rezultat:

HTTP/1.1 200 OK Server: Microsoft-IIS/4.0 Locația conținutului:

2000 20:25:06 GMT ETag: „f0a61666dbff1bf1:34a5” Lungime conținut: 1311

Funcția pfsockopen() este o versiune persistentă a fsockopen(). Aceasta înseamnă că conexiunea nu va fi oprită automat când se termină scriptul în care a fost apelată funcția. Sintaxa funcției pfsockopen():

int pfsockopen (șir gazdă, int port [, int cod_eroare [, șir text_eroare [, int timeout]]])

În funcție de obiectivele specifice ale aplicației dvs., poate fi mai convenabil să utilizați pfsockopen() în loc de fsockopen().

Lansarea de programe externe

Scripturile PHP pot executa, de asemenea, programe care locuiesc pe server. Această caracteristică este folosită mai ales atunci când se administrează sistemul printr-un browser web, precum și pentru obținerea mai convenabilă a informațiilor rezumate despre sistem.

Funcția exec() rulează programul dat și returnează ultima linie a ieșirii sale. Sintaxa funcției exec() este:

string exec (comandă șir [, string array [, int return]])

Vă rugăm să rețineți că funcția exec() execută doar comanda, fără a scoate rezultatele muncii sale. Toate rezultatele comenzii pot fi stocate într-un parametru opțional de matrice. De asemenea, dacă este specificată și o variabilă de returnare atunci când este specificat un parametru de matrice, acestuia din urmă i se atribuie codul de returnare al comenzii executate.

Lista 7.7 arată cum să utilizați funcția exec() pentru a executa funcția ping de sistem UNIX.

Lista 7.7. Verificarea conexiunii cu serverul folosind funcția exec().

exec("ping -c 5 www.php.net", $ping);

// Pe Windows, exec("ping -n 5 www.php.net. $ping);

pentru ($i=0; $i< count($ping);$i++) :

imprimare"
$ping[$i]";

Rezultat:

PING www.php.net (208.247.106.187): 56 de octeți de date

64 de octeți de la 208.247.106.187: icmp_seq=0 ttl=243 time=66.602 ms

64 de octeți de la 208.247.106.187: icmp_seq=1 ttl=243 time=55.723 ms

64 de octeți de la 208.247.106.187: icmp_seq=2 ttl=243 time=70.779 ms

64 de octeți de la 208.247.106.187: icmp_seq=3 ttl=243 time=55.339 ms

64 de octeți de la 208.247.106.187: icmp_seq=4 ttl=243 time=69.865 ms

www.php.net statistici ping --

5 pachete transmise. 5 pachete primite. 0% pierdere de pachete

dus-întors min/avg/max/stddev - 55,339/63,662/70,779/6,783 ms

Backticks

Există o altă modalitate de a executa comenzi de sistem care nu necesită funcții de apelare - comanda executată este închisă în backtick-uri (` `), iar rezultatele muncii sale sunt afișate în browser. Exemplu:

imprimare"

$ieșire
";

Acest fragment imprimă în browser conținutul directorului în care se află scriptul.

Parametrul intern ping -c 5 (-n 5 pe un sistem Windows) specifică numărul de ori pentru a interoga serverul.

Dacă doriți doar să returnați rezultatul brut al unei comenzi, utilizați funcția passthru() descrisă mai jos.

Funcția passthru() funcționează în același mod ca exec(), cu o excepție - emite automat rezultatele comenzii. Sintaxa funcției passthru() este:

void passthru (comandă șir [, int return])

Dacă parametrul de returnare opțional este transmis în apelul passthru(), această variabilă este setată la codul de returnare al comenzii executate.

escapeshellcmd()

Funcția escapeshellcmd() scapă toate caracterele potențial periculoase care pot fi introduse de utilizator (de exemplu, pe un formular HTML) pentru a executa comenzile exec(), passthru(), system() sau popen(). Sintaxă:

string escapeshellcmd (comandă șir)

Intrarea utilizatorului trebuie tratată întotdeauna cu o anumită prudență, dar chiar și așa, utilizatorii pot introduce comenzi care vor fi executate de funcțiile de rulare a comenzilor sistemului. Luați în considerare următorul fragment:

$user_input = `rm -rf *`; // Ștergeți directorul părinte și toate subdirectoarele acestuia

exec($user_input); // Executați $user_input !!!

Dacă nu se iau măsuri de precauție, o astfel de comandă va duce la dezastru. Cu toate acestea, puteți utiliza funcțiile escapeshellcmd() pentru a scăpa de intrarea utilizatorului:

$user_input = `rm - rf *`; // Ștergeți directorul părinte și toate subdirectoarele acestuia

exec(escapeshellcmd($user_input)); // Scăpa de personaje periculoase

Funcția escapeshellcmd() scapă caracterul * pentru a preveni consecințele catastrofale ale rulării comenzii.

Securitatea este unul dintre cele mai importante aspecte ale programării pe Web, așa că am dedicat un întreg capitol acestui subiect și relației sale cu programarea PHP. Consultați capitolul 16 pentru mai multe informații.

Lucrul cu sistemul de fișiere

PHP are funcții pentru vizualizarea și efectuarea diferitelor operațiuni asupra fișierelor de pe server. Informațiile despre atributele fișierului server (locație, proprietar și privilegii) sunt adesea utile.

Funcția basename() extrage numele fișierului din numele complet transmis. Sintaxa pentru funcția basename() este:

șir de bază nume(șir de nume complet)

Extragerea numelui de bază al fișierului din numele complet se face după cum urmează:

$cale = "/usr/local/phppower/htdocs/index.php"; $fisier = nume de baza($cale); // $fișier = "index.php"

De fapt, această funcție elimină calea de la numele complet și lasă doar numele fișierului.

Funcția getlastmod() returnează data și ora ultimei modificări a paginii de la care este apelată funcția. Sintaxa funcției getlastmod() este:

int getlastmod(void)

Valoarea returnată este conformă cu formatul de dată/oră UNIX și puteți utiliza funcția date() pentru a o formata. Următorul fragment tipărește data la care pagina a fost modificată ultima dată:

echo "Ultima modificare: ".date("H:i:s a". getlastmod());

Funcția stat() returnează o matrice indexabilă cu informații detaliate despre fișierul cu numele dat:

statistică matrice (nume fișier șir)

Următoarele informații sunt returnate în elementele matricei:

0 dispozitiv

2 Modul de protecție a nodului index

3 Numărul de linkuri

4 ID utilizator proprietar

5 ID-ul grupului de proprietari

6 Tip de dispozitiv inode

7 Dimensiune în octeți

8 Ora ultimului acces

9 Ora ultimei modificări

10 Ora ultimei modificări

11 Dimensiunea blocului pentru intrare/ieșire în sistemul de fișiere

12 Numărul de blocuri alocate

Astfel, dacă doriți să știți când a fost accesat ultima dată fișierul, priviți elementul 8 al matricei returnate. Luați în considerare un exemplu:

$file - "datafile.txt";

list($dev, $inode, $inodep, $nlink, $uid, $gid, $inodev, $size, $atime, $mtime, $ctime,

$bsize) = stat($fisier);

print "$fișierul are $size octeți.
";

print „Timpul ultimului acces: $atime
";

print „Ora ultimei modificări: $mtime
";

Rezultat:

popen.php are 289 de octeți.

Ora ultimului acces: 15 august 2000 12:00:00

Ora ultimei modificări: 15 august 2000 10:07:18

În acest exemplu, am folosit construcția list() pentru a denumi fiecare valoare returnată. Desigur, ați putea la fel de bine să returnați o matrice, să faceți o buclă printre elemente și să afișați toate informațiile de care aveți nevoie. După cum puteți vedea, funcția stat() vă permite să obțineți diverse informații utile despre un fișier.

Afișarea și modificarea caracteristicilor fișierelor

Fiecare fișier de pe sistemele familiei UNIX are trei caracteristici importante:

  • apartenența la un grup;
  • proprietar;
  • permisiuni.

Toate aceste caracteristici pot fi modificate folosind funcțiile PHP corespunzătoare. Caracteristicile descrise în această secțiune nu funcționează pe sistemele din familia Windows.

Dacă sunteți nou în sistemele de operare UNIX, informații despre caracteristicile sistemului de fișiere UNIX pot fi găsite la http://sunsite.auc.dk/linux-newbie/FAQ2.htm. Subiectele legate de proprietatea grupului, proprietatea și permisiunile sunt tratate în Secțiunea 3.2.6.

Funcția chgrp() încearcă să schimbe grupul căruia îi aparține fișierul dat. Sintaxa funcției chgrp():

int chgrp (nume fișier șir, grup mixt)

Funcția filegroup() returnează ID-ul de grup al proprietarului fișierului cu numele dat, sau FALSE în caz de eroare. Sintaxa funcției filegroup() este:

int grup de fișiere (șir nume de fișier)

Funcția chmod() modifică permisiunile unui fișier cu numele dat. Sintaxa pentru funcția chmod() este:

int chmod (nume fișier șir, permisiuni int)

Permisiunile sunt specificate în octal. Specificul setării parametrului funcției chmod () este demonstrat în următorul exemplu:

chmod("fișier_date.txt", g+r); // Nu funcționează

chmod("data_file.txt", 766); // Nu funcționează

chmod("data_file.txt", 0766); // Funcționează

Funcția fileperms() returnează permisiunile fișierului cu numele dat, sau FALSE în caz de eroare. Sintaxa funcției fileperms() este:

int fileperms (nume fișier șir)

Funcția chown() încearcă să schimbe proprietarul unui fișier. Dreptul de a schimba proprietarul unui fișier este acordat doar unui utilizator privilegiat. Sintaxa funcției chown() este:

int chown (nume fișier șir, utilizator mixt)

Funcția fileowner() returnează ID-ul utilizatorului pentru proprietarul fișierului cu numele dat. Sintaxa funcției fileowner() este:

int proprietar de fișier (nume fișier șir)

Copierea și redenumirea fișierelor

Alte funcții utile de sistem pe care le pot realiza scripturile PHP includ copierea și redenumirea fișierelor de pe server. Aceste operații sunt efectuate de două funcții: copy() și rename().

Copierea unui fișier într-un script PHP este la fel de ușor ca și utilizarea comenzii UNIX cp. Problema este rezolvată de funcția PHP copy(). Sintaxa funcției copy() este:

int copy (sursă șir, destinație șir)

Funcția copy() încearcă să copieze fișierul sursă în fișierul destinație; returnează TRUE la succes, FALSE la eșec. Dacă fișierul țintă nu există, funcția copy() îl creează. Următorul exemplu arată cum se face o copie de rezervă a unui fișier utilizând funcția copy():

$data_file = "data.txt";

copy($data_file. $data_file".bak") sau die("Nu s-a putut copia $data_file");

Funcția rename() redenumește un fișier. Returnează TRUE la succes, FALSE la eșec. Sintaxa funcției rename():

redenumire bool (șir nume_vechi, șir nume_nou)

Un exemplu de redenumire a unui fișier cu funcția rename():

$data_file = "data.txt";

rename($fișier de date, $fișier de date".old") sau die ("Nu s-a putut redenumi fișierul $date");

Ștergerea fișierelor

Funcția unlink() elimină fișierul cu numele dat. Sintaxă:

int deconectare (fișier șir)

Dacă lucrați cu PHP pe un sistem Windows, există unele probleme când utilizați această funcție. În acest caz, puteți utiliza funcția system() descrisă mai sus și puteți șterge fișierul cu comanda DOS del:

system("del filename.txt");

Lucrul cu directoare

Funcțiile PHP vă permit să vizualizați conținutul directoarelor și să navigați prin ele. Lista 7.8 arată o structură tipică de directoare UNIX.

Lista 7.8. Structura tipică de directoare

Funcția dirname() completează basename() -- extrage calea din numele de fișier complet calificat. Sintaxa funcției dirname():

string dirname (calea șirului)

Un exemplu de utilizare a dirname() pentru a extrage o cale dintr-un nume complet calificat:

$cale = "/usr/locla/phppower/htdocs/index.php";

$fisier = dirname($cale); // $file = "usr/local/phppower/htdocs"

Funcția dirname() este uneori folosită împreună cu variabila $SCRIPT_FILENAME pentru a obține calea completă către scriptul din care este executată comanda:

$dir - dirname($SCRIPT_FILENAME);

Funcția is_dir() verifică dacă fișierul cu numele dat este un director:

bool is_dir (nume fișier șir)

Următorul exemplu utilizează structura de directoare din lista 7.8:

$ isdir = is_dir("index.html"); // Returnează FALSE

$isdir = is_dir("carte"); // Returnează TRUE

Funcția mkdir() face același lucru ca și comanda UNIX cu același nume - creează un director nou. Sintaxa funcției mkdir() este:

int mkdir (calea șirului, modul int)

Parametrul cale specifică calea pentru a crea noul director. Nu uitați să încheiați parametrul cu numele noului director! Parametrul mode determină permisiunile atribuite directorului creat.

La fel cum funcția fopen() deschide un handle pentru un fișier dat, funcția opendir() deschide un handle pentru un director. Sintaxa funcției opendir() este:

int opendir (calea șirului)

Funcția closedir() închide mânerul directorului transmis ca parametru. Sintaxa funcției closedir():

void closedir(int directory_manipulator)

Funcția readdir() returnează următorul element al directorului dat. Sintaxă:

string readdir(int directory_manipulator)

Cu această funcție, puteți lista cu ușurință toate fișierele și subdirectoarele din directorul curent:

$dh = opendir(" .);

while ($fișier = readdir($dh)):

tipăriți „$fișier
„; sfârşitul timpului;

Funcția chdir() funcționează la fel ca comanda UNIX cd, prin aceea că se schimbă în directorul specificat de parametru. Sintaxa funcției chdir():

int chdir (director de șiruri)

În exemplul următor, navigăm la carte/subdirector și afișăm conținutul acesteia:

$newdir = „carte”;

chdir($newdir) sau die("Nu s-a putut schimba în directorul ($newdir)"); $dh = opendir(" .");

while ($fisier = readdir($dh)) ;

tipăriți „$fișier
";

Funcția rewlnddir() setează indicatorul de poziție curentă la începutul directorului deschis de funcția opendir(). Sintaxa funcției rewinddir():

void rewinddir(int dir_nipulator)

Proiectul 1: Un simplu contor de lovituri

Scriptul prezentat în această secțiune numără numărul de accesări pentru pagina în care se află. Înainte de a trece la codul din Lista 7-9, revizuiți algoritmul scris în pseudocod:

  1. Setați variabila $access la numele fișierului care va stoca valoarea contorului.
  2. Utilizați funcția file() pentru a citi conținutul $access în matricea $visits. Prefixul @ dinaintea unui nume de funcție suprimă posibilele erori (de exemplu, absența unui fișier cu numele dat).
  3. Setați variabila $current_visitors la valoarea primului (și singurului) element al matricei $visits.
  4. Creșteți valoarea $current_visitors cu 1.
  5. Deschideți fișierul $access pentru scriere și setați indicatorul de poziție curentă la începutul fișierului.
  6. Scrieți valoarea $current_visitors în fișierul $access.
  7. Închideți manipulatorul referitor la fișierul $access.

Lista 7.9. Contor de lovituri simplu

// Scenariu: contor de lovituri simple

// Scop: salvarea numărului de accesări din fișier

$access = "hits.txt"; // Numele fișierului este ales în mod arbitrar

$vizitatori_curenti = $vizite; // Preluați primul (și singurul) element

++$vizitatori_actuali; // Crește contorul de lovituri

$fh = fopen($acces. "w"); // Deschideți fișierul hits.txt și setați

// pointer către poziția curentă la începutul fișierului

@fwrite($fh, $current_visitors);// Scrieți o nouă valoare a contorului

// la fișierul „hits.txt”

fclose($fh); // Închideți mânerul fișierului „hits.txt”

Proiectul 2: construirea unui sitemap

Scriptul din Lista 7-10 construiește o hartă a site-ului, o reprezentare ierarhică a tuturor folderelor și fișierelor de pe server, începând de la un director dat. La calcularea indentărilor elementelor care alcătuiesc harta site-ului se folosesc funcțiile definite în acest capitol și în capitolele precedente. Înainte de a trece la program, revizuiți algoritmul scris în pseudocod:

  1. Declarați variabilele de serviciu pentru stocarea directorului părinte, numele fișierului grafic cu imaginea folderului, numele paginii și steag-ul sistemului de operare al serverului (Windows sau alt sistem).
  2. Declarați o funcție display_directory() care citește conținutul unui director și îl formatează pentru afișare în browser.
  3. Construiți calea directorului prin concatenarea numelui transmis în variabila $dir1 cu $dir.
  4. Deschideți un director și citiți conținutul acestuia. Formatați numele directorului și fișierelor și afișați-le în browser.
  5. Dacă fișierul curent este un director, apelați funcția display_directory() în mod recursiv și transmiteți-i numele noului director de afișat. Calculați indentarea utilizată la formatarea rezultatului.

Dacă fișierul nu este un director, acesta este formatat pentru a fi afișat ca hyperlink (și se calculează și indentarea utilizată în formatare).

Lista 7.10. programul sitemap.php

// Fișier: sitemap.php

// Scop: construirea unei hărți a site-ului

// Director din care să începeți construirea hărții

$beg_path = "C:\Program FilesVApache Group\Apache\htdocs\phprecipes";

// Fișier cu o imagine grafică a folderului.

// Calea trebuie să fie Relativă* la directorul rădăcină al serverului Apache

$folder_location = "C:\Documentele mele\PHP pentru programatori\FINAL CHPS\graphics\folder.gif";

// Text în titlul ferestrei $page_name = "PHPRecipes SiteMap";

// Pe ce sistem va fi folosit scriptul - Linux sau Windows?

// (0 - Windows; 1 - Linux)

$usingjinux = 0;

// Funcție: afișare_directory

// Scop: citiți conținutul directorului specificat de parametru

// $dir1, urmat de formatarea ierarhiei directoarelor și fișierelor.

// Funcția poate fi apelată recursiv.

funcția afișare_directory ($dir1, $folder_location, $using_linux, $init_depth) (

// Actualizați calea

sdh = opendir($dir);

while($fișier = readdir($dh)):

// Elementele directoarelor "." și „..” nu sunt ieșite.

dacă (($fișier != ".") && ($fișier != "..")):

dacă ($using_linux == 0):

$adâncime = explode("\\", $dir): else:

$adâncime = explode("/", $dir); endif; $curtent_depth = sizeof($depth);

// Construiește calea conform regulilor sistemului de operare utilizat. dacă ($using_linux == 0):

$tab_depth = $current_deptn - $init_depth;

$fișier = $dir. „\\”, $fișier; altceva:

$fișier = $dir. „/”,$fișier; endif;

// Variabila $file conține un director? if (este dir($fișier)):

// Calculați umplutura

în timp ce ($x< ($tab_depth * 2)) :

$x++; sfârşitul timpului;

imprimare"

„.basename($fișier).”
";

// Contor de creștere

// Apel recursiv la funcția display_directory().

director_afișare($fișier, $locație_dosar, $using_linux, $adâncime_init);

// Nu este un director

// Construiește calea conform regulilor celor utilizate

// sistem de operare.

dacă ($using_linux == 0):

$tab_depth = ($adâncimea_actuală - $adâncimea_init) - 2; $x = 0;

// Calculați umplutura

în timp ce ($x< (($tab_depth * 2) + 5)) :

imprimare" „.basename($fișier).”
";

imprimare" „.basename($fișier).”
";

endif; // Is_dir(fișier) endif: // Dacă ! "." sau „..”

// Închide directorul closedir($dh);

<? print "$page_name"; ?>

// Calculați umplutura inițială

dacă ($using_linux == 0):

$adâncime = explode("\\", $beg_path);

$adâncime = explode("/", $beg_path);

$init_depth = sizeof($depth);

director_afișare($cale_început, $locație_dosar, $using_linux, $adâncime_init);

Pe fig. Figura 7.1 prezintă rezultatul scriptului pentru un catalog cu mai multe capitole din această carte.

Orez. 7.1. Afișarea structurii directoarelor pe server folosind scriptul sitemap.php

Rezultate

Acest capitol a introdus multe dintre instrumentele PHP pentru lucrul cu fișiere. În special, am luat în considerare următoarele întrebări:

  • verificarea existentei dosarelor;
  • deschiderea și închiderea fișierelor și fluxurilor de intrare/ieșire;
  • scrierea într-un fișier și citirea din acesta;
  • redirecționarea fișierului către fluxul de ieșire;
  • lansarea de programe externe;
  • operațiuni ale sistemului de fișiere.

Materialul din acest capitol a pregătit scena pentru următorul capitol, Strings and Regular Expressions, deoarece procesarea șirurilor și operațiunile I/O sunt foarte strâns legate în dezvoltarea aplicațiilor web.

Ultima actualizare: 1.11.2015

La fel ca majoritatea limbajelor de programare, PHP acceptă fișiere, care reprezintă o modalitate de a stoca informații.

Citirea și scrierea fișierelor

Deschiderea și închiderea fișierelor

Funcția fopen() este definită în PHP pentru a deschide fișiere. Are următoarea definiție: resource fopen(string $filename, string $mode) . Primul parametru $filename reprezintă calea către fișier, iar al doilea parametru reprezintă modul de deschidere. În funcție de scopul deschiderii și de tipul fișierului, acest parametru poate lua următoarele valori:

    „r”: fișierul este deschis ca doar citire. Dacă fișierul nu există, returnează false

    „r+”: fișierul este deschis ca doar citire și scris. Dacă fișierul nu există, returnează false

    "w": Fișierul este deschis pentru scriere. Dacă un astfel de fișier există deja, atunci este suprascris, dacă nu, atunci este creat.

    „w+”: Fișierul este deschis pentru scriere cu lizibilitate. Dacă un astfel de fișier există deja, atunci este suprascris, dacă nu, atunci este creat.

    "a": Fișierul este deschis pentru scriere. Dacă un astfel de fișier există deja, atunci datele sunt scrise la sfârșitul fișierului, iar datele vechi rămân. Dacă fișierul nu există, atunci este creat

    „a+”: Fișierul este deschis pentru citire și scriere. Dacă fișierul există deja, atunci datele sunt atașate la sfârșitul fișierului. Dacă fișierul nu există, acesta este creat

Rezultatul funcției fopen este un descriptor de fișier. Acest mâner este folosit pentru operații asupra fișierului și pentru închiderea acestuia.

Când ați terminat, fișierul trebuie să fie închis folosind funcția fclose(), care ia ca parametru un descriptor de fișier. De exemplu, să deschidem și să închidem un fișier:

$fd = fopen("form.php", "r") sau die ("Nu s-a putut deschide fișierul"); fclose($fd);

Construcția or die ("text de eroare") vă permite să terminați scriptul și să afișați un mesaj de eroare dacă funcția fopen nu a putut deschide fișierul.

Citirea unui fișier

Mai multe funcții pot fi folosite pentru a citi un fișier. Pentru citirea rând cu linie, este utilizată funcția fgets(), care ia un descriptor de fișier și returnează o linie de citit. Să parcurgem rând cu linie întregul fișier:

De fiecare dată când apelați fgets() , PHP va plasa un pointer la sfârșitul șirului citit. Pentru a urmări sfârșitul unui fișier, este utilizată funcția feof(), care returnează adevărat când fișierul se termină. Și până când se ajunge la sfârșitul fișierului, putem folosi funcția fgets().

Citirea întregului fișier

În acest caz, nu este nevoie să deschidem în mod explicit fișierul, să obținem un handle și apoi să închidem fișierul.

Citire bloc

De asemenea, puteți efectua o citire bloc cu bloc, adică citiți un anumit număr de octeți dintr-un fișier folosind funcția fread():

Funcția fread() ia doi parametri: descriptorul fișierului de citit și numărul de octeți de citit. Când citiți un bloc, indicatorul din fișier se mută la sfârșitul acestui bloc. Și, de asemenea, cu ajutorul funcției feof (), puteți urmări finalizarea fișierului.

Scrieți fișierul

Pentru a scrie un fișier, se folosește funcția fwrite(), care scrie un șir în fișier:

O altă funcție fputs() funcționează în mod similar:

Lucrul cu indicatorul de fișier

Când deschideți un fișier pentru citire sau scriere în modul „w”, indicatorul din fișier este plasat la început. Când citește date, PHP mută indicatorul din fișier la sfârșitul blocului de date citit. Cu toate acestea, putem, de asemenea, să manipulăm manual indicatorul din fișier și să îl setăm într-o locație arbitrară. Pentru aceasta trebuie să utilizați funcția fseek, care are următoarea definiție formală:

int fseek (resursa $handle , int $offset [, int $whence = SEEK_SET ])

Parametrul $handle reprezintă un handle de fișier. Parametrul $offset este offset-ul în octeți relativ la începutul fișierului de la care va începe citirea/scrierea. Al treilea parametru opțional specifică modul în care trebuie setat offset-ul. Poate lua trei valori:

    SEEK_SET : valoare implicită, setează offset-ul la offset octeți de la începutul fișierului

    SEEK_CUR : setează offset-ul la offset octeți relativ la începutul poziției curente din fișier

    SEEK_END : setează decalajul pentru a compensa octeții de la sfârșitul fișierului

Funcția fseek() returnează 0 dacă indicatorul este setat cu succes și -1 dacă eșuează.

Un exemplu de utilizare a funcției:

$fd = fopen ("bună ziua.txt", "w+") sau die ("deschiderea fișierului a eșuat"); $str = „Bună lume!”; // șir de scris fwrite($fd, $str); // scrieți șirul la început fseek($fd, 0); // pune indicatorul fișierului la început fwrite($fd, "Oink"); // scrieți linia la început fseek($fd, 0, SEEK_END); // pune indicatorul la sfârșit fwrite($fd, $str); // scrie o altă linie la sfârșit fclose($fd);

descărcări $_ (8)

Trebuie să încarc un fișier PHP într-o variabilă. De exemplu include();

Am încărcat un fișier html simplu ca acesta:

$Vdata = file_get_contents("textfile.txt");

Dar acum trebuie să încarc un fișier PHP.

Răspunsuri

Dacă dosarul dvs. are o declarație de returnare:

"Afeganistão", "ZA" => "África do Sul", ... "ZW" => "Zimbabué");

Puteți obține această variabilă astfel:

$date = include $filePath;

Alternativ, puteți porni bufferingul de ieșire, faceți un include/require și apoi opriți tamponarea. Cu ob_get_contents() puteți obține pur și simplu lucruri care au fost emise de un alt fișier PHP într-o variabilă.

Dacă doriți să descărcați un fișier fără a-l rula printr-un server web, următoarele ar trebui să funcționeze.

$șir = eval(file_get_contents("fișier.php"));

Apoi, conținutul fișierului va fi încărcat. Fișierul PHP trebuie să fie complet format cu etichetePentru ca eval să-l evalueze.

Bănuiesc ce vrei să obții Conținut generat de PHP, daca da:

$Vdata = file_get_contents("http://YOUR_HOST/YOUR/FILE.php");

Altfel, dacă vrei Codul sursă al fișierului PHP, acesta este același cu fișierul .txt:

$Vdata = file_get_contents("path/to/YOUR/FILE.php");

În teorie, puteți folosi fopen și apoi folosiți stream_get_contents.

$stream = fopen("fișier.php","r"); $șir = stream_get_contents($stream); fclose($stream);

Dacă utilizați http://, după cum sugerează eyel, veți putea citi numai rezultatul scriptului PHP. Puteți citi un script PHP numai dacă este pe același server cu scriptul dvs. Apoi poți folosi ceva de genul

$Vdata = file_get_contents("/path/to/your/file.php");

Iată cum o fac (există mai multe moduri):

  1. Conversia datelor în JSON
  2. apel AJAX pentru a obține un fișier JSON
  3. transformare JSONîntr-un obiect javascript

PASUL 1

connect_error) ( die("Conexiune eșuată: " . $conn->connect_error); ) $sql = "SELECT ID, nume, imagine FROM telefon"; $rezultat = $conn->interogare($sql); while($row =$result->fetch_assoc())( $v=$row; ) echo json_encode($v); $conn->close(); ?>

PASUL 2

Funcția showUser(fnc) ( var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() ( if (this.readyState == 4 && this.status == 200) ( // PASUL 3 var p=JSON.parse( this.responseText);) ) )

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

file_get_contents- Citește conținutul unui fișier într-un șir

Descriere

Şir file_get_contents (șir $filename [, bool $use_include_path = false [, resursa $context [, int $offset = -1 [, int $maxlen ]]]])

Această funcție este similară cu funcția fişier() cu singura diferenţă că file_get_contents() returnează conținutul fișierului într-un șir, începând cu offset-ul specificat și până la maxlen octeți. În caz de eșec, file_get_contents() va reveni FALS.

Utilizarea funcției file_get_contents() Cel mai de preferat este dacă aveți nevoie să obțineți întregul conținut al fișierului, deoarece pentru a îmbunătăți performanța, funcția folosește tehnica de mapare a fișierului în memorie (mapping memorie), dacă este acceptată de sistemul dvs. de operare.

cometariu:

Dacă deschideți un URI care conține caractere speciale, cum ar fi un spațiu, trebuie să codificați URI-ul cu urlencode().

Lista parametrilor

Numele fișierului citit.

Use_include_path

cometariu:

Începând cu PHP 5, puteți utiliza constanta FILE_USE_INCLUDE_PATH pentru a căuta un fișier în calea include .

context

Resursă de context validă creată de funcție stream_context_create(). Dacă nu este nevoie să folosiți un context special, puteți sări peste acest parametru, transmițându-i valoarea NUL.

Deplasarea de la care să începeți citirea fluxului original.

Căutarea offset nu este acceptată atunci când lucrați cu fișiere de la distanță. Încercarea de a găsi o compensare pe fișiere non-locale poate funcționa pentru decalaje mici, dar acest rezultat este imprevizibil, deoarece funcționează pe un flux tamponat.

Dimensiunea maximă a datelor de citit. Implicit este de a citi până la sfârșitul fișierului. Rețineți că această setare se aplică și unui flux cu filtre.

Valori returnate

Funcția returnează datele citite sau FALSîn cazul unei erori.

Atenţie

Această funcție poate reveni ca boolean FALS, și o valoare non-booleană care este turnată la FALS. Consultați tipul boolean pentru mai multe informații. Utilizați operatorul === pentru a testa valoarea returnată de această funcție.

Greșeli

Se va genera o eroare de nivel E_AVERTISMENT dacă parametrul nume de fișier nu poate fi găsit, parametrul maxlength este mai mic decât zero sau căutarea la offset în flux eșuează.

Exemple

Exemplul #1 Obțineți și afișați codul sursă al paginii de pornire a site-ului web

$homepage = file_get_contents("http://www.example.com/" );
echo $homepage ;
?>

Exemplul #2 Găsirea fișierelor în include_path

// <= PHP 5
$file = file_get_contents("./people.txt" , true );
//> PHP 5
$file = file_get_contents("./people.txt" , FILE_USE_INCLUDE_PATH );
?>

Exemplul #3 Citirea unei secțiuni a unui fișier

// Citiți 14 caractere, începând cu caracterul 21
$section = file_get_contents ("./people.txt" , NULL , NULL , 20 , 14 );
var_dump($sectiune);
?>

Rezultatul rulării acestui exemplu va fi cam așa:

string(14) "lle Bjori Ro"

Beispiel #4 Utilizarea contextelor de streaming

// Creați un fir
$opts = matrice(
"http" =>array(
"method" => "GET" ,
"header" => "Accept-limba: ro\r\n" .
„Cookie: foo=bar\r\n”
);

$context = stream_context_create($opts);

// Deschideți fișierul folosind antetele HTTP setate mai sus
$file = file_get_contents ("http://www.example.com/" , false , $context );
?>

Close_notify . PHP va raporta acest lucru ca „SSL: Fatal Protocol Error” în momentul în care ajungeți la sfârșitul datelor. Pentru a rezolva acest lucru, trebuie să setați error_reporting la un nivel care exclude E_WARNING. Versiunile PHP 4.3.7 și mai vechi pot detecta că IIS-ul problematic se află pe partea serverului atunci când deschideți un flux folosind un wrapper https://și nu afișează un avertisment. Dacă utilizați fsockopen() pentru a crea ssl:// priza, sunteți responsabil pentru identificarea și suprimarea acestui avertisment.

Top articole similare