Я использую этот код для чтения содержимого защищенного каталога (имя пользователя и пароль), называемого (защита).
<?php
require_once("admin/global.inc.php");
// increase script timeout value
ini_set('max_execution_time', 300);
//Generate a new flag
$random = (rand(000000,999999));
$date = date("y-m-d");
// create object
$zip = new ZipArchive();
// open archive
if ($zip->open("$date-$random.zip", ZIPARCHIVE::CREATE) !== TRUE) {
die ("Could not open archive");
}
// initialize an iterator
// pass it the directory to be processed
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("protect/")); //check question #2
// iterate over the directory
// add each file found to the archive
foreach ($iterator as $key=>$value) {
if ($key != 'protect/.htaccess')
{
$zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
$query="INSERT INTO `archives_logs` (`id`, `file`, `flag`, `date`) VALUES (NULL, '$key', '$random', '$date')";
$query_result = mysql_query ($query);
}
}
// close and save archive
$zip->close();
echo "Archive created successfully.";
?>
Если я помещаю свой файл кода в место, отличное от защищенного каталога, мне нужно изменить путь к каталогу, который нужно сжать, что нормально, НО проблема в том, что все каталоги в пути включены в Zip-архив. Итак, если открыть сжатый файл, я получаю: www/username/public_html/etc...
Вот структура каталогов: www/protect/(здесь должны быть сжаты файлы) www/compress_code.php (вот мой текущий файл кода)
Путь, по которому я хочу разместить свой файл кода: www/protect/admin/files/compress_code.php
Q1) Как сохранить файл кода в последнем указанном месте БЕЗ включения пути в файл ZipArchive?
Q2) Когда мой код находится в том же месте каталога, который нужно сжать, и когда я открываю сжатый файл, я вижу, защитите/(файлы). Могу ли я добавить только содержимое защищенного каталога в Zip-архив, не включая сам каталог?