Ayola.net
Новости: В связи с обилием спама, постинг на форуме временно закрыт.

Для связи с поддержкой используйте тикеты в панели управления.
 
*
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь. Декабрь 17, 2017, 20:01:07


Войти


Страниц: [1]
  Печать  
Автор Тема: Скрипт загрузки файлов на сайт через браузер, но не простой... Помогите...  (Прочитано 12940 раз)
0 Пользователей и 1 Гость смотрят эту тему.
S_Valьde
Новичёк
*

Карма: -1
Сообщений: 23


Просмотр профиля
« : Май 25, 2008, 19:47:04 »

Добрый день. Решил обратиться за помощью. Искал в инете но нужного не нашел. Или на энглише все или не то или не робит.... Нужен скрипт загруски файлов на сайт пользователями сайта через браузер. Ситуация такая: На своем сайте я собираюсь проводить конкурсы, участники конкурса должны присылать файлы ( свои песни на заданную тему). До окончания очередного раунда учасники не должны иметь возможности скачать файлы соперников ( ну, что бы никто не ворол идеи друг у друга) Но я как администратор, должен видеть файлы  и те только я но и другие судьи конкурса, поэтому должен быть доступ через браузер.
В итоге, должна быть форма отправки ( желательно в ШТМЛ, чтобы впихнуть ее в страничку сайта) и админка.
Так как на разные раунды разные требование к файлам, то в одминке должна быть функция настройки разрешенных файлов ( тоесть формат и максимальный размер) а также что бы можно было указать папку, куда файл будет сохранен ( Например папки: раунд1 раунд 2 ).
Также через админку должно быть возможным просмотреть файлы ( что бы судьи могли скачать файлы)
Итак, итоги этого опуса:
1 Для обычных юзеров сайта обычная форма отпраки файлов (2е кнопки - обзор и загрузить)
2 Админка под поролем
3 Доступ через админку к настройкам скрипта (формат загружаемого файла, максимальный размер, папка куда грузиться)
4 Доступ через админку к загруженным файлам ( например в виде таблицы - название, формат, размер)
5 Возможность через адмику удалять файлы и скачивать.

Вобщим: обычные юзеры просто загружают файлы через браузер. Судьи, тагже через браузер заходят в админку, настраивают критерии файлов (формат, размер, папка) имеют возможность скачать файлы для оценки и удалить файлы, если по какимто причинам файл неподходит по критериям ( ну например, тема песни была - "наша раша", а кто то прислал песню про своего "кота", судь скачали, послушали, песня на конкурс не гадиться - удалили)

PS Надеюсь я точно все сформулировал и понятно. Зарание спосибо за помощь. Очень жду ответов.
PPS Все что видел в инете, в коне не то Грустный Если ставишь пароль, то и закачка через пароль) а если нету пароля, то всем юзерам доступны все файлы загруженные на сайт. И еще, все настройки прописываются в скрипте (Формат, размер), и что бы поменять их, приходится переписывть скрипт. А это невозможно, т к судьи не имеют достума к скрипту, да и как и что там им не известно. Работающих скриптов с админкой для управления процессом и файлами и закчкой файлом юзером не нашел... Грустный очень нужна помощь....
Записан
atimur
Просветлённый
****

Карма: 59
Сообщений: 990


Живу в SanCity


Просмотр профиля WWW
« Ответ #1 : Май 25, 2008, 21:27:02 »

Ну тут есть 3 варианта:
1. Писать самому.
2. Обратиться к Фрилансерам (напишут за денюжку все что пожелаете).
3. Яша, найдется все.
Записан

- Правда, она всегда глаза режет...
- Капча - Идите лесом...
S_Valьde
Новичёк
*

Карма: -1
Сообщений: 23


Просмотр профиля
« Ответ #2 : Май 25, 2008, 21:32:24 »

