Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скрипит закачки файлов на сервер!!!
 
 автор: staglu   (22.09.2007 в 12:45)   письмо автору
 
 

Добрый день!! Я написал фотогалерею, закачал на сервак. Вот скрипт формы и обработчика:
ФОРМА:


include("conf/config.php");//Подключаем файл конфигурации
include("../../config/mysql_connect.php");//Подключаем конфигаруционный файл гостевой книги
include('../../config/function_ok.php');//Подключаем файл ошибки а ok
include('../../config/function_err.php');//Подключаем файл ошибки на err
include('../../config/function_resize.php');//Фунция для работы с изображеними


$id_gal = $_GET['id_gal'];//Извлекаем индекс галереии
$msg_nav = $_GET['msg_nav'];//Извлекаем точку останова пользователя
//*****************************************************************************
//                          Делаемзапрос в БД                                 *
//*****************************************************************************

$sql="SELECT * FROM foto
      WHERE id_gal = ".$id_gal."";
$sql = mysql_query($sql);
$num = mysql_num_rows($sql);
$num = $num + 1;

//*****************************************************************************
//                            Формируем HTML форму                            *
//*****************************************************************************


        echo "
                  <center>
                  <TABLE width=600 cellpadding = 0 cellspacing = 0 border = 0 >


                  <TR>
                    <TD width=\"2%\"><IMG src='http://$server/graf/1.gif' width=14 height=12 border=0></TD>
                    <TD width=\"96%\" background='http://$server/graf/2.gif'></TD>
                     <TD width=\"2%\"><IMG src='http://$server/graf/3.gif' width=14 height=12 border=0></TD>
                   </TR>

                  <TR>
                    <TD background='http://$server/graf/4.gif'></TD>

                    <TD>

                     <table width=100% border = 0 >

                  <tr>
                     <TD>

                     <form enctype='multipart/form-data' name='dob_gal' action=dob_foto_obr.php  method=post>
                        <table width=100% border=0>
                           <tr>
                             <td colspan=2><font color=66666 size=5><b>Добовления фотографии</b></font><br><br></td>
                           </tr>

                           <tr>
                             <td valign=top><b>Введите описание:</b></td><td><input name=name type=text size=47</td>
                           </tr>

                           <tr>
                             <td><b>Укажите фото:</b></td><td><input size=50 name='images' type='file'></td>
                           </tr>

                           <tr>
                             <td><b>Введите позицию:</b></td><td><input size=3 name=poz type=text value=".$num."></td>
                           </tr>

                           <tr>
                             <td><b>Отоброжение:</b></td>
                             <td>
                                <select size='1' name=hide>
                                   <option value='show' select>Отображать
                                   <option value='hide'>Скрыть
                                   </option>
                                </select>
                             </td>
                           </tr>

                           <tr>
                             <td align=right colspan=2><br><input type=submit value='Добавить'></td>
                           </tr>

                        </table>
                       <input name=id_gal type=hidden value=".$id_gal.">
                       <input name=msg_nav type=hidden value=".$msg_nav.">
                       </form>
                     </TD>
                  </tr>

                  </TABLE>

                    </TD>



                    <TD background='http://$server/graf/8.gif'></TD>

                  <TR>
                    <TD width='2%'><IMG src='http://$server/graf/5.gif' width=14 height=12 border=0></TD>
                    <TD width='96%' background='http://$server/graf/6.gif'></TD>
                    <TD width='2%'><IMG src='http://$server/graf/7.gif' width=14 height=12 border=0></TD>
                    </TR></center>\n";
             exit();


?>


АБРОБОТЧИК:


include("conf/config.php");//Подключаем файл конфигурации
include("../../config/mysql_connect.php");//Подключаем конфигаруционный файл гостевой книги
include('../../config/function_ok.php');//Подключаем файл ошибки а ok
include('../../config/function_err.php');//Подключаем файл ошибки на err
include('../../config/function_resize.php');//Фунция для работы с изображеними

//*****************************************************************************
//                Извлекаем данные из POST массива                            *
//*****************************************************************************

$id_gal = $_POST['id_gal'];//Извлекаем ключ галереии куда мы буде добовлять фото
$msg_nav = $_POST['msg_nav'];//Страница остонова пользователя
$name = $_POST['name'];//Извлекаем описание фото
$poz = $_POST['poz'];//Извлекаем позицию фотографии
$hide = $_POST['hide'];//Проверяем на скрытность

//*****************************************************************************
//                  Проверяем переданные данные                               *
//*****************************************************************************

if($id_gal == "")// Проверяем переданн  ключ
{
     echo " <html><head>
           <meta http-equiv = \"Refresh\" content = \"3; url=index.php?msg_nav=$msg_nav\">
           </head></html>\n";
       err("Ошибка! Не был переданн ключ галереии<br><font size=2>Через несколько секунд вы будете переадресованы</font>");

}

if($name == "")// Проверяем на проверку передачи описания
{
    err("Ошибка! Не введенно описание к фото<br><a href='javascript:history.back()'>Назад</a>");

}

