Cum se lucrează cu php și ftp

Când trebuie să utilizez clasa FTP?

Acest tip de clasă poate fi folosit în mai multe cazuri. Câteva scenarii pot fi:

Automatizarea încărcării imaginilor, cum ar fi o galerie, pe site-ul clientului (în mod ideal - în combinație cu sfatul meu pentru redimensionarea imaginilor);







Faceți copii de siguranță în afara site-ului, transferând fișierul de rezervă al bazei de date de la un server la altul. (Notă: nu este recomandată pentru informații sensibile, deoarece FTP nu este un protocol foarte sigur).

Notă: puteți întâmpina dificultăți în lucrul cu FTP, deoarece diferite servere au configurații diferite. Acest cod a fost testat cu succes pe mai multe servere FTP.

Ce este FTP?

FTP: "Un protocol de rețea standard folosit pentru a copia un fișier de la o gazdă la alta."

FTP sau Protocolul de transfer de fișiere este, prin definiție, Wikipedia: "Un protocol de rețea standard folosit pentru a copia un fișier de la o gazdă la alta printr-o rețea bazată pe TCP / IP, cum ar fi Internetul."

De fapt, vă permite să copiați fișierul (fișierele) de la un computer la altul.

Pasul 1 - Pregătirea

Să începem cât mai curând cu cel mai ușor. La baza noului proiect, creați două fișiere: index.php și ftp_class.php.

Fișierul care creează obiectul și solicită metodele necesare - index.php - este pagina noastră principală. ftp_class.php este clasa noastră FTP.

În următorul pas, vom crea o clasă "schelet". Când este gata, puteți merge mai departe și puteți încerca să faceți fiecare pas.

Cum se lucrează cu php și ftp

Pasul 2 - Instalați clasa

Rezistența programării orientate pe obiecte (Object Oriented Programming - OOP) este aceea că oferă un cod complex și o interfață ușor de utilizat. Când creați o clasă, luați în considerare o clasă ca un șablon - puteți încapsula (sigilam) datele, care este un cuvânt simplu de slang pentru un termen referitor la ascunderea datelor. Apoi puteți folosi această clasă din nou și din nou fără a trebui să rescrieți părți ale codului. În schimb, trebuie doar să apelați metode adecvate (termenul "metoda" este același ca și funcția).

Să începem să ne creăm propria clasă ftp. Deschideți fișierul ftp_class.php și adăugați următorul cod. Aceasta este structura de bază a scheletului de clasă, pe care am numit-o "FTPClient".

Funcția de construcție, cunoscută ca constructor, este o metodă de clasă specială care este apelată automat când creați un obiect nou sau un exemplu de clasă. Acesta este de obicei un loc minunat pentru a adăuga inițializarea; dar pentru scopul de azi nu avem nevoie de ea. Cu toate acestea, o vom pune aici pentru utilizare ulterioară.

Rețineți că pentru metoda constructului folosim un dublu subliniere.

Pasul 3 - Variabile de clasă

Apoi, vom instala mai multe variabile de clasă sau proprietăți.

Prefixul "privat" definește domeniul de aplicare al variabilei. În acest caz, aceasta înseamnă că nu există acces la variabila din afara clasei din nicăieri.

Variabila $ connectionId va conține firul de conectare. Celelalte două conțin starea și mesajele. $ loginOk va fi utilă pentru a determina dacă suntem conectați corespunzător.

Pasul 4 - Scrieți un mesaj simplu

În aproape fiecare metodă, numim o metodă numită "logMessage". Acesta este cel mai de bază instrument de gestionare a mesajelor care ne va permite să colectăm orice mesaje create de clasa noastră, astfel încât să poată fi garantat utilizatorului un răspuns.

Rețineți că nu returnăm aceste mesaje din metodele lor. În schimb, vom reveni adevărate sau false, pe baza faptului dacă operația individuală a avut succes. Are avantajele sale, dar, în plus, nu detaliază utilizatorul ce se întâmplă.

Adăugați următoarele două metode, astfel încât să puteți determina ce sa întâmplat bine.

Această metodă ia variabila $ message. Conținutul variabilei este apoi stocat în matricea de clasă datorită liniei: $ this-> messageArray [] = $ message;

Din moment ce $ messageArray este o variabilă de clasă, o putem accesa folosind intrarea $ this->.

Fiind în interiorul clasei, acest lucru se referă la obiectul propriu-zis.

Pentru a returna acest mesaj, sunăm getMessages.

Această metodă este deschisă. După cum sa menționat deja, aceste cazuri închise / deschise se referă pur și simplu la domeniul variabilei sau, în acest caz, la metoda. O metodă închisă (sau variabilă) nu poate fi accesată din afara clasei, în timp ce se poate accesa o metodă deschisă (sau variabilă).

