Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Bagaimana bekerja dengan PHP dan FTP

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Dika Budiaji (you can also view the original English article)

Dalam tutorial ini, tujuan kami adalah untuk membuat class FTP dengan PHP yang ditulis dengan baik, berguna, dan expandable.

Menguraikan tujuan kami

Hal ini selalu penting untuk pertama menguraikan persis apa fungsionaliti class Anda harus mencakup. Dalam kasus kami:

  • menghubungkan ke server
  • membuat folder pada server
  • upload file
  • mengubah direktori
  • mendaptkan daftar direktori
  • men-download file

Ketika saya menggunakan Class FTP?

Ada beberapa kasus ketika salah satu mungkin menggunakan class semacam ini. Beberapa skenario dapat:

  • Mengotomatisasi meng-upload gambar, seperti Galeri, untuk website klien (idealnya, dalam hubungannya dengan saya mengubah ukuran gambar tut)
  • Melakukan backup off-site dengan mentransfer file cadangan database dari server lain. (Catatan: ini tidak dianjurkan untuk informasi sensitif seperti FTP tidak sebuah protokol yang sangat aman.)

Catatan: Ini mudah untuk menjalankan menjadi masalah dengan FTP karena konfigurasi server yang berbeda. Kode ini telah diuji pada beberapa server FTP dengan sukses.


Apa itu FTP?

FTP: "standar jaringan protokol yang digunakan untuk menyalin file dari satu ke lainnya."

FTP, atau File Transfer Protocol, adalah, sebagaimana didefinisikan oleh Wikipedia: "Protokol jaringan standar yang digunakan untuk menyalin file dari satu host lain melalui jaringan berbasis TCP/IP, seperti Internet."

Pada dasarnya, hal ini memungkinkan Anda untuk menyalin file dari satu komputer ke yang lain.


Langkah 1 - persiapan

Kita akan mulai semudah mungkin. Dalam proyek baru Anda root, buat dua file: index.php dan ftp_class.php.

index.php file adalah halaman utama kami yang menciptakan obyek dan memanggil metode yang diperlukan. ftp_class.php hanya : class ftp kami.

Pada langkah berikutnya, kita akan membuat kerangka untuk class kami. Setelah ini, Anda akan dapat untuk mengikuti bersama dan mencoba setiap langkah.


Langkah 2 - membuat Class

Kekuatan dari object-oriented Programming (OOP) adalah untuk memberikan kode yang kompleks antarmuka yang mudah digunakan. Dengan menciptakan sebuah class--bayangkan class sebagai pola--Anda dapat merangkum data, yang hanya jargon untuk istilah yang merujuk kepada menyembunyikan data. Kami kemudian dapat menggunakan kembali class ini berulang-ulang tanpa perlu menulis ulang salah satu kode. Sebaliknya, Anda hanya perlu untuk memanggil metode yang sesuai (istilah "method" adalah sama dengan function).

Mari kita mulai menciptakan class ftp kami. Buka file ftp_class.php Anda, dan tambahkan kode berikut. Ini adalah struktur kerangka dasar class, yang saya bernama 'FTPClient'.

function construct, yang dikenal sebagai constructor, adalah metode class khusus yang dkpanggil secara otomatis oleh class ketika Anda membuat objek baru, atau contoh class. Ini biasanya adalah tempat yang bagus untuk menambahkan beberapa inisialisasi; Tapi untuk tujuan hari ini, kita tidak membutuhkannya. Meskipun demikian, kami akan membuat di sini untuk penggunaan di akan datang.

Harap dicatat bahwa kami menggunakan underscore ganda untuk construct method.


Langkah 3 - variabel class

Selanjutnya, kita akan mengatur set beberapa class variabel, atau property.

Awalan "private" mendefinisikan lingkup variabel. Dalam kasus ini, itu berarti bahwa variabel tidak dapat diakses dari mana saja di luar class.

Variabel $connectionId akan menyimpan stream koneksi kami. Dua lainnya menyimpan status dan pesan. $loginOk akan berguna ketika menentukan jika kita benar tersambung.


