За последние 24 часа нас посетили 50839 программистов и 1745 роботов. Сейчас ищут 892 программиста ...

не работает класс

Тема в разделе "Прочие вопросы по PHP", создана пользователем foozzi, 14 ноя 2011.

  1. foozzi

    foozzi Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    20
    Симпатии:
    0
    собственно форма:
    PHP:
    1. <form enctype="multipart/form-data" action="upload.class.php" method="post">
    2. <input type="file" name="filename" size="45">
    3. <input type="submit" value=" Грузить! " name="upload">
    4. </form>
    5.  
    6. <?php
    7.  
    8.   if(isset($_FILES['file'])){
    9.  
    10.     include"upload.class.php";
    11.     $upload_class= new file_upload();
    12.  
    13.     $upload_class->file_server_patch="uploads";
    14.     $upload_class->file_extended = array(".jpg", ".gif", ".png"); // Типы файлов передающиеся ядру на обработку
    15.     $upload_class->file_info = $_FILES['file']; // Инфо о файле
    16.     $upload_class->file_new_name = dirname (__FILE__).$upload_class->file_server_patch; // Имя файла не изменное
    17.     $upload_class->file_size=70000000;
    18.  
    19.     //  Вызываем метод загрузки файла
    20.  
    21.     $upload_class->file_upload_data();
    22.  
    23.     unset($upload_class);
    24.  
    25. }
    и сам класс:

    PHP:
    1. <?php
    2.  
    3.      ini_set('display_errors',1);
    4.     error_reporting(E_ALL);
    5.    
    6.   class file_upload
    7.  
    8.   {
    9.  
    10.     public $file_info = array();  //  Массив с информацией о исходном файле - $_FILES['file_name']
    11.  
    12.     public $file_server_patch = ""; //Путь по которому на сервере хранятся закачанные файлы # по умолчанию кидаем в корень
    13.  
    14.     public $file_new_name = ""; //Новое имя файла (то под каки он будет лежать на сервере # при пустом значении то имя с которым файл был передан
    15.  
    16.     public $file_max_size = 0; // Максимально допустимый размер закачиваемого на сервер файла # При пустом значении размер передаваемого файла
    17.  
    18.     public $file_extended = array(); // Массив с допустимыми для закачиваемого файла расширениями # пустой массив берем расширение исходного файла
    19.  
    20.     public $rezult_array = array(); //  Массив возвращаемых значений
    21.     public $file_size = ""; // Размер файла
    22.     public $s = 0; // Номер файла от начала
    23.     public $d = @opendir($file_server_patch); // Открыть директорию загрузки
    24.     public $upload_link = ""; // Генерируемая ссылка
    25.          
    26.     public function file_upload_data()
    27.     {
    28.         $this->file_size = $file_size;
    29.         $this->file_info = $file_info;
    30.         $this->file_extended = $file_extended;
    31.         $this->file_server_patch = $file_server_patch;
    32.         $this->s = $s;
    33.         if($this->file_size < $this->file_info['size'])
    34.         {
    35.             if($this->file_extended != $this->file_info['type'])
    36.             {
    37.                 $d=@opendir($this->file_server_patch);
    38.             $this->s;
    39.             while($e=readdir($d))
    40.             {
    41.                 if(is_file($this->file_server_patch."/".$e))
    42.                 $this->s++;
    43.             }
    44.          }
    45.          else
    46.          {
    47.             echo"Не разрешенный тип файла!<br>";
    48.             echo"<a href="index.php?microtime();">Загрузить еще</a>";
    49.          }         
    50.        }
    51.        else
    52.        {
    53.         echo"Размер файла превышает лимит!<br>";
    54.         echo"<a href="index.php?microtime();">Загрузить еще</a>";
    55.        }   
    56.        
    57.         private function file_upload()
    58.         {
    59.  
    60.             $this->file_new_name = $file_new_name;
    61.             $this->upload_link = $upload_link;
    62.             if(move_uploaded_file($this->file_info['tmp_name'], $this->file_server_patch.$this->file_new_name))
    63.             {
    64.                 include"../style/echo.tpl"
    65.                echo "<a href='?".md5(microtime())."'>Загрузить другой файл</a>";
    66.             }
    67.             else
    68.             {
    69.                 echo"Не удалось загрузить файл";
    70.             }
    71.         }          
    72.  
    73. ?>
    74.  
    выбираю файл, жму загрузку, выдает белую страницу, вывод ошибок как видите есть, но ничего не выводит, подскажите где я ошибся? это один из первых моих написанных классов
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    скобок не хватает. дальше не смотрел.
    да и польза от такого "класса" весьма сомнительна.
     
  3. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    класс писал либо новичок, либо садист-извращенец.
     
  4. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Привет, кеп.
     
  5. foozzi

    foozzi Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    20
    Симпатии:
    0
    да я написал же что я новичок, допустил грубую ошибку, класс забыл закрыть... но это проблему не решило, пожет что то не так передаю?
     
  6. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    PHP:
    1.  
    2. <?php
    3. public function file_upload_data()
    4.      {
    5.          $this->file_size = $file_size;
    6.          $this->file_info = $file_info;
    7.          $this->file_extended = $file_extended;
    8.          $this->file_server_patch = $file_server_patch;
    9.          $this->s = $s;
    10. ...
    11. }
    12.  
    Это что за бред? Да и вообще установка всех параметров должна идти через методы, а не через паблик переменные класса
     
  7. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    опять пост ТС не до конца дочитал :(
    лучше займитесь процедурным программированием, а то с вашим классом вас тут палками забьют ;d
     
  8. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    Все оописты невъебенные блин...
     
  9. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    alexey_baranov
    да ладно?)
     
  10. foozzi

    foozzi Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    20
    Симпатии:
    0
    ребят кроме поливания га*вном меня есть какое нибудь решение? за код сказали, что это более мнение для новичка, так что не вижу смысла это высказывать в я яркой форме...
     
  11. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    В атрибуте action тега form нужно писать не upload.class.php, а название того скрипта, который принимает и обрабатывает файл. То есть того скрипта, в котором написано вот это:
    PHP:
    1. <?php
    2. if(isset($_FILES['file'])) {
    3.     include "upload.class.php";
    4. // ...
    5. ?>
     
  12. foozzi

    foozzi Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    20
    Симпатии:
    0
    все зделал так как посоветовал, то же самое но уже в скрипте обработке:
    PHP:
    1. <?php
    2. if(isset($_FILES['file'])) {
    и т.п.
     
  13. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    А что тоже самое?
     
  14. foozzi

    foozzi Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    20
    Симпатии:
    0
    белая страница
     
  15. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Ты забыл закрыть не только класс, но также и метод file_upload_data() - т.е. не хватает двух закрывающих фигурных скобок.

    Вот этот блок в начале метода file_upload_data() действительно не нужен:
    PHP:
    1. <?php
    2. // ...
    3.     $this->file_size = $file_size;
    4.     $this->file_info = $file_info;
    5.     $this->file_extended = $file_extended;
    6.     $this->file_server_patch = $file_server_patch;
    7.     $this->s = $s;
    8. // ...
    Он обнулит все перечисленные в нём внутренние переменные класса, поскольку переменные $file_size, $file_info и т.д. внутри метода не заданы.
    И необходимости в этом блоке кода нет, так как переменные у тебя public и ты задаёшь им значения явно в скрипте, который использует класс. Например, вот одна из строк, задающих значения:
    PHP:
    1. $upload_class->file_server_patch="uploads";
    Чтобы иметь возможность задать параметр $s при вызове метода - упомяни тогда в объявлении метода об этой переменной:
    PHP:
    1. <?php
    2. // ...
    3. public function file_upload_data($s = 0) {
    4.     // ...
    5. }
    6. // ...
    7. ?>
    Из-за недостающих фигурных скобок, PHP не может разобрать файл class.upload.php , т.е. тут синтаксическая ошибка. Файлы, в которых есть синтаксическая ошибка PHP не выполняет вообще, в том числе и всё то, что выше того места, где ошибка. Т.е. инструкции:
    PHP:
    1. <?php
    2. // ...
    3. ini_set('display_errors',1);
    не выполняются.
    Помести эти инструкции в основной файл, который инклудит файл с классом. Где-то в начале, на следующей строчке после первого <?php

    Вот ещё ошибочка:
    $upload_class->file_server_patch="uploads";
    $upload_class->file_new_name = dirname (__FILE__).$upload_class->file_server_patch;
    функция dirname() убирает не только название файла на конце, но и последний слэш. Т.е. писать надо как-то так:

    $upload_class->file_new_name = dirname (__FILE__) . DIRECTORY_SEPARATOR . $upload_class->file_server_patch;
     
  16. foozzi

    foozzi Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    20
    Симпатии:
    0
    Исправил все:
    PHP:
    1. <?php
    2.  
    3.     ini_set('display_errors',1);
    4.     error_reporting(E_ALL);
    5.    
    6.   class file_upload
    7.  
    8.   {
    9.  
    10.     public $file_info = array();  //  Массив с информацией о исходном файле - $_FILES['file_name']
    11.     public $file_server_patch = "/"; //Путь по которому на сервере хранятся закачанные файлы # по умолчанию кидаем в корень
    12.     public $file_new_name = ""; //Новое имя файла (то под каки он будет лежать на сервере # при пустом значении то имя с которым файл был передан
    13.     public $file_max_size = 0; // Максимально допустимый размер закачиваемого на сервер файла # При пустом значении размер передаваемого файла
    14.     public $file_extended = array(); // Массив с допустимыми для закачиваемого файла расширениями # пустой массив берем расширение исходного файла
    15.     public $rezult_array = array(); //  Массив возвращаемых значений
    16.     public $file_size = ""; // Размер файла
    17.     /*public $s = 0;*/ // Номер файла от начала
    18.     public $d = @opendir($file_server_patch); // Открыть директорию загрузки
    19.     public $upload_link = ""; // Генерируемая ссылка
    20.          
    21.     public function file_upload_data($s = 0)
    22.     {
    23.         if($this->file_size < $this->file_info['size'])
    24.         {
    25.             if($this->file_extended != $this->file_info['type'])
    26.             {
    27.                 $d=@opendir($this->file_server_patch);
    28.             $this->s;
    29.             while($e=readdir($d))
    30.             {
    31.                 if(is_file($this->file_server_patch."/".$e))
    32.                 $this->s++;
    33.             }
    34.          }
    35.          else
    36.          {
    37.             echo"Не разрешенный тип файла!<br>";
    38.             echo"<a href="index.php?microtime();">Загрузить еще</a>";
    39.          }         
    40.        }
    41.        else
    42.        {
    43.         echo"Размер файла превышает лимит!<br>";
    44.         echo"<a href="index.php?microtime();">Загрузить еще</a>";
    45.        }
    46.       }
    47.        
    48.        
    49.         private function file_upload()
    50.         {
    51.  
    52.             $this->file_new_name = $file_new_name;
    53.             $this->upload_link = $upload_link;
    54.             if(move_uploaded_file($this->file_info['tmp_name'], $this->file_server_patch.$this->file_new_name))
    55.             {
    56.                 /*include"../style/echo.tpl"*/
    57.                echo "Загрузить другой файл";
    58.             }
    59.             else
    60.             {
    61.                 echo"Не удалось загрузить файл";
    62.             }
    63.         }
    64.        }    
    65. ?>
    обработчик


    PHP:
    1. <?php
    2.  
    3.   if(isset($_FILES['file'])){
    4.  
    5.     include"upload.class.php";
    6.     $upload_class= new file_upload();
    7.  
    8.     $upload_class->file_server_patch="uploads";
    9.     $upload_class->file_extended = array(".jpg", ".gif", ".png"); // Типы файлов передающиеся ядру на обработку
    10.     $upload_class->file_info = $_FILES['file']; // Инфо о файле
    11.     $upload_class->file_new_name = dirname (__FILE__) . DIRECTORY_SEPARATOR . $upload_class->file_server_patch; // Имя файла не изменное
    12.     $upload_class->file_size=70000000;
    13.  
    14.     //  Вызываем метод загрузки файла
    15.  
    16.     $upload_class->file_upload_data();
    17.  
    18.     unset($upload_class);
    19.  
    20. }
    21.  
    22.  
    23. ?>
    24.  
    форма
    PHP:
    1. <form enctype="multipart/form-data" action="form.php" method="post">
    2. <input type="file" name="filename" size="45">
    3. <input type="submit" value=" Грузить! " name="upload">
    4. </form>
    все равно в чем то беда...
     
  17. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Слушай, я думал попробовать тебе помочь, скопировал твой код, запустил, начал править/разбираться... но тут косяк на косяке.

    Для начала в форме у тебя
    HTML:
    1. <input type="file" name="[b]filename[/b]" size="45">
    а в обработчике
    PHP:
    1. if(isset($_FILES['[b]file[/b]'])){
    Нужно, чтобы в форме и в обработчике названия совпадали.
    size="45" - там нафиг не нужен.

    По поводу путей и названия файла. В примере выше я просто написал, как это может быть. Вообще если подумать, то нужно сделать так, чтобы путь к каталогу для сохранения файлов был правильным абсолютным путём. Например, так:
    PHP:
    1. $upload_class->file_server_patch = dirname(__FILE__) . DIRECTORY_SEPARATOR . "uploads";
    Название файла - можешь использовать исходное, если хочешь (то, которое было у пользователя, который загрузил файл). Однако тут нужно подумать, что делать, если кто-то загрузил файл с таким же названием файла, как у какого-то другого пользователя, который загрузил файл раньше. Можно переименовывать, можно создавать новую папку или выводить сообщение об ошибке и просить пользователя дать новое название файлу (последнее - бред, конечно).
    Так можно использовать просто исходное название файла, которое было у пользователя, загружающего файл:
    PHP:
    1. $upload_class->file_new_name = $_FILES['filename']['name'];
    Соответственно, в самом классе (когда копируешь файл) соединяешь путь к файлу с названием файла, но между ними нужно вставить разделитель путей, используемый в той или иной ОС:
    PHP:
    1. <?php
    2. // ...
    3. if(move_uploaded_file($this->file_info['tmp_name'], $this->file_server_patch . DIRECTORY_SEPARATOR . $this->file_new_name))
    4. // ...
    Важный момент, который ты не учитываешь. Или не знаешь о нём. Или не понимаешь, что значат эти слова.
    В общем у классов есть методы-конструкторы. Допустим, ты создаёшь класс так:
    PHP:
    1. <?php
    2. class className {
    3.     private $someVar;
    4.     public function functionName() {
    5.         // some code here
    6.     }
    7. }
    8. ?>
    Так вот, если у тебя название класса className и название метода functionName одинаковы, то считается, что данный метод является методом-конструктором. Это старый синтаксис, сейчас принято методы-конструкторы называть словом __construct() , но, тем не менее, для совместимости новых версий php со старыми скриптами этот синтаксис по-прежнему поддерживается.
    В твоём коде класс имеет название file_upload и метод, который загружает файл имеет такое же название:
    PHP:
    1. private function file_upload()
    Т.е. получается, что ты объявляешь его методом-конструктором. Но сразу возникает ряд косяков. Во-первых, конструктор не может быть private, поскольку он ВСЕГДА вызывается из внешнего кода, а не из самого класса. Только public. Ну а во-вторых... Конструктор всегда запускается в момент создания экземпляра класса (объекта). Т.е. вот ты написал в коде:
    PHP:
    1. $upload_class= new file_upload();
    Всё! В этот момент конструктор уже выполнился. Он выполняется сразу, как только ты создаёшь объект из класса.
    А теперь смотри, что происходит. У тебя конструктор копирует загруженный файл в какую-то новую папку. Но он ещё НЕ знает, какое ты хочешь название файла, в какую папку ты хочешь скопировать, какие допустимы разрешения, какой должен быть размер файла и пр.
    Ведь сперва же создаётся класс, а потом уже указываются все эти значения - пути, названия и пр. Но указывается всё это, выходит, уже после того, как метод-конструктор, который согласно твоему коду должен быть скопировать файл, отработал. Это понятно?

    Но это ещё далеко не всё. Смотри, в первых строках метода file_upload() (который является конструктором класса file_upload) ты пишешь:
    PHP:
    1. $this->file_new_name = $file_new_name;
    2. $this->upload_link = $upload_link;
    Но при этом данный метод НЕ принимает никаких входящих параметров. Слова global (для того, чтобы получить доступ к "внешним" для метода переменным - тоже нет. Соответственно, внутри этого метода переменных $file_new_name и $upload_link - не существует. И когда выполняются эти 2 строчки кода, то значения $this->file_new_name и $this->upload_link становятся равными значению null (которое может интерпретироваться по-разному в зависимости от контекста: обычно это либо false, либо пустая строка, либо число 0). А на следующей строчке ты пишешь:
    PHP:
    1. <?php
    2. // ...
    3. move_uploaded_file($this->file_info['tmp_name'], $this->file_server_patch.$this->file_new_name)
    Поскольку данный метод является методом-конструктором, и переменные класса ещё имеют значения по-умолчанию (которые ты сам прописываешь в первых строках класса), то они и будут использованы. Ведь конструктор выполняется ДО всех обращений к объекту. То есть ДО вот этого:
    PHP:
    1. <?php
    2. // ...
    3. $upload_class->file_server_patch = "uploads";
    4. $upload_class->file_extended = array(".jpg", ".gif", ".png");
    5. // и т.д...
    Таким образом, $this->file_info равна просто пустому массиву (поскольку ты в начале класса пишешь public $file_info = array();), $this->file_server_patch будет равна слэшу (в начале ты пишешь: public $file_server_patch = "/";) ну и $this->file_new_name будет равна значению null, поскольку ты в первой строке метода file_upload() сам это значение, по сути получается, сбрасываешь, даже если бы оно и было. Итого мы получаем такую конструкцию:
    PHP:
    1. move_uploaded_file(null, "/");
    Естественно, это ничего никуда не скопирует.

    Но и сейчас по-прежнему не всё. Посмотри на то, как ты генерируешь ссылки при возникновении ошибок:
    PHP:
    1. <?php
    2. // ...
    3. echo"<a href="index.php?microtime();">Загрузить еще</a>";
    Тут сразу как минимум два косяка в одной строке кода:
    Во первых ты используешь одинаковые кавычки. В начале первая двойная кавычка после слова echo начала текстовую строку. Но уже через несколько букв у тебя снова появляется двойная кавычка, после символа =, который следует после атрибута href. В этом месте - всё, строка закрылась. То, что идёт дальше - уже не является строкой текста, а расценивается, как часть кода программы. Для того, чтобы написать символ двойной кавычки внутри строки, объявленной с помощью двойных кавычек - нужно экранировать все "внутристроковые" двойныек кавычки. Например так:
    PHP:
    1. <?php
    2. // ...
    3. echo "<a href=\"index.php?microtime();\">Загрузить еще</a>";
    Также можно обрамить строку одинарными кавычками. Тогда двойные кавычки внутри строки будет не обязательно экранировать:
    PHP:
    1. <?php
    2. // ...
    3. echo '<a href="index.php?microtime();">Загрузить еще</a>';
    Ну а второй косяк в том, что ты пытаешься вписать функцию microtime() прямо в строку символов. Не выйдет. Чтобы встроить в строку значение, которое возвращает функция, нужно выполнить конкатенацию строк (склеить строки):
    PHP:
    1. <?php
    2. // ...
    3. echo "<a href=\"index.php?" . microtime() . "\">Загрузить еще</a>";
    Ну и ещё косячёк в начале класса при объявлении переменных:
    PHP:
    1. public $d = @opendir($file_server_patch);
    Вообще тут я не знаю точно, но у меня это вызывало ошибку. При объявлении переменной $d можешь вообще никакого значения ей не присваивать, а директорию открывай уже внутри какого-нибудь метода.

    Это так, то что я нашёл за то время, которое попробовал разобраться с твоим кодом. Естественно, не факт, что это все ошибки, которые там есть. Это лишь те, которые я заметил.

    И напоследок: внимательно, от начала и до конца прочитай главу "Введение в объектно-ориентированное программирование" какой-нибудь книги по PHP 5, а также главу, в которой говорится об области видимости переменных. Это самый минимум, который нужен тебе для понимания того, что ты сам сейчас накодил.

    И да, перенеси, наконец,
    PHP:
    1. ini_set('display_errors',1);
    в основной файл, который вызывается, когда отправляешь заполненную форму (я так понимаю, что это form.php). Как я и писал выше, вставь это после первого <?php
     
  18. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    за что я уважаю sobachnik'а, так это за то, что он разберется в самом беспорядочном хламе :)
     
  19. foozzi

    foozzi Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    20
    Симпатии:
    0
    спасибо за подсказки, вот подправил как понял:
    PHP:
    1. <?php
    2.  
    3.      ini_set('display_errors',1);
    4.     error_reporting(E_ALL);
    5.    
    6.   class file_upload
    7.  
    8.   {
    9.  
    10.     public $file_info = array();  //  Массив с информацией о исходном файле - $_FILES['file_name']
    11.  
    12.     public $file_server_patch = "/"; //Путь по которому на сервере хранятся закачанные файлы # по умолчанию кидаем в корень
    13.  
    14.     public $file_new_name = ""; //Новое имя файла (то под каки он будет лежать на сервере # при пустом значении то имя с которым файл был передан
    15.  
    16.     public $file_max_size = 0; // Максимально допустимый размер закачиваемого на сервер файла # При пустом значении размер передаваемого файла
    17.  
    18.     public $file_extended = array(); // Массив с допустимыми для закачиваемого файла расширениями # пустой массив берем расширение исходного файла
    19.  
    20.     public $rezult_array = array(); //  Массив возвращаемых значений
    21.     public $file_size = ""; // Размер файла
    22.     /*public $s = 0;*/ // Номер файла от начала
    23.     /*public $d = @opendir($file_server_patch);*/ // Открыть директорию загрузки
    24.     public $upload_link = ""; // Генерируемая ссылка
    25.                              
    26.     public function file_upload_data($s = 0)
    27.     {
    28.         if($this->file_size < $this->file_info["size"])
    29.         {
    30.             if($this->file_extended != $this->file_info["type"])
    31.             {
    32.                 $d=@opendir($this->file_server_patch);
    33.             /*$this->s;*/
    34.             while($e=readdir($d))
    35.             {
    36.                 if(is_file($this->file_server_patch."/".$e))
    37.                 $this->s++;
    38.             }
    39.          }
    40.          else
    41.          {
    42.             echo"Не разрешенный тип файла!<br>";
    43.             echo"<a href='index.php?'>Загрузить еще</a>";
    44.          }         
    45.        }
    46.        else
    47.        {
    48.         echo"Размер файла превышает лимит!<br>";
    49.         echo"<a href='index.php?'>Загрузить еще</a>";
    50.        }
    51.       }
    52.        
    53.        
    54.         public function file_upload()
    55.         {
    56.           global $file_new_name, $upload_link;
    57.             $this->file_new_name = $file_new_name;
    58.             $this->upload_link = $upload_link;
    59.             if(move_uploaded_file($this->file_info["tmp_name"], $this->file_server_patch.$this->file_new_name))
    60.             {
    61.                 /*include"../style/echo.tpl"*/
    62.                echo "Загрузить другой файл";
    63.             }
    64.             else
    65.             {
    66.                 echo"Не удалось загрузить файл";
    67.             }
    68.         }
    69.        }    
    70. ?>
    71.  
    обработчик

    PHP:
    1. <?php
    2.  
    3.   ini_set('display_errors',1);
    4.   error_reporting(E_ALL);
    5.  
    6.   if(isset($_FILES['filename'])){
    7.  
    8.     include"upload.class.php";
    9.    
    10.     $upload_class = new file_upload();
    11.     $upload_class->file_server_patch="uploads";
    12.     $upload_class->file_extended = array(".jpg", ".gif", ".png"); // Типы файлов передающиеся ядру на обработку
    13.     $upload_class->file_info = $_FILES['filename']; // Инфо о файле
    14.     $upload_class->file_server_patch = dirname(__FILE__) . DIRECTORY_SEPARATOR . "uploads"; // Имя файла не изменное
    15.     $upload_class->file_size=70000000;
    16.    
    17.  
    18.     //  Вызываем метод загрузки файла
    19.  
    20.     $upload_class->file_upload_data();
    21.  
    22.     unset($upload_class);
    23.  
    24. }
    25.  
    26.  
    27. ?>
    28.  
    выдает ошибку
    Notice: Undefined index: tmp_name in /var/www/learn/upload.class.php on line 59

    хотя этот параметр должен передаваться, идет перемещение из временной папки