ここ数か月間、PHP アプリケーションで Uploadify を使用しており、とらえどころのないバグを突き止めようとしています。致命的なエラーが発生したときに電子メールを受け取り、かなりの量の詳細を提供してくれます。私はそれらの何十ものを受け取りました。ただし、自分で問題を再現することはできませんでした。一部のユーザー (私のような) は問題を経験しませんが、他のユーザーは問題を経験します。
問題の詳細を説明する前に、ここで流れを説明します。
- ユーザーが、使用している CMS のページの編集画面にアクセスします。
- ページのレコード ID は非表示の値としてフォームに入れられます。
- ユーザーは [Uploadify] 参照ボタンをクリックし、ファイルを選択します (単一のファイル選択のみが許可されます)。
- ユーザーがフォームの [送信] ボタンをクリックします。
- jQuery はフォーム送信アクションをインターセプトし、Uploadify をトリガーしてアップロードを開始し、送信アクションに対して false を返します (フォーム送信イベントを手動でキャンセルして、Uploadify が引き継ぐことができるようにします)。
- アップロードをカスタム プロセス スクリプトにアップロードします。
- Uploadify はアップロードを終了し、Javascript 完了コールバックをトリガーします。
- Javascript コールバックは $('#myForm').submit() を呼び出してフォームを送信します。
今、それが起こるべきです。アップロードが 100% でフリーズするという報告や、「I/O エラー」が表示されるという報告を受け取りました。
何が起こっているかというと、フォームは完了コールバックで送信されていますが、フォームに存在するいくつかの投稿パラメーターは単に投稿データにありません。前に私が言った、非表示フィールドとしてフォームに追加されたページの ID は、投稿データ ($_POST) にはありません。$_POST 配列に「id」の項目はありません。奇妙なことに、投稿データにはいくつかのフィールドの値が含まれています。たとえば、レコード名用の「名前」というタイプのテキストの入力があり、投稿データに表示されます。
ここに私が集めたものがあります:
- これは、Mac OSX 10.5 および 10.6、Windows XP、および Windows 7 で発生しています。正確なユーザー エージェント文字列があれば投稿できます。
- ユーザーは Flash 10.0.12 以降を使用する必要があります。10.0.12 未満の場合、フォームは通常の「ファイル」フィールドの使用に戻るようにしました。
これの原因が何であるかについて、誰かが何か考えを持っていますか?