Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Закачка изображений на сервер с правами 777

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как реализовать именно с правами?
Kubert
Отправлено: 02 Июля, 2010 - 12:00:30
Post Id



Частый гость


Покинул форум
Сообщений всего: 186
Дата рег-ции: Февр. 2010  


Помог: 3 раз(а)




Есть код:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <form method="post" enctype="multipart/form-data">
  3.     <p>Загрузить файл:&nbsp;&nbsp;
  4.     <input name="file" size="18" type="file" value="">&nbsp;&nbsp;
  5.     <input name="submit" type="submit" value="Загрузить"></p>
  6. </form>
  7.  
  8.  
  9. <?
  10. $file = $_FILES['file']['tmp_name']; //Переменная переданного файла - мой комент
  11. $filename = $_FILES['file']['name']; //Имя файла как я предпологаю - мой комент
  12.  
  13.  $size = filesize ($_FILES['file']['tmp_name']);
  14.  $type = strtolower(substr($filename, 1+strrpos($filename,".")));
  15.  $new_name = pic.'.'.$type;
  16.  
  17.    if (copy($file, "../../img/country/6/".$new_name))
  18.      echo "<img src=\"../../img/country/6/$new_name\"><br><br>";
  19.  
  20. ?>
  21.        
  22.  


Но если администратор сайта захочет поменять картинку, то она не перезапишет, так как права у картинки 644... Как изначально посылать картинку с правами 777?
 
 Top
Uchkuma
Отправлено: 02 Июля, 2010 - 13:15:05
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




На файл надо ставить права 666, а не 777.
После
PHP:
скопировать код в буфер обмена
  1. if (copy($file, "../../img/country/6/".$new_name))

добавить
PHP:
скопировать код в буфер обмена
  1. chmod("../../img/country/6/".$new_name, 0666);

Но чтобы можно было заменять файлы в этой папке, надо ставить права на папку, а не на файл:

(Отредактировано автором: 02 Июля, 2010 - 13:16:46)

 
 Top
Kubert
Отправлено: 02 Июля, 2010 - 14:30:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 186
Дата рег-ции: Февр. 2010  


Помог: 3 раз(а)




спасибо. решено
 
 Top
JustUserR
Отправлено: 03 Июля, 2010 - 01:07:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Kubert пишет:
Но если администратор сайта захочет поменять картинку, то она не перезапишет, так как права у картинки 644...
В данном случае важным моментом является то что права доступа к файлу определяют именно такие дейтвия с ним как чтение запись и выполнение - в то время как возможность удаления файла определяется правами доступа к папке в которой он лежит Таким образом если пользователь владеет папкой и имеет на нее достаточные права - то он может удалять и заменять в ней любые файлы - если таковым пользователем с доступом является www-data то вы свободно сможете перезаписать загруженный файл
Обратите внимание что такой подход с разделенными правами на изменение файла и его удаления - а также возможность удаления файла пользователем-владельцем папки не имеющих на него соответствующих прав является оправданным - и на самом деле изменение файла это большая привелегия чем его удаление Дело заключается в системе жестких ссылок в linux - ведь подразумевается что когда вы изменяете файл то есть реализуете права на запись то вы на самом деле изменяете его содержимое - а когда удаляете файл то на самом деле удаляется жесткая ссылка на файл которая привязана к каталогу которым вы владеете Ведь по сути каталог является обычным файлов содержащим индексы находящихся в нем файлов - и манипулирование жесткими ссылками в нем не влияет на данные на которые они ссылаются


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB