我有一个我想用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] 输入的值为空或带有文件 UUID 的 CDN 链接。
如果从外部设置输入的值并触发 DOM 更改事件,它将反映在小部件中。例如,将其设置为文件 UUID 或 CDN 链接会将该文件显示为在小组件中上传。您可以在实时小部件上执行此操作,甚至可以在实际加载之前执行此操作。
因此,您的第二个代码段应该可以正常工作。
您可能还想知道通过JS设置小部件值的方法:
var widget = uploadcare.Widget('[role=uploadcare-uploader]');
widget.value("https://ucarecdn.com/e8ebfe20-8c11-4a94-9b40-52ecad7d8d1a/billmurray.jpg");
排序了这个。它可以通过值来完成。伟大!
https://uploadcare.com/documentation/widget/#input-value
$_POST
将变量从一个表单传递到另一个表单,就像您使用隐藏字段所描述的那样。但这不是很有效,当您将信息写回客户端时,他们可能会改变这一点。
保存这些变量的更好方法是使用$_SESSION
:
会话支持允许您在 $_SESSION 超全局阵列。当访问者访问您的网站时,PHP 将自动检查(如果session.auto_start设置为 1)或打开 您的请求(明确通过session_start())是否特定 会话 ID 已随请求一起发送。如果是这种情况, 将重新创建先前保存的环境。 http://php.net/manual/en/intro.session.php
因此,上传图像后,您将图像ID存储在$_SESSION
中:
session_start();
$_SESSION['imageid'] = 123456;
然后,即使以后的表单,您也可以再次使用 $_SESSION
变量访问 imageid:
session_start();
var_dump($_SESSION['imageid']);
int 123456
有关会话的更多信息,请参阅 php 文档:http://php.net/manual/en/book.session.php