【问题标题】:Post data is missing when posting the same data in rapid sequence快速发布相同数据时缺少发布数据
【发布时间】:2012-09-07 16:05:17
【问题描述】:

我制作了一个包含几个字段(名称、标题等)的表单,其中包括将字段存储在我的 mysql 数据库中的图像上传。

当我第一次提交表单时,我收到了所有的帖子数据,并且能够使用帖子数据来构建我的数据库查询。

帖子数据如下所示:

["option"]=>
  string(9) "com_jimmo"
  ["jform"]=>
  array(6) {
    ["id"]=>
    string(0) ""
    ["lang_code"]=>
    string(5) "nl-NL"
    ["title"]=>
    string(0) ""
    ["jimmo_id"]=>
    string(3) "141"
    ["path"]=>
    string(0) ""
    ["featured"]=>
    string(1) "0"
  }
  ["task"]=>
  string(11) "image.apply"
  ["controller"]=>
  string(5) "image"
  ["244dd7871d511949f4cf87df21403258"]=>
  string(1) "1"

当我再次发布完全相同的表格时,紧接在前一张之后。丢失了很多 Post 数据,我只收到了这个(jform['featured'] 之后的所有 post 变量都丢失了):

["option"]=>
  string(9) "com_jimmo"
  ["jform"]=>
  array(6) {
    ["id"]=>
    string(0) ""
    ["lang_code"]=>
    string(5) "nl-NL"
    ["title"]=>
    string(0) ""
    ["jimmo_id"]=>
    string(3) "141"
    ["path"]=>
    string(0) ""
    ["featured"]=>
    string(1) "0"
  }

如果我一遍又一遍地重新发布相同的表单,那么数据就会丢失。但是当我等待一分钟再试时,所有的帖子数据都回来了。

这对我来说似乎是一个内存问题,但我无法确定它。我发布的图像只有 700KB 大,其他变量和图像组合对于网络服务器上的以下 php 设置不应该太大:

  • max_execution_time 60
  • max_file_uploads 20
  • max_input_time 60
  • max_input_vars 1000
  • memory_limit 128MB
  • post_max_size 8MB
  • upload_max_filesize 8MB

有没有人知道在连续发布时可能导致帖子数据丢失的原因?

根据我的 html 请求:

    <form action="/administrator/index.php?option=com_jimmo" method="post" name="adminForm" id="jimmo-form" enctype="multipart/form-data">
        <fieldset class="adminform">
        <legend>afbeeldingen</legend>
        <ul class="adminformlist">
            <li><input type="hidden" name="jform[id]" id="jform_id" value=""></li>
            <li><label id="jform_lang_code-lbl" for="jform_lang_code" class="">selecteer een taal</label><select id="jform_lang_code" name="jform[lang_code]">
    <option value="0">default</option>
    <option value="nl-NL" selected="selected">Dutch</option>
    <option value="en-GB">English (UK)</option>
</select>
</li>
            <li><label id="jform_title-lbl" for="jform_title" class="hasTip" title="">title</label><input type="text" name="jform[title]" id="jform_title" value="" class="inputbox" size="40"></li>
            <li><label id="jform_jimmo_id-lbl" for="jform_jimmo_id" class="">pand</label><select id="jform_jimmo_id" name="jform[jimmo_id]">
    <option value="125">Uitstekend gelegen app met twee slaapkamers </option>
    <option value="156">test webmamba 2</option>
</select>
</li>
            <li><label id="jform_path-lbl" for="jform_path" class="">afbeelding</label><select id="jform_path" name="jform[path]">
    <option value="-1">- Niets geselecteerd -</option>
    <option value="" selected="selected">- Gebruik standaard -</option>
    <option value="141_1346935067.jpg">141_1346935067.jpg</option>
    <option value="141_1347022237.jpg">141_1347022237.jpg</option>
</select>
</li>
            <li><label id="jform_featured-lbl" for="jform_featured" class="">toon afbeelding als voorvertoning</label><select id="jform_featured" name="jform[featured]">
    <option value="0" selected="selected">No</option>
    <option value="1">Yes</option>
</select>
</li>
            <li>
                <label id="jform_jimmo_image-lbl" for="jform_jimmo_image" class="">Upload new Image</label>
                <input type="file" name="jform_jimmo_image">
            </li>
            <li>
                <label id="jform_jimmo_preview-lbl" for="jform_jimmo_preview" class="">Current Image</label>
                <img name="jform_jimmo_preview" src="http://immo-outlook.be/images/jimmo/">
            </li>
        </ul>
    </fieldset>
    <div>
                <input type="hidden" name="task" value="image.edit">
        <input type="hidden" name="controller" value="image">
        <input type="hidden" name="a059e7116c95f234bdac9458883d7b93" value="1"> </div>
</form>

动作的php代码就是var_dump($_REQUEST);

【问题讨论】:

  • 请从这个转储中发布整个代码,我们无能为力
  • 你能把 HTML 和 PHP 代码贴在这里吗?
  • 与每个浏览器(firefox,即 chrome 等)相同的 pb?
  • 我认为这不是内存问题,我确定您的 PHP 或 HTML 代码有问题。等待一分钟然后您的表单再次开始工作是没有任何意义的。是在本地机器上还是在服务器上?您是否在不同的服务器上进行了测试以查看是否存在问题?
  • 您是否在同一页面上发布? PHP_SELF?

标签: php forms post submit


【解决方案1】:

我找到了解决问题的方法。我在文件上传时收到错误“3”,这意味着后续文件仅上传了部分。

我搜索了可能导致这种情况发生的原因并在此处找到了答案:http://www.bizzeh.com/739/php-problem-with-upload_err_partial-file-upload-error-code-3

我刚刚花了 3 个小时试图弄清楚为什么只有 第三个文件会上传(然后文件只会随机上传)和 我继续得到 UPLOAD_ERR_PARTIAL。结果是 UPLOAD_ERR_PARTIAL 可能是由标头 Connection: Keep-Alive 引起的。如果你在工作 在需要大量文件上传的网络应用程序上,请务必使用 在您的上传脚本上设置: header("Connection: close");这会 强制关闭连接,并强制建立新连接 打开以上传文件,这可以使文件正确 已上传。

【讨论】:

    【解决方案2】:

    代码对我来说似乎可以正常工作。我认为您应该在其他中间 PHP 文件上查找问题。

    您能否也包括administrator/index.php 来源?我想看看你如何处理表格。是var_dump($_REQUEST); 上的index.php 吗?

    【讨论】:

    • index.php的代码&lt;?php echo "&lt;pre&gt;"; var_dump($_REQUEST); echo "&lt;/pre&gt;"; ?&gt;
    • 我已经下载了我的应用程序,当在我的本地 wamp 环境中运行时,我没有遇到任何问题,所有帖子数据都在那里。所以肯定是服务器问题。
    • 我猜,因为我也在两个不同的地方进行了测试,本地和远程服务器上,它工作得很好。这可能是由于配置错误或服务器过载。顺便说一句,很高兴听到现在很好! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多