ฉันคิดว่ารหัสของคุณมาจากการสอนออนไลน์ที่ไหนสักแห่ง? ในกรณีดังกล่าวงานที่ดีพยายามที่จะคิดออกเอง ในทางกลับกันความจริงที่ว่ารหัสนี้สามารถเผยแพร่ทางออนไลน์ได้ที่ไหนสักแห่งเป็นวิธีที่ถูกต้องในการคลายซิปไฟล์เป็นเรื่องที่น่ากลัวเล็กน้อย
PHP มีส่วนเสริมในตัวสำหรับจัดการกับไฟล์บีบอัด ไม่จำเป็นต้องใช้system
สายสำหรับสิ่งนี้ ZipArchive
เอกสารเป็นตัวเลือกหนึ่ง
$zip = new ZipArchive;
$res = $zip->open('file.zip');
if ($res === TRUE) {
$zip->extractTo('/myzips/extract_path/');
$zip->close();
echo 'woot!';
} else {
echo 'doh!';
}
นอกจากนี้ตามที่คนอื่น ๆ ได้แสดงความคิดเห็น$HTTP_GET_VARS
ได้ถูกคัดค้านตั้งแต่รุ่น 4.1 ... ซึ่งเป็นเวลานานในการ reeeeeally ที่ผ่านมา อย่าใช้มัน ใช้$_GET
superglobal แทน
สุดท้ายให้ระวังอย่างมากเกี่ยวกับการยอมรับอินพุตใดก็ตามที่ส่งผ่านไปยังสคริปต์ผ่าน$_GET
ตัวแปร
ป้อนผู้ใช้ให้สะอาดอยู่เสมอ
UPDATE
ตามความคิดเห็นของคุณวิธีที่ดีที่สุดในการแตกไฟล์ zip ลงในไดเรกทอรีเดียวกันที่อยู่นั้นคือการกำหนดเส้นทางฮาร์ดไปยังไฟล์และแยกไฟล์ไปยังตำแหน่งนั้นโดยเฉพาะ ดังนั้นคุณสามารถทำได้:
// assuming file.zip is in the same directory as the executing script.
$file = 'file.zip';
// get the absolute path to $file
$path = pathinfo(realpath($file), PATHINFO_DIRNAME);
$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
// extract it to the path we determined above
$zip->extractTo($path);
$zip->close();
echo "WOOT! $file extracted to $path";
} else {
echo "Doh! I couldn't open $file";
}