Писать самому, неполучиться, и знаний маловато и времени в обрез. Поисковик... ну незнаю, ищу... А заденежку, ну видел я такие скрипты на русском, с админкой и все такое... от 5 до 15 баксов. Вроде и деньги не большие, но чет я инет магазинам не доверяю, бох его знает, что там тебе продадут. Может у кого есть что то подобное, что мне надо....
Записан
S_Valьde
Новичёк
*

Карма: -1
Сообщений: 23


Просмотр профиля
« Ответ #3 : Май 26, 2008, 13:44:08 »

Вернемся к нашим баранам....
Написал (вернее перелобал чужой и зделал из одного 2а) 2а скрипта: Первый грузит файл на сайт, второй просмитривает папку с файлами и выводит список загруженных файлов.
Вот код скрипта отвечающего за загрузку:

<?php
################## config ####################
# header & title of this file
$title= "File Upload Manager";

# individual file size limit (102400 bytes = 100KB)
$file_size_ind = "8000000";

# the upload store directory (chmod 777)
$dir = "store";

# the file type extensions allowed to be uploaded
$file_allow_ex = array("mp3","Mp3","MP3","mP3");

# if you want to password-protect this file, enter "yes" instead of "no"
$auth[ReqPass] = "no";

# if you set $auth[ReqPass] to yes, then you must set the username and password
$auth[usern] = "username";
$auth[passw] = "password";

################# /config ####################
?>
<?
if($auth[ReqPass] == "yes") {

function error ($error_message) {
   echo $error_message."<BR>";
   exit;
}

if ( (!isset($PHP_AUTH_USER)) || ! (($PHP_AUTH_USER == $auth[usern]) && ( $PHP_AUTH_PW == "$auth[passw]" )) ) {
   header("WWW-Authenticate: Basic entrer=\"file upload manager v1.1\"");
   header("HTTP/1.0 401 Unauthorized");
   error("Access Denied! You must enter a valid username & password.");
}
}
?>
<html>
<head>
<title><? print ($title) ? ($title) : ("S Val'de"); ?></title>
<link rel="stylesheet" href="img/style-blue.css" type="text/css">
</head>
<body bgcolor="#F7F7F7"><br><br>
<center><table width="50%" cellspacing="0" cellpadding="0" border="0">
  <tr>
    <td>&nbsp;Загрузка файлов на сайт S Val'de &nbsp;
<!--Please do not remove my link/copyright-->
</td>
  </tr>
</table>
<?

function getlast($toget)
{
   $pos=strrpos($toget,".");
   $lastext=substr($toget,$pos+1);

   return $lastext;
}

function replace($o)
{
   $o=str_replace("/","",$o);
   $o=str_replace("\\","",$o);
   $o=str_replace(":","",$o);
   $o=str_replace("*","",$o);
   $o=str_replace("?","",$o);
   $o=str_replace("<","",$o);
   $o=str_replace(">","",$o);
   $o=str_replace("\"","",$o);
   $o=str_replace("|","",$o);
   return $o;
}

