Запомняне

» Здравейте
[ Вход :: Регистриране ]
Тема: Upload sсript, help code
Мнение #1 Skip to the next post in this topic.
Написано на: Май 16 2006, 22:20
aChkaTa

Avatar




Група: Li fans
Мнения: 72
Регистриран: Януари 2006

Оценка: няма

Offline
Код: 
<?php
@session_start();
$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 = "files/";
$upload_url = $url_dir."/files/";
$message ="log.txt";

/************************************************************

   *     Create Upload Directory

************************************************************/
if (!is_dir("files")) {
 if (!mkdir($upload_dir))
    die ("upload_files directory doesn't exist and creation failed");
 if (!chmod($upload_dir,[B]****[/B]))
    die ("change permission to [B]****[/B] failed.");
}

/************************************************************

   *     Process User's Request

************************************************************/

if ($_REQUEST[del])  {  
print "<######>window.location.href='$url_this?message=deleted successfully'</######>";
}
else if ($_FILES['userfile']) {
 $message = do_upload($upload_dir, $upload_url);
 print "<######>window.location.href='$url_this?message=$message'</######>";
}
else if (!$_FILES['userfile']);
else
  $message = "Invalid File Specified.";

/************************************************************

   *     List Files

************************************************************/
$handle=opendir($upload_dir);
$filelist = "";
while ($file = readdir($handle)) {
  if(!is_dir($file) && !is_link($file)) {
     $filelist .= "<br><a href='$upload_dir$file'>".$file."</a>";

  }
}

function do_upload($upload_dir, $upload_url) {

  $temp_name = $_FILES['userfile']['tmp_name'];
  $file_name = $_FILES['userfile']['name'];
  $file_type = $_FILES['userfile']['type'];
  $file_size = $_FILES['userfile']['size'];
  $result    = $_FILES['userfile']['error'];
  $file_url  = $upload_url.$file_name;
  $file_path = $upload_dir.$file_name;

 //File Name Check
   if ( $file_name =="") {
      $message = "Invalid File Name Specified";
      return $message;
   }
  //File Size Check
   else if ( $file_size > 999999999999999999999) {
      print $file_size;
       $message = "Размера на файла е много голям.";
       return $message;
   }
  //File Type Check
   else if ( $file_type == "text/plain"
        || $file_type == "application/force-download"
        || $file_type == "application/octet-stream") {
       $message = "Sorry, You cannot upload any ###### file";
       return $message;
   }

   $result  =  move_uploaded_file($temp_name, $file_path);
   if (!chmod($file_path,[B]****[/B]))
       $message = "change permission to [B]****[/B] failed.";
   else
     $message = ($result)?"$file_name($file_type) uploaded successfully." :
               "Somthing is wrong with uploading a file.";

   return $message;
}

?>
<table  style="width: 40%" align="center" valign="top">
 <tr>
   <td>
<div align="center" style="font-size: 19px; font-weight: bold">
</table>
<body bgcolor="#667987"><center>
  <font color=red><?=$_REQUEST[message]?></font>
  <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
    Качи фаил: <input type="file" id="userfile" name="userfile" size="20">
    <input type="submit" name="upload" value="Upload">
  </form>
 
  <b>До сега потребителите ни са качили следните файлове:</b>
  <hr style="color:yellow; background-color:black; height:1px;
 margin-right:0; text-align:right; border:0px">
  <?=$filelist?>
</center>

<?
if ($_REQUEST[debug]==1) print "------------------Debugging Info----------------<br>";
if ($_REQUEST[debug]==1) print "site=$site_name<br>dir=$url_dir<br>url=$url_this<br>";
if ($_REQUEST[debug]==1) print "upload dir=$upload_dir<br>upload url=$upload_url<br>";
?>

На мястото на звездичките какви цифри да сложа че като секачи дадения файл да е с CHmod 777(7) пробвам с седмици нищо не се получава .Получава се но не точно дадения ефект :( :29;
Контакти:  aChkaTa
WEB  
Мнение #2 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Май 16 2006, 23:38
quintessence

Avatar




Група: Li psychos
Мнения: 813
Регистриран: Август 2005

Offline
Код: 
if ( ! chmod ( $ file_path , 0777 ) )
die ("change permission to 777 failed.");

мхм ... откъде да започна ...
НИКОГА!!! не слагай пълни права върху файловете .. в случая и 755 е достатъчно  ... това се отнася за секцията "create upload directory" .. т.е да има вида
Код: 
if ( ! chmod ( $ file_path , 0755 ) )
die ("change permission to 755 failed.") ...

в "result"
Код: 
$result = move_uploaded_file($temp_name, $file_path);
if (!chmod($file_path,0777))
$message = "change permission to 777 failed."; ...


но като цяло .. както и да го гледам кода ... откъм сигурност първо куца ... я поразгледай http://php.data.bg/manual/en/function.strpos.php и виж по някакъв начин да го вкараш при del ... нещо от сорта на :
Код: 

if (strpos($_REQUEST[del],"/.")>0);
else if (strpos($_REQUEST[del],"files/") === false);
else if (substr($_REQUEST[del],0,6)=="files/") {
unlink($_REQUEST[del]);
print "<######>window.location.href='$url_this?message=deleted successfully'</######>";
}
}
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);
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,".")));


