Защита на ъплоуд файл

csk1drock

Registered
Здравейте, ако може да ми защитите следният файл

Информация за защитата: Ъплоуда на файла да е само в .zip, .rar
а картинката да я кодира в md5 или някаква друга стойност

Код:
<?php
include "config.php";
if(isset($_POST['submit']))
{
$name = htmlspecialchars($_POST['name']);
$author = htmlspecialchars($_POST['author']);
$description = htmlspecialchars($_POST['description']);
$kategoria = htmlspecialchars($_POST['kategoria']);
$uploader = htmlspecialchars($_POST['uploader']);
$img = htmlspecialchars($_POST['img']);

if($name == NULL || $author == NULL || $description == NULL)
{
echo "Не сте попълнили всички полета!";
}
else{
     if ($_FILES["file"]["error"] > 0 OR $_FILES["img"]["error"] > 0)
      {
      echo "Код на грешката: " . $_FILES["file"]["error"] . ", " . $_FILES["img"]["error"] . "<br />";
      }
     else
      {
      if (file_exists("../maps/" . $_FILES["file"]["name"]) OR file_exists("../maps/" . $_FILES["img"]["name"]))
        {
        echo $_FILES["file"]["name"] . " or " . $_FILES["img"]["name"] ." already exists.";
        }
      else
        {
        move_uploaded_file($_FILES["file"]["tmp_name"],"../maps/" . $_FILES["file"]["name"]);
		move_uploaded_file($_FILES["img"]["tmp_name"],"../maps/" . $_FILES["img"]["name"]);
        }
      }
      $link = $_FILES["file"]["name"];
	  $img = $_FILES["img"]["name"];
      mysql_query("INSERT INTO filesneodobreni (kategoria,name,author,uploader,link,description,img) VALUES ('$kategoria','$name','$author','$uploader','$link','$description','$img')") or die (mysql_error());
      echo "Файла е качен успешно!";
   }
}
?>
 
Отваряш гоогле.бг пишеш:

- htmlspecialchars (Променя символите в хтмл, за да не може да ти цакнат сайта примерно ако някой добави код за редирект в твоя сайт ще е кофти.
за тези символи виж тук. ТУК )
- trim (махане на празните места на string от пред и от зад.
- addslashes (добавя пред всяка кавичка чертичка, за да се избягва sqlInjection).
- md5 (кодиране на парола примерно - qwerty неговата кодировка е d8578edf8458ce06fbc5bb76a58c5ca4 )
- strlen (това проверява на даден string от колко симова е, използва се в проверки (if .. else)).
- isset (Също в проверки, проверяваш примерно дали е натиснат бутона).


Като всяко по оделно проверяваш в гоогле, би трябвало първия сайт да е на php.net там ще е най-добре да прочетеш, чети и коментарите и примирите и виж всяко какво означава и си създай защитата.[/url]
 
Ето ти код, трябва само малко да го едитнеш разгледай го прочети горе какво съм ти писал в първия пост.Виж и долу формата.

Ако има грешки при пускане на кода - пиши тук.

PHP:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <?php
include "config.php";
if(isset($_POST['submit']))
{
$name = trim($_POST['name']);
$author = trim($_POST['author']);
$description = trim($_POST['description']);
$kategoria = trim($_POST['kategoria']);
$uploader = trim($_POST['uploader']);
$img = trim($_POST['img']);

if(strlen($name)<2){
     $error['short_name']=true;
}
if(strlen($author)<2) {
       $error['short_auth']=true;
}

if(strlen($description)<2){
      $error['short_de']=true;
}

if(!count($error)>0){
     if ($_FILES["file"]["error"] > 0 OR $_FILES["img"]["error"] > 0)
      {
      echo "Код на грешката: " . $_FILES["file"]["error"] . ", " . $_FILES["img"]["error"] . "<br />";
      }
     else
      {
      if (file_exists("../maps/" . $_FILES["file"]["name"]) OR file_exists("../maps/" . $_FILES["img"]["name"]))
        {
        echo $_FILES["file"]["name"] . " or " . $_FILES["img"]["name"] ." already exists.";
        }
      else
        {
        move_uploaded_file($_FILES["file"]["tmp_name"],"../maps/" . $_FILES["file"]["name"]);
      move_uploaded_file($_FILES["img"]["tmp_name"],"../maps/" . $_FILES["img"]["name"]);
        }
      }
      $link = $_FILES["file"]["name"];
     $img = $_FILES["img"]["name"];
      mysql_query('INSERT INTO filesneodobreni (kategoria,name,author,uploader,link,description,img) VALUES("'.htmlspecialchars(addslashes($kategoria)).'","'.htmlspecialchars(addslashes($name)).'","'.htmlspecialchars(addslashes($author)).'","'.htmlspecialchars(addslashes($uploader)).'","'.htmlspecialchars(addslashes($link)).'","'.htmlspecialchars(addslashes($description)).'","'.$img.'")') or die (mysql_error());
      echo "Файла е качен успешно!";
   }
}
?>


ЕТО ТАКА ТРЯБВА ДА ТИ ИЗГЛЕЖДА ФОРМАТА ЗА ИМЕТО, АВТОРА И ОПИСАНИЕТО .. ТРЯБВА ДА СИ ЕДИТНЕШ МАЛКО КОДА .
     <form method="post" action="upload.php">
        <input type="text" name="name" />Име<?php if(isset($error['short_name'])==true){ echo 'Кратко име';} ?><br />                                     <br />
        <input type="text" name="author" />Автор<?php if(isset($error['short_auth'])==true){ echo 'Авторът е кратък';} ?><br />
        <input type="text" name="description" />Описание<?php if(isset($error['short_de'])==true){ echo 'Прекалено късо описание';} ?><br />

 </form>
 
Код:
$size=$_FILES['file']['size'];

Код:
if($size==0){
echo "Самия файл е Празен (Не съществува)"; 
exit; 
} 
if($size>9000){//Проверка за размер на файла 
echo "Файлът е По-голям от Допустимия Размер за Ъплоуд"; 
exit; 
}  
$extensions = array("zip","rar","jpg"); 
$extension_file = end(explode(".",$file)); 
$extension_file = strtolower($extension_file); 
if(!in_array($extension_file,$extensions)){ 
echo "Файла е с Непозволен тип Формат"; 
exit;
[/list]
 

Back
Горе