Търся "File Upload Script" за .rar разширение

chepa

Registered
Търся "File Upload Script" за .rar разширение :) ако може да ми дадете код + защити и проверки и всичко ;п
 
http://web.geobg.info/?id=37

Само е необходимо да редактираш списъка с разрешени типове на файлове и максималния размер на файла.
 
Ето в този код искам да направя да може само .rar и .zip разширения да се качват, но нещо не успях ще ми кажете ли къде грешя ?

Код:
			<?php
if($avatar == NULL){
echo '<center><img src="upload/no-avatar.png" width="150px" height="150px" alt=""/></center><br/>';
}
else{
echo'<center><img src="'.$_SESSION['avatar'].'" width="150px" height="150px" alt="'.$username.'"/></center><br/>';
}
echo'
<form method="post" enctype="multipart/form-data" action="">

<div style="float: left; padding-left: 20px;">
<b class="hui">Аватар:&nbsp&nbsp</b><input type="file" name="uploaded" style="width: 170px; margin-left: 52px;"/><br/><br/>
</div><br/><br/><br/>
<center><input type="submit" name="submit" value="Прикачи"/><br/><br/></center>
</form>
';

if($_POST['submit']){
$target = "upload/"; //Директорията за качване
$jpg = ".jpg";
$aaa = "aaa";
$target = $target.$username;
$ok=1;

//Това е ограничението ни за размер
if ($uploaded_size > 350000)
{
echo "Вашия файл е твърде голям.<br>";
$ok=0;
}

//Това е ограничението за вид на файла
  $allowedExtensions = array(".rar",".zip"); 

 if (!($_FILES['uploaded']['type'] == "application/zip" || $_FILES['uploaded']['type'] == "application/rar")) { 
echo "You may only upload jpeg and gif files.<br>";
$ok=0;
}
//Проверка дали файл със същото име вече не съществува в директорията
//Тук проверяваме дали по-горе извършените проверки са дали грешки
if ($ok==0)
{
Echo "Sorry your file was not uploaded";
}

//Ако всичко е наред качваме файла на хоста
else
{
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
{
echo "The file ".basename( $_FILES['uploaded']['name']). " has been uploaded";

mysql_query( "UPDATE register SET avatar = '$target' WHERE username = '$username'"); 
}
else
{
echo "Sorry, there was a problem uploading your file."; //тук показва грешка ако файла не е качен правилно
}
}
}
?>
 
По принцип наистина е добра идея да проверяваш MIME type на файла и да не разчиташ на файловото разширение, както си направил тук:

Код:
 if (!($_FILES['uploaded']['type'] == "application/zip" || $_FILES['uploaded']['type'] == "application/rar")) {

Но проблема идва от това, че при различни операционни системи (а евентуално и браузъри), един и същ файл идва към сървъра с различни MIME types.

Единия вариант е да си направиш масив с допустимите стойности, например:

Код:
$allowed_mime_types = array(
     'application/zip', 'application/x-zip'........
);

и да проверяваш

Код:
if(in_array($_FILES['uploaded']['type'], $allowed_mime_types)){
  //ok 
}
Другия вариант е с файловото разширение, както си започнал в началото:

Код:
$allowedExtensions = array("rar","zip"); //махнах точките!

тогава проверката ти ще бъде нещо от сорта на:

Код:
if(in_array(strtolower(end(explode($_FILES['uploaded']['name']))), $allowedExtensions)){
   //ok
}
 

Back
Горе