Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

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

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

Опубликовано:

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

Опубликовано:
  • Автор

Забыл добавить, что отправить значение надо вместе с заливаемым файлом, чтобы потом сделать проверку параметра. 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). Так что можно там поколдовать с параметрами.

Опубликовано:
  • Автор

Сейчас посмотрю. А то я не мог понять, ведь в 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 это делать, без всяких галочек и доп.полей? :)

Опубликовано:
  • Автор

Спасибо, с помощью кукизов сделал. Лучше, конечно, как-то передать 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

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.