2011-07-26 12 views
0

私は全体の状況を説明することはつもりは難しいことですが、私はみます私のスクリプトは...正しく

をリンクが表示されていない私はで画像をzipパッケージを解凍私のイメージのホストのためのスクリプトを作りましたそれを特定の場所にコピーし、ファイルの名前をランダムなファイル名に変更し、複数のリンクを画像に出力します。最後の部分は正常に動作していません!画像に複数のリンクを出力することはできません。画像へのリンクを1つだけ出力し、残りはアップロードされたフォルダにありますが、リンクとしてリストされていません。

名前を変更したばかりの画像のサムネイルを生成するのと同じです。最初の画像に対してはサムネイルが1つだけ生成され、無視された場合は残りの画像が生成されます。 「私はこの問題は、foreachループの内側にあると思います

<?php 
session_start(); 
include('includes/imgit.class.php'); 
$IMGit = new imgit(); 

/** 
* @ignore 
*/ 
if (!defined('IN_IMGIT')) 
{ 
    exit; 
} 

$IMGit->error_report(true); 
$IMGit->disable(false); 
$IMGit->ieNote(true); 

if (isset($_POST['zipsent']) || $_POST['zipsent'] == true && isset($_FILES['archive'])) 
{ 
    if ($_FILES['archive']['size'] <= MAX_ZIPSIZE) 
    { 
     // Main variables 
     $key  = $IMGit->random_key(10); 
     $move_zip = move_uploaded_file($_FILES['archive']['tmp_name'], ZIP_PATH . $key . $_FILES['archive']['name']); 
     $zip  = ZIP_PATH . $key . $_FILES['archive']['name']; 
     $extension = substr($zip, -3); 
     $filename = $IMGit->zipContent($zip); // array 
     $url  = str_replace('www.', '', $IMGit->generate_site_url()); 

     // ZIP limit is 100 images 
     if (sizeof($filename) <= 100) 
     { 
      // Only ZIP archives 
      if ($extension == 'zip') 
      { 
       if ($filename) 
       { 
        foreach($filename as $key => $value) 
        { 
         // Get extension 
         $image_extension = substr($value, -3); 
         $image_extension = (strtoupper($image_extension)) ? strtolower($image_extension) : $image_extension; 
         $image_extRule = $image_extension == JPG || $image_extension == JPEG || $image_extension == GIF || $image_extension == PNG || 
              $image_extension == BMP || $image_extension == ICO; 

         if ($image_extRule) 
         { 
          // Set variables and do some processing 
          $unZip  = $IMGit->unZip($zip, IMAGES_PATH); 
          $url   = str_replace('www.', '', $IMGit->generate_site_url()); 
          $image_name = $IMGit->random_key(7) . $value; 
          $image_name = (strpos($image_name, ' ') !== false) ? str_replace(' ', '', $image_name) : $image_name; 

          if (file_exists(IMAGES_PATH . $filename[$key])) 
          { 
           // Rename extracted files 
           $rename = rename(IMAGES_PATH . $filename[$key], IMAGES_PATH . $image_name); 

           if ($rename && file_exists($zip) && sizeof($image_name)) 
           { 
            // Delete ZIP 
            unlink($zip); 

            // Set URL variables 
            $image_urls = $url . IMAGES_PATH . $image_name; 
            $image  = IMAGES_PATH . $image_name;  

            // Generate a thumbnail 
            $IMGit->generate_thumbnail($image_urls, $image_name, THUMBNAIL_SIZE, THUMBNAIL_SIZE, true, 'file', false, false, THUMBS_PATH); 
            $thumb_urls = $url . THUMBS_PATH . $image_name; 

            $filename[] = array('direct' => $image_urls, 'thumb' => $thumb_urls); 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 
else 
{ 
    header('Location: index.php'); 
} 

include('includes/header.php'); 
{ 
    if  ($_FILES['archive']['size'] > MAX_ZIPSIZE) { echo '<span id="home-info">The ZIP archive is bigger than 100 MB.</span>'; } 
    else if ($extension != 'zip') { echo '<span id="home-info">Only ZIP archives are upload ready.</span>'; } 
    else if (sizeof($filename) > 100) { echo '<span id="home-info">The number of the images inside the archive was more than 100.</span>'; } 
    else if (!$image_extRule) { echo '<span id="home-info">The extensions inside the ZIP did not match our allowed extension list.</span>'; unlink($zip); } // unlink zip if failed 
    else { echo '<span id="home-info">Image(s) was/were successfully uploaded!</span>'; } 
} 
?> 
</div> 
<br /><br /><br /> 
<a href="index.php"><img src="css/images/site-logo.jpg" id="logo" /></a> 
<br /><br /><br /><br /><br /> 
</div> 

<div id="box"> 
<?php 
    global $filename, $image_urls, $thumb_urls; 

    echo '<br />'; 
    echo '<div id="links">'; 
    echo '<table>'; 

    echo LINKS_DIRECT; 
    for($i = 0; $i < sizeof($filename); $i++) { echo $filename[$i]['direct'] . "\n"; } 
    echo LINKS_CLOSE; 

    echo LINKS_THUMB; 
    for($i = 0; $i < sizeof($filename); $i++) { echo $filename[$i]['thumb'] . "\n"; } 
    echo LINKS_CLOSE; 

    echo LINKS_BBCODE; 
    for($i = 0; $i < sizeof($filename); $i++) { echo '[IMG]' . $filename[$i]['direct'] . '[/IMG]' . "\n"; } 
    echo LINKS_CLOSE; 

    echo LINKS_HTML; 
    for($i = 0; $i < sizeof($filename); $i++) { echo '<a href="' . $filename[$i]['direct'] . '"><img src="' . $filename[$i]['thumb'] . '" /></a>' . "\n"; } 
    echo LINKS_CLOSE; 

    echo '</table>'; 
    echo '<br />'; 
    echo '<input type="reset" id="resetbtn-remote" class="button-sub" value="&laquo; Upload more" />'; 
    echo '<br />'; 
    echo '</div>'; 
?> 
</div> 

<?php include('includes/footer.php'); ?> 
</div> 
</body> 
</html> 

(それは数日前のforループだったが、同じ問題に直面していました)が、私は次のことができます。

これは私のコードがどのように見えるかですそれを修正するようだ。スクリプトがアーカイブ

  • スクリプトのサムネイルがジップにあったすべての画像のために生成されなければならない
  • 抽出されたファイルの名前を変更解凍私は
  • Zipアーカイブをアップロード

    • :私はショートバージョンでreexplainます
    • 複数のリンクは(失敗した)ジップに

    アイデアでしたか?すべての画像のマッチングを出力する必要があります(失敗しましたか)

  • 答えて

    0

    私は次のコード部分を削除することによって、この問題を修正:あなたの答え、クリスのため

    file_exists($zip) 
    
    1

    変数($ filename)を2つの異なる目的で再使用しています。上部には、このような行を追加します。その後、あなたがこれを行うコード、中

    $file_list = array(); 
    

    $filename[] = array('direct' => $image_urls, 'thumb' => $thumb_urls); 
    

    を...このように変更します。

    $file_list[] = array('direct' => $image_urls, 'thumb' => $thumb_urls); 
    

    その後ループするコードでは、代わりにforeachを使用してください。

    echo LINKS_DIRECT; 
    foreach ($file_list as $this_file) 
        echo $this_file['direct'] . "\n"; 
    echo LINKS_CLOSE; 
    
    echo LINKS_THUMB; 
    foreach ($file_list as $this_file) 
        echo $this_file['thumb'] . "\n"; 
    echo LINKS_CLOSE; 
    
    echo LINKS_BBCODE; 
    foreach ($file_list as $this_file) 
        echo '[IMG]' . $this_file['direct'] . '[/IMG]' . "\n"; 
    echo LINKS_CLOSE; 
    
    echo LINKS_HTML; 
    foreach ($file_list as $this_file) 
        echo '<a href="' . $this_file['direct'] . '"><img src="' . $this_file['thumb'] . '" /></a>' . "\n"; 
    echo LINKS_CLOSE; 
    

    HTMLフラグメントに定数を使用するなど、奇妙なことがたくさんあります。あなたのプロセスをもう一度見て、不要なステップと変数を取り除くべきだと思います。 globalいくつかのキーワードが使用されています...必要はないようです。

    +0

    感謝を。残念ながら、これは私の問題を解決しませんでした。私が最初の投稿で言ったように、画像のサムネイルは生成されていません。問題は、名前の変更が起こる場所のどこかにあることを意味します。しかし、あなたの答えは非常に便利でした。なぜなら、問題が解決されると、あなたが説明したフォームを使ってリンクが表示されると思います。 - 今、みんな、私がその問題がどこにあるのかを助けてください。 – Aborted

    +0

    私は問題を発見しましたが、私は方法がわからないので修正しませんでした。私に説明させてください。 'sizeof($ image_name)'というコードの部分を参照してください。'sizeof($ image_name)> 1'に変更しましたが、現在何も出力されていません。つまり、$ image_nameはただ一つの名前を生成しています。 – Aborted

    関連する問題