Din moment ce variabila noastră este privată, avem nevoie de o modalitate de accesare a acesteia. Facem acest lucru prin atribuirea clasei noastre o metodă publică, la care avem apoi acces în afara clasei. S-ar putea să te întrebi de ce nu putem face doar variabila open messageArray. Putem; doar nu este foarte bun.

Notă: rețeaua este plină de exemple de manipulatoare de mesaje în culori pline sau de clase dedicate acestora. Lucrăm la o simplă punere în aplicare a scopului acestui manual.

Pasul 5 - Alăturați-vă

În acest moment, vom adăuga metoda de conectare. Aceasta ne va permite să ne conectăm la serverul FTP.

Noi trădăm informații: server ($ server), username ($ ftpUser) și parola ($ ftpPassword) pentru a stabili conexiunea.

Prima linie de cod deschide o conexiune FTP la un server separat folosind ftp_connect. Stocăm conexiunea noastră în variabila de clasă, $ connectionId, descrisă mai sus.
Codul ftp_login ne înregistrează într-o conexiune separată, trecând ID-ul de conectare, numele de utilizator și parola.

Determinați dacă conexiunea a avut succes. Apoi, scrieți rezultatele, apelând metoda logMessage () a mesajului simplu de gestionare a mesajului și trimiți un șir în jurnal. Amintiți-vă: pentru a accesa logMessage (), folosim $ this->, deoarece aceasta este o variabilă de clasă.







Cum se lucrează cu php și ftp

Cadrul YII2. Dezvoltare rapidă cu cadrul PHP modern

Aflați complexitatea dezvoltării web moderne cu ajutorul cadrului YII2

Pasul 6 - Apelați obiectul

Acum, că clasa noastră funcționează, o putem testa! Deschideți fișierul index.php și adăugați următorul cod.

Veți avea nevoie de acces la serverul FTP. Dacă doriți să instalați propriul server, încercați Filezilla - este gratuit.

Veți observa că am adăugat aici detaliile serverului FTP. În mod ideal, ele vor fi stocate în fișierul de configurare. Modificați-le la setările FTP.

După definirea detaliilor serverului, vom include o clasă cu includerea ('ftp_class.php'); Acest lucru înseamnă: faceți clasa accesibilă din interiorul acestei pagini. Următoarea linie creează un obiect al clasei FTP și o stochează în variabila $ ftpObj. $ ftpObj va fi acum folosit pentru a accesa orice metodă deschisă în interiorul clasei noastre. Acest lucru se face folosind intrarea -> exact așa cum face următorul rând, apelând metoda $ ftpObj -> connect și trecând detaliile serverului nostru.

Când clasa este deja în vigoare, este ușor de văzut că conectarea la un server FTP este într-adevăr o sarcină ușoară!

În ultima etapă, am putea încheia apelul de conexiune în instrucțiunea if, după cum se arată mai jos. Apoi, dacă conexiunea nu poate fi stabilită, codul dependent nu va fi executat. Apoi, putem trimite mai multe mesaje către utilizator, cum ar fi "conectat" sau "eșuat".

Se pare că este bine, deși codul nostru se va umfla destul de repede din sugestiile IF / ELSE, dacă îl adăugăm la toate apelurile noastre. În schimb, aș sugera o alternativă care să faciliteze continuarea lucrărilor și să facă codul mai curat.

Vă amintiți metodele de gestionare a mesajelor pe care le-am adăugat? Dacă doriți să vedeți mesajele generate de clasă - utile pentru depanare și răspuns - puteți adăuga următorul cod după orice metodă pe care o apelați.

Acesta va afișa mesajul de clasă.

Pasul 7 - Efectuarea primului nostru director

Ei bine, este timpul să facem ceva util. Prima metodă pe care o vom crea este makeDirmethod. Așa cum era de așteptat, va crea un director pentru noi pe server. Singurul parametru pe care îl vom da este calea directorului și numele dosarului; să o numim directorul $. Linia magică aici este funcția ftp_mkdirbuilt-in. Pentru a crea un dosar, acesta folosește directorul "connectionId" salvat și directorul variabil transferat $.

Adăugați următorul cod în fișierul ftp_class.php:

Variabila $ dir este setată la numele directorului pe care trebuie să-l creăm pe server. În acest caz, "fotografii" ("fotografii"). Următoarea linie apelează metoda care creează dosarul.

Dacă primiți mesajul de eroare "Permis refused", asigurați-vă că puteți scrie în dosarul specificat. S-ar putea să trebuiască să creați un director în interiorul directorului, cum ar fi / httpdocs.

Pasul 8 - Încărcarea fișierului

În continuarea lucrării, să descărcăm o fotografie numită zoe.jpg. La descărcarea unui fișier, trebuie să determinăm tipul de fișier cu care lucrăm - binar sau ascii? Practic, atunci când descărcați un fișier text, ar trebui să utilizați ascii; altfel trebuie să fie setat la binar.

Începem prin a seta o matrice cu toate extensiile care vor fi folosite pentru a descărca tipul ascii.