абе не знам от къде е копиран кода , но леко бая неща му куцат ... за максималния размер на файла какъв е тоя код :D
не ,че е грешен де ... но по-красиво би изглеждало :
Код: 
if ( $_FILES['userfile']['size'] > $MAX_SIZE)
$message = размерът на файла е прекалено голям";


не знам ... :D за всеки случай 777 НЕ слагай!
Контакти:  quintessence

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Мнение #3 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Май 17 2006, 09:36
mcwolf

No avatar chosen




Група: Li gurus
Мнения: 1489
Регистриран: Април 2005

Оценка: 5

Offline
я обясни по подробно какво искаш да направиш - защо за бога ти е файл който качиш да има права за изпълнение (при това от всички) - тези права са допустими единствено за директорийте - на сървърът не му е разбота да се занимава с подобни файлове

освен това последвай съветът на quintessence изнеси размерът в някаква променлива - освен това трябва да е по малък или равен на този който е зададен в php.ini защото ако е по голям php-то ще те реже автоматично
Контакти:  mcwolf

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Мнение #4 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Май 17 2006, 15:08
aChkaTa

Avatar




Група: Li fans
Мнения: 72
Регистриран: Януари 2006

Оценка: няма

Offline
Самия код то изрових от it-place
От пи еич пи почети нищо несхващам.
Иначе този скрипт ми е когато съм някаде (приятели ) вместо да си пращам нещата на пощата или да ги качвам някаде и после да тегля с бавна скорост направо да си ги качвам на машината
Контакти:  aChkaTa
WEB  
Мнение #5 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Май 17 2006, 16:06
quintessence

Avatar




Група: Li psychos
Мнения: 813
Регистриран: Август 2005

Offline
:12;  :12;  :12;  ... че не може ли да си пуснеш ftp сървър,или
да ползваш http такъв за целта ?! ...


Редактирано от quintessence на Май 17 2006, 16:06
Контакти:  quintessence

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Мнение #6 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Май 17 2006, 16:11
aChkaTa

Avatar




Група: Li fans
Мнения: 72
Регистриран: Януари 2006

Оценка: няма

Offline
Аз съм си с Апаче2 и съм си направил сървара като сайт и така съм свикнал
Контакти:  aChkaTa
WEB  
Мнение #7 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Май 17 2006, 17:54
quintessence

Avatar




Група: Li psychos
Мнения: 813
Регистриран: Август 2005

Offline
чисто информативно ... apache Е http сървър ... повече няма какво да добавя , само ще дам линк за насока ...
тук / тук
Контакти:  quintessence

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Мнение #8 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Май 18 2006, 09:25
mcwolf

No avatar chosen




Група: Li gurus
Мнения: 1489
Регистриран: Април 2005

Оценка: 5

Offline
мног категорично изказване :)

въсщност човекът има проблемче със някаквао елементарно скриптче - та може да му помогнеме ако има желание - все още си нямаме раздел за приграмиране но това е първата тема в подобна насока

та aChkaTa ако имаш желание можеме да разработиме тука съвместно някаква подобна система :)
Контакти:  mcwolf

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Мнение #9
Skip to the previous post in this topic. Написано на: Юни 14 2006, 00:29

Avatar




Група: Li fans
Мнения: 3
Регистриран: Юни 2006

Оценка: няма

Offline
Здрасти,

Относно въпросът ти предполагам, че проблема е:
Код: 

...
   else if ( $file_type == "text/plain"
       || $file_type == "application/force-download"
       || $file_type == "application/octet-stream") {
      $message = "Sorry, You cannot upload any ###### file";
      return $message;
  }
...


Както виждаш тук са /забранени/ някой типове файлове.... основно впечатление правят text/plain и application/octet-stream , които са общи MIME типове и обхващат задоволително голям брой типове файлове..... Като цяло код-а е достатъчно некадърно (да не говорим за сигурно) написан, за да си сигурен, че не ти трябва.

Поздрави


Редактирано от PxL на Юни 14 2006, 00:40
Общо 8 отговор(а) от Май 16 2006, 22:20 до сега

© 2014 Linux Index Project
Powered by iF 1.0.0 © 2006 ikonForums