Menyahzip Fail dengan PHP: Pendekatan Segura
Menyahzip fail ialah tugas biasa dalam pembangunan web. Semasa melaksanakan perintah sistem('unzip File.zip') secara langsung mungkin berfungsi, menggunakan parameter URL untuk menentukan nama fail boleh menjadi mencabar.
Perangkap dengan Menggunakan Parameter URL
Isu dalam kod yang disediakan timbul apabila menggunakan $master.zip dalam perintah system('unzip $master.zip'). Pembolehubah dalam PHP tidak diinterpolasi dalam rentetan yang disertakan dalam petikan tunggal ('). Oleh itu, arahan akan cuba untuk melaksanakan unzip $master.zip, yang bukan nama fail yang dimaksudkan.
Penyelesaian yang Selamat dan Cekap
Untuk menyelesaikan isu ini, PHP sambungan terbina dalam untuk mengendalikan fail termampat harus digunakan. Satu sambungan sedemikian ialah ZipArchive. Berikut ialah kod yang disemak:
<?php // Get the filename from the URL parameter $filename = $_GET["master"]; // Instantiate the ZipArchive object $zip = new ZipArchive(); // Open the zip file $res = $zip->open($filename); // Check if the zip file was opened successfully if ($res === TRUE) { // Extract the contents of the zip file to the current directory $zip->extractTo('.'); // Close the zip file $zip->close(); echo "$filename extracted successfully."; } else { echo "Could not open $filename."; } ?>
Pertimbangan Tambahan
Apabila menerima input pengguna melalui pembolehubah $_GET, adalah penting untuk membersihkan input untuk mengelakkan kemungkinan serangan berniat jahat. Sentiasa sahkan dan tapis data yang diserahkan pengguna sebelum menggunakannya dalam kod PHP.
Mengekstrak ke Direktori yang Sama dengan Fail Zip
Jika lokasi pengekstrakan yang diingini adalah sama direktori di mana fail zip berada, tentukan laluan mutlak ke fail:
// Get the absolute path to the zip file $path = pathinfo(realpath($filename), PATHINFO_DIRNAME); // Extract the zip file to the determined path $zip->extractTo($path);
Dengan menggunakan teknik ini, anda boleh menyahzip fail dengan selamat dan cekap menggunakan PHP. Ingat untuk sentiasa mengutamakan pengesahan input dan langkah keselamatan apabila bekerja dengan data yang diserahkan pengguna.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahzip Fail dengan Selamat dalam PHP Menggunakan ZipArchive?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!