Penyahmampatan fail dalam PHP
Anda ingin menyahmampat fail menggunakan PHP tetapi menghadapi kesukaran apabila anda cuba menghantar nama fail melalui URL . Mari kita gali masalah dan berikan anda penyelesaian.
Analisis ralat
Anda mendapat nama fail melalui $_GET, tetapi $HTTP_GET_VARS yang sudah lapuk digunakan dalam kod, PHP mengesyorkan menggunakan $_GET. Selain itu, anda menggunakan system('unzip $master.zip') untuk unzip fail, yang tidak selamat kerana ia memerlukan panggilan sistem dilakukan pada pelayan.
Penyelesaian Disyorkan
PHP menyediakan sambungan yang direka khusus untuk mengendalikan fail termampat, iaitu ZipArchive. Adalah disyorkan untuk menggunakannya seperti ini:
$zip = new ZipArchive; $res = $zip->open('file.zip'); if ($res === TRUE) { $zip->extractTo('/myzips/extract_path/'); $zip->close(); echo '解压成功!'; } else { echo '解压失败!'; }
Kendalikan laluan relatif
Jika anda mahu fail diekstrak ke dalam direktori yang sama dengan fail, anda boleh menentukan fail daripada Laluan mutlak dan tentukan ia sebagai sasaran penyahmampatan seperti ini:
$file = 'file.zip'; $path = pathinfo(realpath($file), PATHINFO_DIRNAME); $zip = new ZipArchive; $res = $zip->open($file); if ($res === TRUE) { $zip->extractTo($path); $zip->close(); echo "解压成功! $file 已解压到 $path"; } else { echo "解压失败!无法打开 $file"; }
Petua Keselamatan
Sentiasa sahkan input pengguna untuk mengelakkan suntikan kod berniat jahat. Ingat:
Sentiasa sahkan input pengguna!
Atas ialah kandungan terperinci Bagaimana untuk Membongkar Fail dengan Selamat dari URL dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!