Langkah 4 - Simple Message Loggin

Dalam hampir setiap metode, kita akan memanggil method, bernama ' logMessage. Ini adalah message handler dasar, yang akan memungkinkan kita untuk menangkap setiap pesan yang dibuat oleh class kami sehingga kami dapat menyediakan user dengan umpan balik.

Perhatikan bahwa kita tidak mengembalikan pesan aktual dari dalam metode kami. Sebaliknya, kita mengembalikan true atau false, didasarkan pada apakah atau tidak berhasil operasi tertentu. Ini memiliki keuntungan, tetapi juga tidak detail kepada pengguna apa yang terjadi.

Menambahkan dua method berikut, sehingga kami dapat menentukan apa yang sukses.

Metode ini menerima $message variabel. Isi dari variabel ini kemudian disimpan ke dalam array clas kami, berkat line: $this->[messageArray] = $message;

Karena $messageArray variabel class, kita dapat mengakses, melalui $this-> notasi.

Dalam class, $this merujuk pada obyek itu sendiri.

Untuk mengambil pesan, kita memanggil getMessages.

method ini adalah method public. Seperti sebutkan sebelumnya, private/public ini hanya merujuk kepada lingkup variabel, atau dalam hal ini, metode. method private (atau variabel) dapat diakses di luar class, sedangkan metode publik (atau variabel) dapat.

Karena variabel kita private, kita perlu cara untuk mengaksesnya. Kita melakukan ini dengan memberikan class kami metode public, yang dapat kita akses di luar kelas. Anda mungkin bertanya-tanya mengapa kita tidak bisa hanya membuat variabel messageArray public. Kita bisa; yang mengatakan, hal ini hanya praktek yang tidak baik.

Catatan: Ada banyak contoh-contoh di web penangan pesan penuh, atau class yang didedikasikan untuk mereka. Kami sedang bekerja pada implementasi sederhana untuk tutorial ini.


Langkah 5 - menghubungkan

Dalam langkah ini, kami akan menambahkan metode connect. Ini akan memungkinkan kita untuk terhubung ke FTP server.

Kami pass informasi koneksi: server ($server), nama usename ($ftpUser), dan password ($ftpPassword) untuk memungkinkan kita untuk membuat sambungan.

Baris pertama dari kode membuka koneksi FTP, dengan ftp_connect, ke server tertentu. Kami menyimpan hubungan kami ke variabel class, $connectionId dijelaskan di atas.

Kode, ftp_login log kami untuk sambungan ditentukan, passing dalam id connection kami, username, dan password.

Anda mungkin telah memperhatikan ftp_pasv baris kode. Ini, sebagai komentar menyiratkan, on/off mode pasif. Saya sarankan Anda meninggalkan, namun, jika Anda mempunyai masalah menghubungkan, mencoba menyalakannya. Mode pasif dapat menyebabkan sedikit saat menghubungkan melalui FTP.

Kita menentukan jika sambungan berhasil. Kami kemudian log hasil dengan memanggil metode handler pesan sederhana, logMessage(), dan passing string untuk log. Ingat: kami menggunakan $this-> untuk mengakses logMessage(), karena variabel class.


Langkah 6 - memanggil objek

Sekarang bahwa kelas kami bekerja, kami dapat mengujinya! Buka index.php file, lalu tambahkan kode berikut.

Anda akan memerlukan akses ke server FTP untuk bermain bersama. Jika Anda ingin mengatur server sendiri, cobalah Filezilla - it's free, juga.

Anda akan memperhatikan saya telah menambahkan rincian server FTP di sini. Idealnya ini akan disimpan dalam file config Anda. Mengubah untuk menyesuaikan pengaturan server FTP Anda.

Setelah menentukan rincian server FTP kami, kami menyertakan class dengan include('ftp_class.php');. Ini berarti: membuat class tersedia dari dalam Halaman ini. Baris berikutnya menciptakan objek class FTP kami, dan menyimpannya dalam variabel, $ftpObj. $ftpObj sekarang dapat digunakan untuk mengakses setiap metode public dalam kelas kami. Hal ini dilakukan dengan menggunakan -> notasi, sama seperti baris berikut dengan memangil $ftpObj-> connect metode dan pasing itu rincian server kami.

