【问题标题】:Php: $_POST is not set after form is sent to iframephp:表单发送到 iframe 后未设置 $_POST
【发布时间】:2015-09-17 02:17:54
【问题描述】:

我刚刚花了 4 个小时进行研究,但没有解决我的问题,所以我来了。我正在尝试设计自己的小块文件上传器,一切都运行良好。

我有一个主上传页面,可让您设置要上传的文件。然后它会自动从文件的字节中删除第一个块,并将其与其他一些信息一起放入一个表单中:

    <form id="hiddenform" name="hiddenform" action="SecretChunkUploader.php" target="iframe" enctype="multipart/form-data" method="post">
        <hidden id="Bytes" name="Bytes" value="" />
        <hidden id="Pass" name="Pass" value="<?php echo $_POST['Pass'];?>" />
        <hidden id="FileName" name="FileName" value="" />
        <hidden id="PackageNumber" name="PackageNumber" value="" />
</form>

当通过这个 javascript 命令提交表单时,每个&lt;hidden&gt; 的值都会正确发送:

document.forms["hiddenform"].submit();

表单提交到 iframe:

<iframe id="iframe" name="iframe" onload="" style="display:block"></iframe>

提交后,iframe 会导航到表单的 action 属性中指定的页面。

一切正常,除了收到表格时。页面加载完毕,但是没有post数据,也没有设置post的变量。

这里是 SecretChunkUploader.php 的代码:

    <?php
echo "Password: ".$_POST["Pass"]."<br/>";
echo "FileName: ".$_POST["FileName"]."<br/>";
echo "PackageNumber: ".$_POST["PackageNumber"]."<br/>";
echo "Bytes: ".$_POST["Bytes"];
?>

从 SecretChunkUploader.php 加载的页面如下所示:

Password:
FileName:
PackageNumber:
Bytes: 

我已经尝试测试 isset() 并且它对所有 post 变量都返回 false。

我到底做错了什么?我已经测试并知道该表单可以正常工作,只是没有继续传递值。

提前感谢您的帮助!

【问题讨论】:

  • 您提交表单的代码在哪里?这就是您的问题所在,这就是我们需要查看的代码。
  • document.forms["hiddenform"].submit();
  • 它确实被调用了,因为它确实将 iframe 的 src 移动到 ChunkUploader,只是没有发布值。
  • 您需要明确表格的位置。用户是否在 iframe 中填写表单?页面其他地方的表单和数据是否复制到隐藏表单?
  • HTML 中没有&lt;hidden&gt; 标签。

标签: php file post iframe upload


【解决方案1】:

代替:

<hidden id="Bytes" name="Bytes" value="" />

试试:

<input type="hidden" id="Bytes" name="Bytes" value="" />

当然,其他人也一样。

【讨论】:

  • 那么 不是真正的标签吗?我发誓我在做这个的时候在某个地方看到过。
  • 我从未见过。我只将其视为一个属性,例如
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多