if($poz == "")// Проверяем на передачу ключа позиции
{
    err("Ошибка! Не введена позиция фото<br><a href='javascript:history.back()'>Назад</a>");

}

//*****************************************************************************
//                проверяем на sql ин                                         *
//*****************************************************************************

/*
if(preg_match("|^[^\']+$|", $name))
{
   err("Ошибка!!! Такой запрос не допустим");
}

if(preg_match("|^[^\']+$|", $id_gal))
{
   err("Ошибка!!! Такой запрос не допустим");
}

if(preg_match("|^[^\']+$|", $msg_nav))
{
   err("Ошибка!!! Такой запрос не допустим");
}

if(preg_match("|^[^\']+$|", $poz))
{
   err("Ошибка!!! Такой запрос не допустим");
}

if(preg_match("|^[^\']+$|", $hide))
{
   err("Ошибка!!! Такой запрос не допустим");
}
*/
//****************************************************************************************************************
//                                         Работаем с изображением                                               *
//****************************************************************************************************************


//*********************************************************************************************
//            Проверяем пользователь будет загружать свое фото                                *
//*********************************************************************************************


if($_FILES['images']['name'] != "")
 {

  $format = strrchr($_FILES['images']['name'] , ".");//извлекаем расширение файла
  $file_name = date("d_m_Y___G_i_s")."".$format;//записываем число и время + к нему расширение файла


  if($_FILES['images']['size'] > $size*1024) //проверяем на размер файла, тоесть
  {

      err("Ваше фото привышает $size kb<br><a href='javascript:history.back()'>Назад</a>");


  }
  //***********************************************************************************************
  //                          Проверяем фомат закаченных файлов                                   *
  //***********************************************************************************************

 $mass = array(".JPG",".jpg",".BMP",".bmp",".PNG",".png",".gif",".GIF");//Разрещение на закачку файлов

 if(!in_array($format, $mass))//производим пробег по массиву
 {

    err("Неправильный формат изображения<br><a href='javascript:history.back()'>Назад</a>");

 }

  //**************************************************************************************************
  //                   Копируем в папку данных                                                       *
  //**************************************************************************************************

   if(!copy($_FILES['images']['tmp_name'],"../foto/big/".$_FILES['images']['name']))
   {

      err("Ошибка загрузки файлов на сервер!<br><a href='javascript:history.back()'>Назад</a>");

   }

   if(!copy($_FILES['images']['tmp_name'],"../foto/small/".$_FILES['images']['name']))
   {

      err("Ошибка загрузки файлов на сервер!<br><a href='javascript:history.back()'>Назад</a>");

   }

   unlink($_FILES['images']['tmp_name']);//удаляем файл из временной дириктории

   rename("../foto/big/".$_FILES['images']['name'],"../foto/big/".$file_name);//Переименоваем файл в подходящий

   rename("../foto/small/".$_FILES['images']['name'],"../foto/small/".$file_name);//Переименоваем файл в подходящий


   if(!resizeimg("../foto/small/".$file_name,"../foto/small/".$file_name, 100, 100))
   {

      err("Ошибка при обработки библиотекой GDlib 2.0<br><a href='javascript:history.back()'>Назад</a>");

   }



 }


//*****************************************************************************
//                       Добавляем данные в библиотеку                        *
//*****************************************************************************


$sql = "INSERT INTO foto VALUES(NULL,
                                '$name',
                                '$id_gal',
                                '$poz',
                                '$file_name',
                                 NOW(),
                                '$hide'
                                )";

$sql = mysql_query($sql);

if($sql)
{
    ok('Фото успешно добавлено.<br><a href=dob_gal.php>Добавить еще</a>&nbsp;<a href=index.php>Панель администратора</a>');
}
else
{
    err('Возникла ошибка при добавлении фотографии<br><a href="javascript:history.back();">Назад</a>');
}



Проблема в том, что если фотография больше 200 kb, скрипт-обработчик долго выполняется на сервере, а потом выдает ошибки как-будто форма не заполненна данными. На домашнем сервере все работает нормально. И хостинг поддерживает закачку файлов до 2mb. Может нужно использовать функцию set_time_limit(0);. НЕ ЗНАЮ ЧТО ДЕЛАТЬ. Меньше чем 200kb все закачивается и работает нормально.

Заранее всем, СПАСИБО!!!

   
 
 автор: cheops   (22.09.2007 в 13:14)   письмо автору
 
   для: staglu   (22.09.2007 в 12:45)
 

Объёмные файлы лучше прикрплять в виде архива.

   
 
 автор: Eugene77   (23.09.2007 в 18:31)   письмо автору
 
   для: staglu   (22.09.2007 в 12:45)
 

Напрашивается такой совет:
Пиши в форме:
action="mailto:ya@ya.ru"
Но как потом разбирать эту почту?
Незнаю, однако проблема ограничения по времени уйдёт

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования