- 1
- 2
$uploaddir = '../images/';
$uploadfile1 = $uploaddir . basename($_FILES['img']['name']);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+144.8
$uploaddir = '../images/';
$uploadfile1 = $uploaddir . basename($_FILES['img']['name']);
все те же индусы
guest 16.10.2009 23:10 # +2
guest 16.10.2009 23:27 # +1
menelai 17.10.2009 09:20 # 0
guest 17.10.2009 09:52 # +2
учите матчасть!
bildja 17.10.2009 21:02 # −2
Опять же.. я не php'ист.. такое наблюдал в Perl'e - на одной и той же странице с одним и тем же браузером в $q->param('img') в одном случае был полный путь, в другом название
guest 20.10.2009 00:28 # 0
guest 18.10.2009 06:31 # −2
striker 18.10.2009 07:24 # +2
Так что в данном случае возвращает с расширением. Учи матчать, guest!
guest 20.10.2009 01:04 # 0
guest 18.10.2009 14:54 # +1
возвращает только имя файла, basename - здесь вообще не нужен. В этом
то и ошибка.
guest 19.10.2009 10:32 # 0
Мде? А почему тогда на официальном сайте PHP, в официальном описании работы с аплоадом файлов, basename таки используется? Наверное, это ж-ж-ж-ж неспроста?
http://ru2.php.net/manual/en/features.file-upload.post-method.php
<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
(хвост поскипан)
Из-за таких вот горе-оптимизаторов, выкидывающих "ненужные" функции, потом у людей веб-интерфейсы не работают. Резюме: код хороший, автор - говно.
getme 19.10.2009 11:15 # −1
ты сначала проверь, а потом пиши что-то.
guest 19.10.2009 11:46 # 0
guest 19.10.2009 11:47 # 0
getme 19.10.2009 12:20 # 0
guest 19.10.2009 12:36 # 0
getme 19.10.2009 13:14 # 0
guest 19.10.2009 13:41 # +2
Спишем хамство на альтернативную одаренность автора.
> ты сначала проверь, а потом пиши что-то.
Видишь ли, в поле "name" содержится ровно то, что прислал тебе клиент. Надеяться, что клиент тебе всегда будет слать именно голое имя файла, без путей - ламеризм чистой воды. Этого факте не отменяет даже то, что ты проверил на последнем файрфоксе и опере, и у тебя все работает. :)
getme 19.10.2009 13:57 # 0
и подставляет его в ['name']?
guest 19.10.2009 14:45 # +3
Юный обличитель сейчас будет обличать этих тупых критиканов, да? :) Не получится.
PHP 5.2.10 - путь стрипает.
PHP 4.1.x - не стрипает, с чем мне в свое время пришлось поиметь немало веселых часов.
А тот, кто пишет под конкретную версию PHP, рискует поиметь многие часы геморроя при поддержке собственного кода.
getme 19.10.2009 14:53 # 0
загружать надо под другим именем это 2ое.
guest 19.10.2009 16:52 # 0
Ах вот оно что! Ну наконец-то пришел ты и открыл всем глаза!
Народ, на самом деле функция basename не нужна! Просто если пользователю не удалось загрузить файл, ему нужно просто загрузить файл под другим именем. Это же очевидно, до этого любой ламер додумается!
А еще пользователю желательно сменить браузер. А если это невозможно - ему нужно вручную сформировать HTTP-запрос и отослать его на сервер (делов-то!).
Спасибо тебе, getme, просветил так просветил. Зато мы избавимся от гадкой, никому не нужной функции basename (анафема!) и сэкономим аж 16 микросекунд процессорного времени.
Еще раз повторю: горе-оптимизаторов надо стрелять. Вместо того, чтобы написать надежный код (пусть и излишний в чем-то именно для данных настроек сервера), оптимизатор включает "смекалку" и убирает все проверки. Да и пофиг, что дыра на дыре - зато у него работает! Он, блин, проверял.
guest 21.10.2009 07:29 # 0
guest 24.11.2009 05:11 # 0