У меня есть форма, которую я хочу проверить с помощью PHP. Загрузка постера из UploadcareВиджет является частью этой формы.
Иногда пользователям приходится возвращаться назад в форме, чтобы исправить вещи — неправильный адрес электронной почты и т. Д. Я хочу, чтобы выбранный файл загрузки сохранялся в этой форме.
Это работает, когда нажимается кнопка «Назад», но я не могу на это рассчитывать. Я использую переменные PHP POST для перезагрузки и повторного заполнения формы.
Мой вопрос: могу ли я использовать переменные POST с кнопкой ввода Uploadcare, чтобы «запомнить» и перезагрузить выбранное изображение, ранее загруженное пользователем?
Мой текущий код
<input type="hidden"role="uploadcare-uploader"data-preview-step="true"data images-only="true"name="adposter"style="display: inline-block;" />
Можно ли сделать что-то вроде:
<input type="hidden"role="uploadcare-uploader"data-preview-step="true"data-images-only="true"name="adposter"style="display: inline-block;"value="<?php print isset($_POST["adposter"]) ? htmlspecialchars($_POST["adposter"]) : ""; ?>"/>
Как было бы с другими полями? Очевидно, у виджета ввода Uploadcare есть свой собственный способ работы, отсюда и запрос.
Как документация говорит:
Значение ввода [role = uploadcare-uploader] либо пустое, либо ссылка CDN с UUID файла.
Если вы внешне установите значение входа и запустите событие изменения DOM, оно будет отражено в виджете. Например, если для него указать UUID файла или ссылку CDN, этот файл будет загружен в виджет. Вы можете сделать это на живом виджете или даже до того, как он действительно загрузится.
Так что ваш второй фрагмент должен работать правильно.
Вы также можете узнать, как установить значение виджета через JS:
var widget = uploadcare.Widget('[role=uploadcare-uploader]');
widget.value("https://ucarecdn.com/e8ebfe20-8c11-4a94-9b40-52ecad7d8d1a/billmurray.jpg");
Ты можешь использовать $_POST
передавать переменные из одной формы в другую так же, как вы описали, используя скрытые поля. Но это не очень эффективно, и когда вы записываете информацию обратно клиенту, они могут это изменить.
Лучший способ сохранить переменные такого рода — использовать $_SESSION
:
Поддержка сеансов позволяет хранить данные между запросами в
$ _SESSION суперглобальный массив. Когда посетитель заходит на ваш сайт, PHP
проверит автоматически (если для session.auto_start установлено значение 1) или включен
ваш запрос (явно через session_start ()), является ли конкретный
ID сеанса был отправлен с запросом. Если это так, то
ранее сохраненная среда воссоздается.
http://php.net/manual/en/intro.session.php
Таким образом, после загрузки изображения вы сохраняете идентификатор изображения в $_SESSION
:
session_start();
$_SESSION['imageid'] = 123456;
Тогда даже формы позже вы можете получить доступ к imageid просто с помощью $_SESSION
снова переменная:
session_start();
var_dump($_SESSION['imageid']);
int 123456
См. Документацию php для получения дополнительной информации о сессиях: http://php.net/manual/en/book.session.php
Сортировал это. Это можно сделать с помощью Value. Большой!