OpenPNE で、新規会員の登録完了時、c_member_id に 0 がセットされてしまう件。
別の場所でテストしてみたら、ついにうちのテスト環境でもエラーが出てしまった。
(出たり出なかったりという状況)
というわけで、結局、今の今まで調査をさせられるハメになったが、鬼のように PHP スクリプト内に DEBUG 用の情報をファイルに吐き出す処理を入れて、処理の流れをトレースしてみたら・・・
何か、MODE=register な処理が時々2回走ってるんですけど・・・
で、2回走った時は高い確率でエラーになる。(ならない時もある)
結局、InternetExplorer のバグなんだよなあ。
これ。
↓
input type=image で フォームが2回送信される
http://support.microsoft.com/kb/822276/ja
バグだとわかっているのに何もしない Microsoft って・・・。おかげで、俺の貴重な時間が失われてしまったじゃないか!(怒)
最初のテストで、うちでは InternetExplorer 6 でも 100% の確率で正常に処理出来ていたのは、どうもうちの回線が遅かった(INS64 だ!)せいのようじゃね。
2回目の送信の結果(DB への二重登録でエラーになり、その時、c_member_id に 0 をセットした URL にリダイレクトされる)が来る前に、1回目の結果が返ってくるので問題なかったんだろう。回線が遅いから、2回目のデータがなかなかサーバに届かないってことだろう。
今日テストをしたのは NTT の光サービスにぶら下がっている PC だが、この場合も、コメントに長文を入れるなど、送信データをでかくしてやると、高確率で正常終了していたので、この読みは当たっていると思うがな。
つーことで、送信ボタンを画像で作って、
<input type="image" src="img/button.jpg" name="submit" onclick="submit();" alt="この内容で登録" />
なんてしてたんだけど、onclick="submit();" を削除したら、IE6, 7 でも正常に登録出来るようになった。
ほんまに、Microsoft には酷い目に遭わされてばかりや・・・とほほ。
コメントする