if(!eregi("777",decoct(fileperms($dir))))
{
   echo"<br><br><b><h4><font color=\"FF0000\">ERROR: cannot access file directory. please chmod directory \"$dir\" with value 777 (xrw-xrw-xrw)!</h4></font></b><br>»<a href=\"$_SERVER[PHP_SELF]\">refresh</a>";
}
else
{
   if(!$_FILES[fileupload])
   {
?>
<table width="50%" cellspacing="0" cellpadding="0" border="0" class="table_decoration" style="padding-top:5px;padding-left=5px;padding-bottom:5px;padding-right:5px">
  <form method="post" enctype="multipart/form-data">
  <tr>
    <td>Файл:</td><td><input type="file" name="fileupload" class="textfield" size="30"></td>
  </tr>
  <tr>
    <td>Имя Файла:</td><td><input type="text" name="rename" class="textfield" size="46"></td>
  </tr>
  <tr>
    <td>Формат Файла:</td><td><?
   for($i=0;$i<count($file_allow_ex);$i++)
   {
      if(($i<>count($file_allow_ex)-1))$commas=", ";else $commas="";

      list($key,$value)=each($file_allow_ex);
      echo $value.$commas;
   }
?></td>
  </tr>
  <tr>
    <td>Размер Файла :</td>
    <td><?=$file_size_ind?> BYTES <b>(<?=round(($file_size_ind/1024),2)?> KB)</b></td>
  </tr>
  <tr>
    <td colspan="2"><input type="submit" value="Загрузить" class="button">&nbsp;</td>
  </tr>
  </form>
</table>
<?
      if((!$_GET[act]||!$_GET[file])&&$_GET[act]!="delall")
      {
         $opendir = @opendir($dir);

         while ($readdir = @readdir($opendir))
         {
            if($readdir<>"." && $readdir<>"..")
            {
               $filearr[] = $readdir;
            }
            $sort=array();
            for($i=1;$i<=count($filearr);$i++)
            {
               $key = sizeof($filearr)-$i;
               $file = $filearr[$key];

               $sort[$i]=$file;
            }
            asort($sort);
         }

         if(count($filearr)>=1)
         {
            if(count($filearr)>1)
            {
?>
<br>
<br>
<?
            }
            else
            {
               echo"<br>";
            }
?>
</center>
<?
         }
      }
      elseif(($_GET[act]=="del")&&$_GET[file])
      {
         $value_de=base64_decode($_GET[file]);
         @unlink($dir."/$value_de");
         echo"<br><img src=\"img/info.gif\" width=\"15\" height=\"15\">&nbsp;<b><font size=\"2\">file has been deleted!</font></b><br>»<a href=\"$_SERVER[PHP_SELF]\">back</a>";
      }
      elseif(($_GET[act]=="view")&&$_GET[file])
      {
         $value_de=base64_decode($_GET[file]);
         echo"<script language=\"javascript\">window.open(\"$dir/$value_de\", \"openfile\", \"resizable=yes,width=640,height=480,scrollbars=yes\")</script>";
         echo"<br><img src=\"img/info.gif\" width=\"15\" height=\"15\">&nbsp;<b><font size=\"2\">file opened!</font></b><br>»<a href=\"$_SERVER[PHP_SELF]\">back</a><br><br><br>If this file did not display/download, you must <b>disable</b> your popup manager.";
      }
      
      if($_GET[act]=="delall")
      {
         $handle=opendir($dir);
         while($file=readdir($handle))
         if(($file != ".")&&($file != ".."))
         @unlink($dir."/".$file);
         closedir($handle);

         echo"<br><img src=\"img/info.gif\" width=\"15\" height=\"15\">&nbsp;<b><font size=\"2\">all files have been deleted!</font></b><br>»<a href=\"$_SERVER[PHP_SELF]\">back</a>";
      }

   }
   else
   {
      echo"<br><br>";
      $uploadpath=$dir."/";
      $source=$_FILES[fileupload][tmp_name];
      $fileupload_name=$_FILES[fileupload][name];
      $weight=$_FILES[fileupload][size];

      for($i=0;$i<count($file_allow_ex);$i++)
      {
         if(getlast($fileupload_name)!=$file_allow_ex[$i])
            $test.="~~";
      }
      $exp=explode("~~",$test);

      if(count($exp)==(count($file_allow_ex)+1))
      {
         echo"<br><img src=\"img/error.gif\" width=\"15\" height=\"15\">&nbsp;<b><font size=\"2\">ERROR: your file type is not allowed (".getlast($fileupload_name).")</font>, or you didn't specify a file to upload.</b><br>»<a href=\"$_SERVER[PHP_SELF]\">back</a>";
      }
      else
      {

         if($weight>$file_size_ind)
         {
            echo"<br><img src=\"img/error.gif\" width=\"15\" height=\"15\">&nbsp;<b><font size=\"2\">ERROR: please get the file size less than ".$file_size_ind." BYTES  (".round(($file_size_ind/1024),2)." KB)</font></b><br>»<a href=\"$_SERVER[PHP_SELF]\">back</a>";
         }
         else
         {

            foreach($_FILES[fileupload] as $key=>$value)
            {
               echo"<font color=\"#3399FF\">$key</font> : $value <br>";
            }

            echo "<br>";

            $dest = '';

            if ( ($source != 'none') && ($source != '' ))
            {
               $dest=$uploadpath.$fileupload_name;
               if ($dest != '')
               {
                  if(file_exists($uploadpath.$fileupload_name))
                  {
                     echo"<br><img src=\"img/error.gif\" width=\"15\" height=\"15\">&nbsp;<b><font size=\"2\">ERROR: that file has already been uploaded before, please choose another file</font></b><br>»<a href=\"javascript:history.go(-1)\">back</a>";
                  }
                  else
                  {
                     if (copy($source,$dest))
                     {
                        if($_POST[rename])
                        {
                           $_POST[rename]=replace($_POST[rename]);

                           $exfile=explode(".",$fileupload_name);
                           if(@rename("$dir/$fileupload_name","$dir/$_POST[rename].".getlast($fileupload_name))) {
                              echo"<br><img src=\"img/info.gif\" width=\"15\" height=\"15\">&nbsp;<b><font size=\"2\">file has been renamed to $_POST[rename].".getlast($fileupload_name)."!</font></b></font><br>";
                           }
                        }
                        echo"<br><img src=\"img/info.gif\" width=\"15\" height=\"15\">&nbsp;<b><font size=\"2\">file has been uploaded!</font></b><br>»<a href=\"$_SERVER[PHP_SELF]\">back</a>";
                     }
                     else
                     {
                        echo"<br><img src=\"img/error.gif\" width=\"15\" height=\"15\">&nbsp;<b><font size=\"2\">ERROR: cannot upload, please chmod the dir to 777</font></b><br>»<a href=\"$_SERVER[PHP_SELF]\">back</a>";
                     }

                  }
               }
            }
         }

      }
   }
}
?>
</body>
</html>
Работае хорошо, притензий нет.
« Последнее редактирование: Май 26, 2008, 18:57:32 от S_Valьde » Записан
dimdimon
Новичёк
*

