2011-08-03 9 views
0

私はこのコードを使用して保護されたディレクトリ(ユーザー名&パスワード)の内容を(保護する)読み込みます。PHPでZipArchiveクラスを使用する

<?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.";  
?> 

私は保護されたディレクトリの場所よりもdiffererent場所に私のコードファイルを配置した場合、私は大丈夫である圧縮しようとするディレクトリのパスを変更する必要がありますが、問題は、パス内のすべてのディレクトリがあるということですZipアーカイブに含まれています。 だから私は、取得した圧縮ファイル開いている場合:WWW /ユーザ名/ public_htmlのは/ etc ...ここ

は、ディレクトリのstrcutureです: WWW /ここでは(/(ここでは、圧縮するファイル) WWW/compress_code.phpを保護ある私の現在のコードファイル)

私はあるに私のコードファイルを配置したいパス: WWW//管理/ファイル/ compress_code.php保護

私は私のコードファイルを保つにはどうすればよい

Q1)私のZipArchiveファイルにパスを含めずに最後に言及した場所?

Q2)私のコードが圧縮されるディレクトリの同じ場所にあり、私が見る圧縮ファイルを開くとき、/(ファイルを保護する)。ディレクトリ自体を含めずにZipアーカイブにprotectディレクトリの内容だけを追加できますか?

答えて

0

これは非常に簡単です:

  1. ストア変数でターゲットパス。
  2. ファイルを追加する前に、ローカルパスからターゲットパスを削除します。

    $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::SKIP_DOTS; 
    $target = 'protect/'; 
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($target, $flags)); 
    
    foreach ($iterator as $key=>$value) { 
        if ($key != "{$target}.htaccess") 
        { 
         $localname = substr($key, strlen($target)); 
         $zip->addFile($key, $localname) or die ("ERROR: Could not add file: $key"); 
        } 
    } 
    

    これは実際にあなたの質問の両方に答える必要があります。このよう

関連する問題