Üzerine getting herhangi bir dosya önlemek için, muhtemelen ilk bir dizine zip dosyasını ayıklamak istiyorum. Ben, rasgele bir isim ile bir dizin oluşturmak yönetmen içine zip ayıklamak ve daha sonra herhangi bir alt dizinleri kontrol ediyorum:
<?php
// Generate random unzip directory to prevent overwriting
// This will generate something like "./unzip<RANDOM SEQUENCE>"
$pathname = './unzip'.time().'/';
if (mkdir($pathname) === TRUE) {
$zip = new ZipArchive;
if ($zip->open('latest.zip') === TRUE) {
$zip->extractTo($pathname);
// Get subdirectories
$directories = glob($pathname.'*', GLOB_ONLYDIR);
if ($directories !== FALSE) {
foreach($directories as $directory) {
$dir_handle = opendir($directory);
while(($filename = readdir($dir_handle)) !== FALSE) {
// Move all subdirectory contents to "./unzip<RANDOM SEQUENCE>/"
if (rename($filename, $pathname.basename($filename)) === FALSE) {
print "Error moving file ($filename) \n";
}
}
}
}
// Do whatever you like here, for example:
unlink($pathname.'installer.php');
}
// Clean up your mess by deleting "./unzip<RANDOM SEQUENCE>/"
}
Ben bu kodu test değil, bu nedenle, Windows sistemlerinde amaçlanan olarak kendi risk kullanımı, aynı zamanda, işe yarayabilir. Ayrıca, ben kullanılan tüm fonksiyonları için belgelerine göz atın: