Upload на *.gif

Код:
<?php 
$MAX_SIZE = 1048576; //max golemina sega e 1mb
$FILE_EXTS = array('.gif'); 
$site_name = $_SERVER['HTTP_HOST']; 
$url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); 
$url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 
$upload_dir = "gifove/"; 
$upload_url = $url_dir."/gifove/"; 
$message =""; 
if (!is_dir("gifove")) { 
if (!mkdir($upload_dir)) 
die ("upload_files директорията не съществува и създаването и е невъзможно."); 
if (!chmod($upload_dir,0755)) 
die ("change permission to 755 failed."); 
} 
if ($_REQUEST[del] && $DELETABLE) { 
$resource = fopen("log.txt","a"); 
fwrite($resource,date("Ymd h:i:s")."DELETE - $_SERVER[REMOTE_ADDR]"."$_REQUEST[del]\n"); 
fclose($resource); 
if (strpos($_REQUEST[del],"/.")>0); 
else if (strpos($_REQUEST[del],$upload_dir) === false); 
else if (substr($_REQUEST[del],0,6)==$upload_dir) { 
unlink($_REQUEST[del]); 
print "<script>window.location.href='$url_this?message=deleted successfully'</script>"; 
} 
} 
else if ($_FILES['userfile']) { 
$resource = fopen("log.txt","a"); 
fwrite($resource,date("Ymd h:i:s")."UPLOAD - $_SERVER[REMOTE_ADDR]" 
.$_FILES['userfile']['name']." " 
.$_FILES['userfile']['type']."\n"); 
fclose($resource); 
$file_type = $_FILES['userfile']['type']; 
$file_name = $_FILES['userfile']['name']; 
$file_ext = strtolower(substr($file_name,strrpos($file_name,"."))); 
if ( $_FILES['userfile']['size'] > $MAX_SIZE) 
$message = "Този файл е над 1mb."; 
else if (!in_array($file_ext, $FILE_EXTS)) 
$message = "Извинете, $file_name($file_type) не може да се качи(файла не е поддържан)."; 
else 
$message = do_upload($upload_dir, $upload_url); 
print "<script>window.location.href='$url_this?message=$message'</script>"; 
} 
else if (!$_FILES['userfile']); 
else 
$message = "Невалиден формат."; 
$handle=opendir($upload_dir); 
$filelist = ""; 
while ($file = readdir($handle)) { 
if(!is_dir($file) && !is_link($file)) { 
$filelist .= "<a href='$upload_dir$file'>".$file."</a> - URL: <b>$upload_url$file</b>"; 
if ($DELETABLE) 
$filelist .= " Качен на ".date("d-m H:i", filemtime($upload_dir.$file)) 
.""; 
$filelist .= " <a style='text-decoration:none; font-weight:bold' href='?del=$upload_dir".urlencode($file)."' title='delete'>x</a>"; 
$filelist .="<br>"; 
} 
} 
function do_upload($upload_dir, $upload_url) { 

$temp_name = $_FILES['userfile']['tmp_name']; 
$file_name = $_FILES['userfile']['name']; 
$file_name = str_replace("\\","",$file_name); 
$file_name = str_replace("'","",$file_name); 
$file_path = $upload_dir.$file_name; 
if ( $file_name =="") { 
$message = "Грешно име"; 
return $message; 
} 
$result = move_uploaded_file($temp_name, $file_path); 
if (!chmod($file_path,0777)) 
$message = "change permission to 777 failed."; 
else 
$message = ($result)?"$file_name е качен успешно." : 
"Има грешка с избрания файл."; 
return $message; 
} 
?> 
<html> 
<head> 
<title>Форма за качване</title> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> 
</head> 
<body> 
<br><br> 
<center> 
<font color=red><?=$_REQUEST[message]?></font> 
<br> 
<form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post"> 
Качи файл <input type="file" id="userfile" name="userfile"> 
<input type="submit" name="upload" value="Upload"> 
</form>
<br><b><u>Качени файлове:</b></u><br><br> 
По-долу е индексирането на файлове: 
<?=$filelist?><br>Този скрипт е направен от 
<a style="text-decoration:none" href="http://deam0n.hit.bg">deam0n</a> 
</sup></small> 
</center>

П.С. този скрипт беше някъде в уроците, но не можах да го намеря и затова го постнах.
 
Това, което си дал, е прекалено много код, а аз по-горе написах какво искам .. все пак мерси :roll: сега ще го разгледам и редактирам където трябва, па да видим какво ще излезе. o_0

EDIT: оставих го :o

Мисля, че намерих това което ми трябва:
http://us3.php.net/features.file-upload
 
Ами имаш 2 варианта:
Да фкарваш всички файлове в 1 масив и след това да ги обработваш ( имаш на инпута name=faila[] )
Или на всеки инпут да зададеш различно име и да обработваш всяко поотделно ( на първия name=fail1 ,2рия name=fail2 и тн.)

Май е време да напиша урока за качване на много файлове ,но доста ме мързи :)
 
Абе.. позакърпих нещо :)

Код:
<form action="" method="post" enctype="multipart/form-data">
 <input type="file" name="pictures[]" /><br />
 <input type="file" name="pictures[]" /><br />
 <input type="file" name="pictures[]" /><br />
 <input type="submit" value="Качи!" />
</form>

<?php
foreach ($_FILES["pictures"]["error"] as $key => $error) {
  if ($error == UPLOAD_ERR_OK) {
    $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
    $name = $_FILES["pictures"]["name"][$key];
    $type = $_FILES["pictures"]["type"][$key];
    $size = $_FILES["pictures"]["size"][$key];
    $max = "102400"; // 1024 = 1KB .. 10240 = 10KB и т.н.

    if ($type != "image/gif") {
     die('<div style="font-family:verdana;font-size:10px;">
     <b>ГРЕШКА:</b> файла <b>' . $name . '</b> не е image/gif</div>');
    }

    if (isset($max)) {
      if($size > $max) { 
     die('<div style="font-family:verdana;font-size:10px;">
     <b>ГРЕШКА:</b> големината на файла <b>' . $name . '</b> надхвърля лимита</div>');
      }
    }

    if (file_exists($name)) {
     die('<div style="font-family:verdana;font-size:10px;">
     <b>ГРЕШКА:</b> вече съществува файл с име <b>' . $name . '</b></div>');
    }

    move_uploaded_file($tmp_name, "$name");
  }
}
?>

Само не ми е ясно защо дава в началото грешка на foreach .. ако цъкна Качи! без да избирам файлове (също и ако има избран/и), грешката изчезва - всичко си работи!? :shock:

Warning: Invalid argument supplied for foreach() in ...
 
Код:
<form action="" method="post" enctype="multipart/form-data"> 
 <input type="file" name="pictures[]" /><br /> 
 <input type="file" name="pictures[]" /><br /> 
 <input type="file" name="pictures[]" /><br /> 
 <input type="submit" name="submit" value="Качи!" /> 
</form> 

<?php 
if($_POST['submit'])
{
if(!$_POST['pictures']=="")
{
foreach ($_FILES["pictures"]["error"] as $key => $error) { 
  if ($error == UPLOAD_ERR_OK) { 
    $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; 
    $name = $_FILES["pictures"]["name"][$key]; 
    $type = $_FILES["pictures"]["type"][$key]; 
    $size = $_FILES["pictures"]["size"][$key]; 
    $maxfilesize = "102400"; // 1024 = 1KB ... 102400 = 100KB ;] и мараа 

    if ($type != "image/gif") { 
     die('<div style="font-family:verdana;font-size:10px;"> 
     <b>ГРЕШКА:</b> разрешено е качването само на image/gif</div>'); } 

    if(isset($maxfilesize)) { 
      if($size > $maxfilesize) { 
     die('<div style="font-family:verdana;font-size:10px;"> 
     <b>ГРЕШКА:</b> големината на файла надхвърля лимита</div>'); 
      } 
    } 

    move_uploaded_file($tmp_name, "$name"); 
  } 
} 
}
else
{
echo "Не е избран файл";
}
}
?>
:?
 
Ок, има напредък, но проверката дали е избран файл нещо не става :/

Код:
<form action="" method="post" enctype="multipart/form-data">
 <input type="file" name="pictures[]" /><br />
 <input type="file" name="pictures[]" /><br />
 <input type="file" name="pictures[]" /><br />
 <input type="submit" name="submit" value="Качи!" />
</form>

<div style="font-family:verdana;font-size:11px;">
<?php
if(isset($_POST['submit'])) {
foreach ($_FILES["pictures"]["error"] as $key => $error) {
  if ($error == UPLOAD_ERR_OK) {
    $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
    $name = $_FILES["pictures"]["name"][$key];
    $type = $_FILES["pictures"]["type"][$key];
    $size = $_FILES["pictures"]["size"][$key];
    $max = "102400"; // 1024 = 1KB .. 10240 = 10KB и т.н.

    if ($type != "image/gif") {
     die('<b>ГРЕШКА:</b> файла <b>' . $name . '</b> не е image/gif');
    }

    if (isset($max) && ($size > $max)) {
     die('<b>ГРЕШКА:</b> големината на <b>' . $name . '</b> надхвърля лимита с <b>' . ($size - $max) . '</b> bytes');
    }

    if (file_exists($name)) {
     die('<b>ГРЕШКА:</b> вече съществува файл с име <b>' . $name . '</b>');
    }

    move_uploaded_file($tmp_name, "$name");
  }
 }
}
else { echo "Моля изберете файл(ове) за качване!"; } 
?>
</div>

А някаква алтернатива на die ? Тоест скрипта да не "умира" а просто да прескача файла (да не се качва).. един вид да го игнорира!?
 
мм
пробвай така .. сега нямам време да го пробвам..

Код:
<form action="" method="post" enctype="multipart/form-data">
 <input type="file" name="pictures[]" /><br />
 <input type="file" name="pictures[]" /><br />
 <input type="file" name="pictures[]" /><br />
 <input type="submit" name="submit" value="Качи!" />
</form>

<div style="font-family:verdana;font-size:11px;">
<?php
if(isset($_POST['submit'])) {
foreach ($_FILES["pictures"]["error"] as $key => $error) {
  if ($error == UPLOAD_ERR_OK) {
    $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
    $name = $_FILES["pictures"]["name"][$key];
    $type = $_FILES["pictures"]["type"][$key];
    $size = $_FILES["pictures"]["size"][$key];
    $max = "102400"; // 1024 = 1KB .. 10240 = 10KB и т.н.
$msg ='';
$ok = true;
    if ($type != "image/gif") {
    $msg.= ('<b>ГРЕШКА:</b> файла <b>' . $name . '</b> не е image/gif <br/>');
	$ok = false;
    }

    if (isset($max) && ($size > $max)) {
     $msg.= ('<b>ГРЕШКА:</b> големината на <b>' . $name . '</b> надхвърля лимита с <b><br/>' . ($size - $max) . '</b> bytes');
	 	$ok = false;
    }

    if (file_exists($name)) {
     $msg.= ('<b>ГРЕШКА:</b> вече съществува файл с име <b>' . $name . '</b><br/>');
	 	$ok = false;
    }
if($ok){
    move_uploaded_file($tmp_name, $name); } else { echo $msg;}
  }
 }
}
else { echo "Моля изберете файл(ове) за качване!"; }

?>

</div>
 

Back
Горе