Seperti yang Anda lihat, setelah kelas kami, menghubungkan ke server FTP kami benar-benar sangat mudah!


Langkah 6b - melihat Output

Pada langkah terakhir kami bisa membungkus panggilan connect dalam if statement, seperti yang ditunjukkan di bawah ini. Kemudian, jika kita gagal untuk menghubungkan, tergantung kode tidak akan dijalankan. Kami kemudian dapat output pesan ke pengguna, seperti "connected" atau "failed".

Ini apa-apa, meskipun kode kita akan dengan cepat menjadi agak bengkak dengan IF/ELSE statement, jika kita menambahkan ini ke semua panggilan kita. Sebaliknya, saya ingin menawarkan alternatif yang akan membuat hal-hal yang sedikit lebih bersih dan lebih mudah mengikuti.

Ingat pesan handler metode kami yang ditambahkan? Jika Anda ingin melihat pesan yang dihasilkan oleh class - membantu untuk debugging/feedback - Anda dapat menambahkan kode berikut setelah metode apapun yang Anda jalankan.

Ini akan menampilkan pesan classs.


Langkah 7 - membuat direktori pertama kami

Sangat baik, sekarang saatnya untuk melakukan sesuatu yang berguna. Metode pertama yang kita akan buat adalah metode makeDir. Seperti yang diharapkan, metode ini akan membuat direktori di server. Satu-satunya parameter yang kita akan di passing adalah directory path dan nama folder; kita akan menyebutnya $directory. Garis ajaib di sini adalah fungsi built-in ftp_mkdir. ini menggunakan "connectionId" yang disimpan dan passing di dalam variabel $directory untuk membuat folder.

Tambahkan kode berikut ke ftp_class.php file:

Dan, untuk panggil dari index.php file, tambahkan:

Variabel, $dir diatur ke nama folder yang kita ingin buat pada server. Dalam hal ini: "photos".

Baris berikutnya memnaggil metode yang akan membuat folder.

Jika Anda menerima galat "Permission denied", pastikan bahwa Anda dapat menulis dalam folder yang ditetapkan. Anda mungkin perlu membuat folder dalam direktori, seperti /httpdocs.


Langkah 8 - meng-upload File

Melanjutkan, mari kita meng-upload foto, namai ini zoe.jpg. Ketika meng-upload file, kita perlu menentukan jenis file yang kita upload - binary atau ascii? Pada dasarnya, jika Anda mengupload file teks, kita harus menggunakan ascii; Sebaliknya, itu harus diatur ke binary.

Kita mulai dengan mengatur sebuah array dengan semua ekstensi yang harus kita gunakan untuk meng-upload jenis ascii.

Kemudian, kita mengambil ekstensi file, sehingga kami dapat menguji jika itu adalah salah satu jenis ascii. Kita menentukan hal ini dengan ekstensi file kita meng-upload. Metode cepat dan kotor yang saya telah digunakan di sini adalah
oleh "expploding" file dengan menggunakan '.' sebagai delimiter. Ini akan membagi file menjadi potongan-potongan, dan menyimpannya sebagai array. Menggunakan built-in PHP fungsi yang lain, "end", kami memilih elemen array terakhir yang berisi ekstensi kami. Ini adalah sedikit rapi kode.

Selanjutnya, kita menguji jika ekstensi kami muncul di daftar (dengan in_array) dari ekstensi file yang harus diupload sebagai ascii. Jika muncul dalam daftar, kita menetapkan variabel $mode ke FTP_ASCII; Jika tidak, kami menganggap itu adalah jenis binary, dan menetapkan $mode nilai FTP_BINARY.

ftp_put upload file dari lokasi Anda lokal ke remote file di ftp server. Kami passing "connectionId" kita, path ke file kita ingin meng-upload ke ($fileTo), path
file kita ingin meng-upload ($fileFrom), dan mode ($mode) yang sudah kita ditentukan.

