1

私の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"

前のフォームの直後に、まったく同じフォームを再度投稿すると。多くの投稿データが欠落しており、これしか受け取りません (jform['featured'] の後のすべての投稿変数が欠落しています):

["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"
  }

同じフォームを何度も再投稿し続けると、そのデータが失われたままになります。しかし、1 分待ってから再試行すると、すべての投稿データが戻ってきます。

これはメモリの問題のように思えますが、特定できません。私が投稿している画像は 700KB しかなく、その他の変数と画像を合わせたものは、Web サーバー上の次の php 設定では大きくなりすぎないようにしてください。

  • 最大実行時間 60
  • max_file_uploads 20
  • 最大入力時間 60
  • 最大入力変数 1000
  • メモリ制限 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);

4

2 に答える 2

6

私は自分の問題の解決策を見つけました。ファイルのアップロードでエラー「3」が表示されました。これは、連続するファイルが部分的にしかアップロードされなかったことを意味します。

これが発生する原因をグーグルで検索し、ここで答えを見つけました:http://www.bizzeh.com/739/php-problem-with-upload_err_partial-file-upload-error-code-3

過去 3 時間かけて、なぜ 3 番目のファイルだけがアップロードされるのか (そして、ファイルがランダムにアップロードされるだけなのか) を突き止めようとしましたが、UPLOAD_ERR_PARTIAL を取得し続けました。UPLOAD_ERR_PARTIAL は、ヘッダー Connection: Keep-Alive が原因であることが判明しました。大量のファイルのアップロードを必要とする Web アプリで作業している場合は、必ずアップローダー スクリプトで次のように設定してください: header("Connection: close"); これにより、接続が強制的に閉じられ、ファイルをアップロードするために新しい接続が開かれ、ファイルが適切にアップロードされるようになります。

于 2012-09-17T08:34:08.287 に答える
0

コードは私にとっては問題なく機能しているようです。他の中間 PHP ファイルの問題を探す必要があると思います。

administrator/index.phpソースも含めていただけますか?フォームの処理方法を知りたいです。それはvar_dump($_REQUEST);オンindex.phpですか?

于 2012-09-14T13:48:56.050 に答える