VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Игрался целый день... Не хочет добавлять, говорит, что загрузка файла прошла неудачно.
Файлы точно существуют, пути все правильные, размер правильный и все типы прописаны, вложения делаю как администратор.
Но в результате работы файлы удаляются, а это значит, что они все же видны во время процесса...
В общем не знаю я что делать...
Прошу помощи, может быть кто то уже сталкивался с такой задачей.
А может быть я что то не так вызываю этот процесс.
в результате работы функции?
или уже после загрузки файла?
если функция отработала без ошибок, смотри в папку, где должен сохраниться аттач, он удалится только через час, если не будет прилеплен к посту
@SMak044
Эксперт
Join Date: May 2008
Награды в конкурсах:
Posts: 1,764
Версия vB: 3.8.4
Пол:
Reputation:
Expert 1705
Репутация в разделе: 132
0
Quote:
Originally Posted by kerk
в результате работы функции?
или уже после загрузки файла?
если функция отработала без ошибок, смотри в папку, где должен сохраниться аттач, он удалится только через час, если не будет прилеплен к посту
В том то и дело, что после работы функции, файл удаляется, но в таблицу запись не добавляется и в папке с атачами новых файлов не появляется....
Так ... я кажется понял свою ошибку... А слона то мы и не заметили.... А откуда функция возьмет postid если я ее не передаю в параметре функции???
Туплю ....
Спасибище огромное!!!! Вот что значит своевременно заданный вопрос
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,711
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 7723
1
а еще такой (риторический) вопрос...
эта функция вызывается где то вне пределов воблофайлов?
ведь если ее вызвать на странице где глобал уже подключен, то его нет нужды подключать второй раз
cyberdaemon
Эксперт
Join Date: Apr 2009
Location: C:\NUL\
Награды в конкурсах:
Posts: 1,519
Версия vB: 3.8.x
Пол:
Reputation:
Professional 1062
Репутация в разделе: 89
1
SMak044, я в своё время почитав весь словесный понос в соответствующей теме добил таки это безобразие до логического завершения, но с фактической загрузкой файла делал несколько иначе. Сам скрипт автопоста заполнял таблицу в базе и потом сам же заливал файл на сервер без участия апи воблы, работало превосходно, если шибко надо могу в принципе откопать всё это безобразие (было сделано как парсер раздач для торрент трекера).
@Orfo
Знаток
Join Date: Jan 2008
Posts: 655
Версия vB: 3.8.x
Reputation:
Knowing 263
Репутация в разделе: 27
1
cyberdaemon я делал с апи воблы. но кастыльным способом, с curl загрузкой файла со своего же сервера. А уже потом с апи же создавал сообщение или тему.
@SMak044
Эксперт
Join Date: May 2008
Награды в конкурсах:
Posts: 1,764
Версия vB: 3.8.4
Пол:
Reputation:
Expert 1705
Репутация в разделе: 132
0
Quote:
Originally Posted by kerk
а еще такой (риторический) вопрос...
эта функция вызывается где то вне пределов воблофайлов?
ведь если ее вызвать на странице где глобал уже подключен, то его нет нужды подключать второй раз
А вот и нет... Я пробовал, если не добавить глобал $vbulletin, то скрипт выпадает и выводит содержание регистри... как только подключил $vbulletin то все стало на место...
Во многих случаях действительно подключение не нужно, но вот конкретно в этом оказалось необходимым
SMak044 добавил 30.08.2012 в 15:54 cyberdaemon, ты пошел другим путем прямым вызовом версии класса, я же хочу реализовать вариант с работой как в вышеупомянутом скрипте, что бы не морочить голову ни с превьюхами ни с правами.
В моем варианте в эту функцию передаются только разрешенные файлы и с правильными ограничениями по объему.
В общем у меня есть пару мыслей, попробую сегодня реализовать....
SMak044 добавил 30.08.2012 в 21:18
И так... я вроде понял проблему и вот она...
Когда булка делает вложения, то идут разные проверки и все затыкается на проверке
PHP Code:
!is_uploaded_file($this->upload['location'])
По сути это проверка добавлен ли файл методом POST или GET
Естественно если я указываю уже к сохраненному на диске файлу, то условия срабатывает я выполнение загрузки прекращается.
Я обошел проблему убрав это условие, но как Вы понимаете, это совсем не хорошо....
После того как убрал условия атачи стали прикрепляться к сообщению и стали создаваться миниатюры, в общем все заработало.
Потому прошу помощи с вопросом как "обмануть" эту функцию, что бы не трогать код самой булки
Я попробовал создать значения в глобальной переменной $_FILES но это не помогло, хотя мог и не правильно заполнять этот массив.... В общем если есть идеи буду очень благодарен.
Last edited by SMak044 : 08-30-2012 at 10:18 PM.
Reason: Добавлено сообщение
А вот и нет... Я пробовал, если не добавить глобал $vbulletin, то скрипт выпадает и выводит содержание регистри... как только подключил $vbulletin то все стало на место...
Во многих случаях действительно подключение не нужно, но вот конкретно в этом оказалось необходимым
Керк про это:
PHP Code:
require_once('./global.php');
@SMak044
Эксперт
Join Date: May 2008
Награды в конкурсах:
Posts: 1,764
Версия vB: 3.8.4
Пол:
Reputation:
Expert 1705
Репутация в разделе: 132
1
Quote:
Originally Posted by GiveMeABreak
Керк про это:
Не понял сразу... с другой стороны он все же require_once и не подключается если подключен уже
Хотя попробую выключить, напишу что получится...
SMak044 добавил 31.08.2012 в 14:51
Ну вроде я научился делать вставку вложений на форум с помощью скрипта.
Оказалось, что все не так просто но все же это возможно.
Условия использования:
Вложение должно быть разрешенным в админке.
Вложение не должно превышать по размеру разрешенное в админке.
Пользователь от имени которого будут сделаны вложения, должен иметь права на размещение вложений.
Форум и тема должны быть открыты для размещения сообщений.
Так как процесс вставки в сообщение вложения не включает в себя обновления счетчиков и внесение значений в таблицы post и thread, а без этих данных вложения не хотят отображаться, то мне пришлось сделать вспомогательную функцию, которая делает внесение необходимых обновлений.
PHP Code:
function attach_file_to_post($attachmentid, $postid, $threadid)
{
global $vbulletin;
$sqlcountattach = $vbulletin->db->query_first("
SELECT count(*) AS countattach
FROM " . TABLE_PREFIX . "attachment as attachment
WHERE attachment.postid = " . $postid . "
GROUP BY attachment.postid
");
Но все не так просто, необходимо до вызова функции, сформировать правильно массивы:
$file
PHP Code:
$file['name'] = $filename; // Имя файла без путей
$file['tmp_name'] = $filearr['bodyfile']; // Полный путь к файлу + имя файла
$file['error'] = '0'; // 0 значит что ошибки нет
$file['size'] = $filearr['bodylenght']; // Размер файла в байтах
Предупреждение, после добавления вложения, этот файл удаляется автоматически, так что если файл Вам еще нужен, то предварительно сделайте его копию.
Предупреждение!
все это работает в случае если в файле class_upload.php на 359 строке убрать проверку !is_uploaded_file($this->upload['location'])
Что очень не безопасно.
Я пока не нашел способа обмануть эту проверку, но работаю над этим... если у кого то появятся светлые мысли на этот счет, то прошу отписаться...
Last edited by SMak044 : 08-31-2012 at 03:51 PM.
Reason: Добавлено сообщение
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,711
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 7723
1
SMak044,
мне кажется было бы правильней объединить эти две функции в одну и в конце делать проверку:
если файл загружет и размер файла равен размеру временного файла (корректно скопирован из каталога в папку аттачей)
если файл прикреплен к посту + все счетчики корректно обновлены
возвращаем ID аттачмента или массив данных: аттачИД, постИД, узерИД, тредИД, форумИД, для возможного использования этих данных где то дальше по скрипту
в противном случае функция должна возвратить false или "0" (ноль), что бы: либо прекратить выполнение скрипта и показать ошибку, либо продолжать, но без вложения (хз, может это и не нужно будет)