Карма: 1
Сообщений: 48


Просмотр профиля
« Ответ #4 : Май 26, 2008, 13:45:18 »

S_Valьde, я месяц назад подобную задачу решал ... если б ты писал сам, то я б тебе свои наработки б скинул, а ты б их довёл до ума Улыбающийся Если вкратце, то:

- закачка на сайт как ты и говорил "выбрать" и "отправить" через тэг формы  (в любом учебнике по HTML есть примеры);
- скрипт, который форму эту получает, использует функцию upload, потом анализирует правильность загрузки и копирует из временной системной папки туда, куда ты ему укажешь (тоже есть примеры этого в учебниках по РНР);
- доступ к содержимому архива - каждому авторизированному посетителю присваиваешь ключ доступа и в соответствии с ним открываешь тут или иную информацию (через сессии и таблицу пользователей);
- админстраницу можно сделать на свой вкус и задачи какую угодно ... копировать, перемещать и удалять файлы через соответстующий php-функции.

... впринципе ничего сложного нет, даже я, далеко не программист, и тот разобрался Улыбающийся, единственное что закачать файлы размером больше 2 Мб у тебя скорее всего не получится ... разве что будешь просить паковать в zip-архив, делить и закачивать по-частям. Даже ести ты готовый скрипт всего этого где-то и достанешь, то проблему с размером файла всё-равно как-то решать прийдётся. Хотя может для аудио-файлов это не так критично
Записан
S_Valьde
Новичёк
*

Карма: -1
Сообщений: 23


Просмотр профиля
« Ответ #5 : Май 26, 2008, 13:59:17 »