Selanjutnya, tambahkan metode berikut ke ftp_class.php file:

Tentu saja, Anda dapat membuat atau upload setiap nama folder yang Anda inginkan! Tambahkan potongan kode ini berikutnya ke index.php file, dan menyesuaikan sesuai.

Sekarang, Anda harus datang  dengan cara mudah hanya class ini yang digunakan! Kita hanya membuat satu panggilan untuk melakukan semua task--semua berkat object oriented programming!


Langkah 9 - melihat file

Mari kita sekarang konfirmasi bahwa file kami adalah dalam folder photo. Kita dapat melakukannya dengan menavigasi ke folder 'photo' pada server kami, dan kemudian menampilkan isi.

Metode changeDir menggunakan "ftp_chdir" untuk merubah dalam direktori di ftp server. Hanya pass ke direktori untuk mengubah. Sederhana dan manis.

ftp_class.php:

getDirListing akan menampilkan isi dalam direktori Anda  menggunakan fungsi "ftp_nlist". Fungsi ini mengembalikan daftar file dalam direktori tertentu. Direktori saat ini diatur secara default, sehingga Anda tidak perlu memberikan parameter apapun.

Jika Anda ingin, Anda dapat mengganti ini dengan passing di path $directory yang Anda ingin melihat isinya. $parameters variable defaults ke '-la' Ini adalah perintah Linux untuk menampilkan informasi lebih lanjut tentang direktori. Jangan ragu untuk menghapusnya atau masukan dalam string kosong.

ftp_class.php:

Metode getDirListing mengembalikan array yang berisi daftar direktori kami.

index.php

';

Hasil Anda akan terlihat seperti:


Langkah 10 - download File

Seperti yang kita menuju kesimpulan dari tutorial ini, kita selanjutnya beralih untuk men-download file. Metode dimulai dengan kode yang sama sebagai uploadFile, yang menentukan apakah file yang kita ingin mendownload ascii atau binary.

Untuk metode ini, Anda hanya memasukan nama file (dan mungkin path, tergantung pada jika Anda berada dalam folder yang sama sebagai file yang Anda ingin men-download) file untuk men-download, dan nama Anda ingin file tersebut memiliki pada mesin klien Anda.

Untuk men-download file, Anda perlu untuk memanggil ftp_get.

Ini akan mendownload file dari server remote ke mesin lokal kita. It menerima parameter berikut: id koneksi kami, path dan nama file untuk menyimpan sebagai secara lokal (akan ditimpa jika itu
sudah ada) ($fileTo), lokasi dan nama file pada server remote ($fileFrom), dan mode ($mode).

ftp_class.php

Kita akan men-download file yang sama yang kami upload menyimpannya dengan nama yang berbeda pada mesin klien kami.

Catatan: Sekali lagi, pastikan bahwa hak akses Anda ditetapkan dengan benar!

Karena kita sekarang harus di dalam folder photo kami, kami tidak menambahkan path ke variabel $fileFrom - hanya nama file.

index.php

Langkah 11 - menyelesaikan

Untuk menyelesaikan class kami, mari kita tambahkan class magic metode, __deconstruct. Metode ini menutup koneksi kita ketika referensi ke objek tidak ada lagi - mungkin halaman ditutup. Dalam setiap peristiwa, kode ini dijalankan di saat sambungan ditutup. Hal ini selalu praktik yang baik untuk menyertakan ini, meskipun tidak benar-benar perlu.


Kesimpulan

Yah yang melakukan hal itu! Saya harap Anda sekarang memiliki pemahaman yang lebih baik tentang bagaimana menggunakan FTP dengan PHP. Anda sekarang harus memiliki keterampilan yang diperlukan untuk memperluas class ini untuk mendukung tugas umum lainnya, seperti mengganti atau menghapus file dan folder.

Pastikan untuk memberitahu kami tahu jika Anda membuat klien PHP FTP keren!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.