Проблема с Формой закачки файла

lelikvrn

Guest
Проблема с Формой закачки файла

Форма передает данные сама себе, затем обрабатывает файл(получает ссылку '$fupload' для файла и копирует его на сервер если он является картинкой GIF,JPG,PNG).

У меня на компе все работает, но когда залил файлы в нет, то работать отказывается, выдает следующую ошибку:
>Warning: getimagesize(C:\\Documents and Settings\\Alex\\My Documents\\My Pictures\\1\\lv49.jpg): failed to open stream: No such file or directory in /usr/home/myphoto/public_html/a_upload.php on line 49

Я не могу понять откуда появляется '\\' - такого добра на локалке не появлялось и все нормально создавалось.


Форма:

<form action='$PHP_SELF' enctype='multipart/form-data'>
<input type='hidden' name='id' value='$id'>
<table align=center class='3_t1' width=500 cellpadding=1 cellspacing=1>
<tr>
<td>Путь к файлу:</td>
<td><input type='file' name='fupload' accept='image/jpeg,image/gif' style='width:250px; height:21px; padding-left:6px; padding-top:1px' class='input'></td>
</tr>
<tr>
<td>Описание:</td>
<td><textarea cols=20 rows=5 name=opisanie style='width:250px; height:100px; padding-left:6px; padding-top:1px' class='input'></textarea></td>
</tr>
<tr>
<td><div style='padding-left:0px; padding-top:1px '><input type='image' src='image/kn_add.gif' alt='Добавить'></div></td>
<td></td>
</tr>
</table>
</form>

Код обработки:
49| $type=getimagesize($fupload);
50| if ($type['2']==1) {$IM="gif";}
51| elseif ($type['2']==2){$IM="jpg";}
52| elseif ($type['2']==3){$IM="png";}
53| if ($type['2']==2 or $type['2']==1 or $type['2']==3)

Ошибка возникает в строке 49, в которой используется функция getimagesize, но дело в том что она проверяет изначально не правельный путь к файлу (как я понял, причем на локольном компе всё пучком), потому что вместо '/' стоят '\\'

Помогите, плиз... вообще не въеду в чём дело ... :confused:
 

lelikvrn

Guest
Сенкс, народ! Благодарен за инфу ...

Сейчас пройдусь по ссылкам... Может чего и найду...

-~{}~ 23.07.05 13:33:

Получение свойств изображения.

Если перед вами возникла задача проверить тип или размеры картинки перед загрузкой файла на сервер, вам потребуется функция getimagesize. В качестве аргумента она принимает имя файла на диске и возвращает массив, первые два элемента которого - ширина и высота соответственно, третий - тип изображения. В случае невозможности прочитать из указанного файла корректное изображение, функция возвращает ложь.



В связи с этим вопрос...
Я ведь не буду копировать файл, а затем проверять его...
я проверяю его спомощью $type=getimagesize($fupload);
где $fupload - путь к файлу на локальной машине посетителя
 

SiMM

Новичок
> Если перед вами возникла задача проверить тип или размеры картинки перед загрузкой файла на сервер, вам потребуется функция getimagesize.

Это где такой отборный бред пишут?
 

Profic

just Profic (PHP5 BetaTeam)
Если перед вами возникла задача проверить тип или размеры картинки перед загрузкой файла на сервер, вам потребуется функция getimagesize.
Cкажи ка мне где ты это вычитал?
 

SiMM

Новичок
> Cкажи ка мне где ты это вычитал?
Самое прискорбное в этой истории - это то, что это написано в деталях :( + попало в PHP Inside + растиражировано по рунету.
PS: лечится заменой словосочетания "перед загрузкой" на "после загрузки".
 

lelikvrn

Guest
Ясненько,
SiMM: не смог найти, но скачал с довольно популярного сайта по php

Какой то конкретный геморой у меня с этой формой,

там используется функция, объявляю в ней глобальные переменные,
но $_FILES['userfile']['name'], а $_FILES['userfile']['tmp_name']

всегда пустые!
хотя 'userfile' сменил на 'fupload' - у меня так поле называется...

P.S. я не совсем новичёк в PHP, просто мало работал с формами закачки, всмысле только в первый раз такую форму делаю с php

-~{}~ 23.07.05 16:35:

И что такое errata?
 

Profic

just Profic (PHP5 BetaTeam)
phpinfo(); в файле, который принимает форму и там ищи свои потерянные поля

-~{}~ 23.07.05 16:38:

errata грубо - это список неверных предложений и то как их правильно интерпретировать.
 

lelikvrn

Guest
спасибо Profic , SiMM ...

буду разбираться...

-~{}~ 23.07.05 18:17:

Ура! :D

Я наконецто понял где ошибка, я забыл написать "method=post" в форме ... :)

Ступил конечно, извините за весь бред который тут понаписал :p

-~{}~ 23.07.05 18:38:

У меня тут еще фопросик, вот что у меня получается

>Имя файла на нашем сервере (во время запроса): /tmp\php47.tmp
>Имя файла на компьютере пользователя: lv42.jpg
>MIME-тип файла: image/pjpeg
>Размер файла: 63560

Имя файла оно правильное('/tmp\php47.tmp'), а то что то не копируется нифига...

-~{}~ 23.07.05 19:05:

Warning: move_uploaded_file(): open_basedir restriction in effect. File(/home/localhost/www/myphoto/albums/3/big/787451.jpg) is not within the allowed path(s): (/home/myphoto:/usr/lib/php:/usr/local/lib/php:/tmp) in /usr/home/myphoto/public_html/a_upload.php on line 77

Что за ошибка такая ?

-~{}~ 23.07.05 19:40:

Всё, у меня всё получилось...

Вот результат, буду рад если вы его протестите на ошибки(дыры)...
http://myphoto.org.ru
 

CJ_Slade

Новичок
Автор оригинала: lelikvrn

Warning: move_uploaded_file(): open_basedir restriction in effect. File(/home/localhost/www/myphoto/albums/3/big/787451.jpg) is not within the allowed path(s): (/home/myphoto:/usr/lib/php:/usr/local/lib/php:/tmp) in /usr/home/myphoto/public_html/a_upload.php on line 77

Что за ошибка такая ?

http://myphoto.org.ru
Это значит скрипт не имеет прав на перемещение файла.
Используй
copy($_FILES['tmp_userfile']['name'], $_FILES['userfile']['name'])
 

lelikvrn

Guest
да нет, просто путь указал не правильный: /home/localhost/www/myphoto/albums - он немного другой ...

теперь всё работает! наконецто, я над этим скриптом неделю сидел, а паралельно экзамен по вождению(теория) сдавал... :)
 
Сверху