dimdimon,
1 Закачка идет нормально, и больше 2метров
2 С поролями проблемка, не пашет, котя я доже пробовал из 2х букв делать... незнаю почему.
3 Кинь линки на учебники или мануалы по этой теме, если не сложно, поизучаю...
И если не жалко, кинь нароботки... я поковыряю
Спосибо за помощь!
Записан
DLE user
Маэстро
*****

Карма: 78
Сообщений: 1692



Просмотр профиля WWW
« Ответ #6 : Май 26, 2008, 14:43:54 »

Так. О где хранится пароль? В БД?
Записан
dimdimon
Новичёк
*

Карма: 1
Сообщений: 48


Просмотр профиля
« Ответ #7 : Май 26, 2008, 14:50:48 »

S_Valьde, я тебе "личным сообщением" отправил чтобы тут ветку текстом не загромождать
« Последнее редактирование: Май 26, 2008, 14:53:12 от dimdimon » Записан
S_Valьde
Новичёк
*

Карма: -1
Сообщений: 23


Просмотр профиля
« Ответ #8 : Май 26, 2008, 17:19:31 »

DLE user, какой пароль? Если пароль на скрипт, то по идее
Код:
# if you want to password-protect this file, enter "yes" instead of "no"
$auth[ReqPass] = "no";

# if you set $auth[ReqPass] to yes, then you must set the username and password
$auth[usern] = "имя";
$auth[passw] = "пароль";

"Ноу" меняешь на "ес", прописываешь пароль и логин. Когда в браузере открываешь, выскакивает окошко, туда вводишь пароль и логин и страничка грузиться.... Но не получается, окошко появляется, а логин и пароль не принемает. Я вообще простетские пробовал, в одну букву, нехочет...
Записан
DLE user
Маэстро
*****

Карма: 78
Сообщений: 1692



Просмотр профиля WWW
« Ответ #9 : Май 26, 2008, 17:31:53 »

Гм..хм. а сама форма где? Там проверяется то что вы вводите? ЧТо пишет скрпит если вы вводите пароль?
ЗЫ рзбирать ЭТо чудо чот лень  Улыбающийся

Вообще было бы неплохо хранить пароль и логин админа в БД под хэшем...


« Последнее редактирование: Май 26, 2008, 17:40:37 от DLE user » Записан
S_Valьde
Новичёк
*

Карма: -1
Сообщений: 23


Просмотр профиля
« Ответ #10 : Май 26, 2008, 19:25:44 »

Решил проблему так!
Создал папку:/zagruzka/ в нее закинул
1  свой скрипт для загрузки файлов через форму ( в браузере) К скрипту прилогается 2е папки. (их тоже надо закинуть)  В одной картинки для скрипта, в другую скрипт закачивает файлы. В самом скрипте можно настроить форматы загружаемых файлов и их размер (максимальное, что пробовал грузить - это мп3 - 4.25 MB, нормально, если вы хотите что бы пользователи вашего сайта могли загружать небольшие файлы - фото, аудио)
2  Установил менеджер. В настройках скрипта менеджера прописал, что просматривет он только папку /zagruzka/ и все папки в ней.
Итог:
1 у пользователей есть форма для отправки файлов
2 У меня есть менеджер под паролем, позволяющий просматривать загруженные файлы, их тип, размер. Возможность удаления и скачивания файлов через браузер.
Проблемы: Менежер не хочет скачивать файлы с русскими именами.... но эту проблему легко решить... или исправив скрипт или написав пользователям сайта что по русски писать имя файла ЗАПРЕЩЕНО!!! (Кстате, имя указывается в фоме закачки, там это можно и упомянуть возле поля ввода имени файла под которым файл сохраниться на сервере)
Ну вот и все...
Если кому нужен скрипт формы отправки и менеджер пишите в личку....

ВСЕМ СПАСИБО ЗА ПОМОЩЬ!!!!!!
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.13 | SMF © 2006, Simple Machines LLC

2003-2008 © ООО "Инфотур" - Бесплатный хостинг Ayola.net
Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Страница сгенерирована за 0.172 секунд. Запросов: 17.