Apoi returnați extensia fișierului nostru pentru a putea testa dacă aparține tipurilor ascii. Definim acest lucru prin obținerea extensiei fișierului care urmează să fie descărcat. Metoda simplă și rapidă pe care am folosit-o aici este de a "extrage" fișierul cu "." Ca delimitator. Deci, fișierul este împărțit în fragmente și stocat ca o matrice. Folosind o altă funcție PHP încorporată, "end", selectăm ultimul element al matricei care conține extensia noastră. Acesta este un fragment foarte mic de cod mic.

Apoi, verificăm dacă extensia noastră apare în listă (cu in_array) de extensii de fișiere care ar trebui încărcate ca tip ascii. Dacă apare în listă, setați variabila $ mode la FTP_ASCII; altfel, vom concluziona că acesta este un tip binar și că alocați modul $ la FTP_BINARY.

ftp_put descarcă fișierul din locația dvs. într-un fișier la distanță de pe serverul ftp. Îi transmitem "connectionId", calea către fișierul pe care trebuie să o încărcăm ($ fileTo), calea fișierului care trebuie încărcată ($ fileFrom) și modul ($ mode) pe care tocmai l-am definit.

Cum se lucrează cu php și ftp

Apoi, adăugați următoarea metodă la fișierul ftp_class.php:

Desigur, puteți crea sau încărca orice nume de folder la discreția dvs.! Adăugați următorul fragment de cod în fișierul index.php și modificați-l corespunzător.

În acest moment, ar trebui să vă obișnuiți cu cât de ușor este să utilizați această clasă! Facem doar apeluri separate pentru a ne îndeplini sarcinile - și toate datorită programării orientate pe obiecte!

Să confirmăm acum că fișierul nostru se află într-un dosar cu fotografii. Acest lucru se poate face accesând folderul "foto" de pe server și afișând conținutul acestuia.

Metoda changeDir folosește "ftp_chdir" pentru a schimba directorul curent pe serverul ftp. Pentru a schimba directorul, pur și simplu trimite-l. Simplu și simplu.

getDirListing va afișa conținutul directorului în care utilizați funcția "ftp_nlist". Aceasta returnează o listă de fișiere din acest director. Actualul director este instalat în mod implicit, deci nu este necesar să furnizați parametri.

Metoda getDirListing returnează un matrice care conține lista adresei noastre.

Rezultatul dvs. ar trebui să arate astfel:

Cum se lucrează cu php și ftp

Pasul 10 - Încărcarea fișierului

Pe măsură ce abordăm sfârșitul tutorialului, continuăm să încărcăm fișierul. Metoda începe cu același cod ca uploadFile, unde determină dacă fișierul trebuie să fie încărcat, ascii sau binar.

Pentru această metodă, pur și simplu treceți numele fișierului (și probabil calea, în funcție de faptul că sunteți în același folder ca fișierul pe care doriți să îl descărcați), pe care doriți să îl încărcați și numele pe care doriți să îl atribuiți acestui fișier pe mașina dvs. client.

Pentru a încărca un fișier, trebuie să apelați ftp_get.

Deci, fișierul este descărcat de la un server de la distanță la mașina noastră locală. Este nevoie de următorul parametru: ID-ul conexiunii noastre, calea sau numele fișierului pentru stocarea locală (va fi suprascrisă dacă există deja) ($ fileTo), locația și numele fișierului de pe serverul de la distanță ($ fileFrom) și modul ($ mode).

Vom descărca același fișier care a fost descărcat, salvându-l sub un alt nume pe mașina dvs. client.

Notă: din nou, asigurați-vă că permisiunile sunt setate corect!

Deoarece acum trebuie să fim în dosarul cu fotografii, nu adăugăm calea la variabila $ fileFrom - doar numele fișierului.

Pasul 11 ​​- Finalizați

Pentru a termina complet cu clasa, să adăugăm o metodă numită metoda de clasă magică, __deconstruct. Această metodă închide conexiunea noastră atunci când referința obiect nu mai există - este posibil să fi fost închisă. În orice caz, acest cod a început și conexiunea este închisă. Este corect să o includeți, deși nu este obligatorie.

concluzie

Ei bine, asta-i tot! Sper că acum înțelegeți mai bine cum să utilizați FTP cu PHP. Ar trebui să aveți acum competențele necesare pentru a extinde această clasă pentru a sprijini alte sarcini simple, cum ar fi redenumirea sau ștergerea fișierelor și dosarelor.

Nu ezitati sa ne anuntati daca creati clienti fideli PHP FTP!

Revizie: Rog Victor și Andrei Bernatsky. Comanda de tip web.

Cum se lucrează cu php și ftp

Cadrul YII2. Dezvoltare rapidă cu cadrul PHP modern

Aflați complexitatea dezvoltării web moderne cu ajutorul cadrului YII2

Cele mai recente știri despre dezvoltarea IT și web pe canalul nostru de telegrame







Articole similare

Trimiteți-le prietenilor: