Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Dmitry

Отправка параметров вместе с постом

Рекомендованные сообщения

Здравствуйте, у меня стоит IPB 3.2.3. Как можно передать параметр с помощью HTTP-post классу class_attach.php из поста (скин uploadForm), в который я добавил следующий checkbox?

<input type="checkbox" checked="checked" name="isrec">

Поделиться сообщением


Ссылка на сообщение

Отправить с помощью формы. Кэп?

Поделиться сообщением


Ссылка на сообщение
08/25/12 20:01 (изменено)

Забыл добавить, что отправить значение надо вместе с заливаемым файлом, чтобы потом сделать проверку параметра. IPB же не перезагружает всю страницу, когда заливает файл (AJAX) и если я сделаю в скине Post Screen/UploadForm форму,

<form method="post" action="/forums/admin/applications/core/sources/classes/attach/class_attach.php">
<input type="checkbox" checked="checked" name="isrec" value="1" onclick="showRecForm(this);" />
<input type="submit" value="Submit">

то нужного результата не получу.

Изменено пользователем Dmitry

Поделиться сообщением


Ссылка на сообщение

А зачем делать вторую форму, отправляйте свой параметр вместе с формой загрузки файла. Даже если бы там не было аджакса, как вы собрались отправлять одновременно две разные формы, а главное зачем? Нонсенс какой-то у вас здесь вырисовывается.

Поделиться сообщением


Ссылка на сообщение

Там по умолчанию используется флэш загрузчик, код которого формируется через js (public\js\3rd_party\swfupload\swfupload.js). Так что можно там поколдовать с параметрами.

Поделиться сообщением


Ссылка на сообщение
08/25/12 21:05 (изменено)

Сейчас посмотрю. А то я не мог понять, ведь в skin_post.php (который формируется в т.ч. из uploadForm и attachiFrame) две формы:

<form id='postingform' action='{$this->settings['base_url']}' method='post' enctype='multipart/form-data'>

и

<form id='iframeUploadForm' method='post' enctype=\"multipart/form-data\" action=''>

,

а кнопка загрузки файла входит как раз в первую.

 

upd:

В swfupload есть метод

void addPostParam(name, value)

The addPostParam function adds a name/value pair that will be sent in the POST for all files uploaded.

 

The name/value pair will also appear in the post_params setting.

По описанию похоже - попробую прицепить.

 

upd2: Вторая форма как раз к базовому загрузчику относится (не swf). Она описана в attachiFrame и если в неё <input/> поместить, то в классе class_attach.php появляется переменная в $_POST.

Изменено пользователем Dmitry

Поделиться сообщением


Ссылка на сообщение

Кстати, параметры можно еще передать с помощью кукисов. Повесьте на чекбоксе функцию js записи куки, а в скрипте получите доступ к ней из массива $this->request

 

Зы.

Увы, но через кукисы не получится, для php они обновляются после перезагрузки страницы.

Поделиться сообщением


Ссылка на сообщение

Судя по контексту вопроса, вам надо определять, является ли загруженный файл файлом определенного типа. А не проще ли на основании mime это делать, без всяких галочек и доп.полей? :)

Поделиться сообщением


Ссылка на сообщение
08/26/12 18:48 (изменено)

Спасибо, с помощью кукизов сделал. Лучше, конечно, как-то передать SWFuploader-у параметр и там с помощью addPostParam запихнуть в $_POST - вдруг кукизы отключены у человека. Я попробовал приписать к

 

ipb.attach.registerUploader( 'attach_{$id}', useType, 'attachments', {
		'upload_url': uploadURL,
		'attach_rel_module': "{$type}",
		'attach_rel_id': "{$id}",
		'attach_post_key': "{$post_key}",
		'forum_id': "{$forum_id}",
		'file_size_limit': "{$stats['max_single_upload']}"
	} )});

в uploadForm ещё один параметр:

'isrec': document.postForm.isrec.checked 

в форму поста postFormTemplate добавил имя name='postForm',

<form name='postForm' id='postingform' action='{$this->settings['base_url']}' method='post' enctype='multipart/form-data'>

но уже в ips.attach.js не понял, как всё-таки применить addPostParam(). Там есть место, где объект загрузчика инициализируют,

swfu = new SWFUpload( settings );

если после этого захардкодить,

name = 'isrec';
value = 'isrec';
addPostParam(name, value);

то в $_POST у class_attach.php эта пара не появляется. Тут уже у меня матчасть хромает.

 

Судя по контексту вопроса, вам надо определять, является ли загруженный файл файлом определенного типа. А не проще ли на основании mime это делать, без всяких галочек и доп.полей?

А с MIME-типом вряд ли получится: тот скрипт, который обрабатывает файл написан для .zip файлов, в которых хранятся файлы .mgx - записи матчей одной старой компьютерной игры.

Изменено пользователем Dmitry

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...