Recent Comments
Categories
- No categories
以下の、フォーム送信の簡単なコードが動かないでしばらく悩んだのでメモ。
[JavaScript]
<script>
function dosubmit()
{
var form = document.getElementById(‘form1’);
form.submit();
}
</script>
<form id=”form1″>
<input type=”text” name=”text1″ />
<input type=”submit” name=”submit” value=”送信” />
</form>
<a href=”#” onclick=”dosubmit();return false;”>送信テスト</a>
(このリンクが動かない…。もちろんJavaScriptオンでも)
[/JavaScript]
なぜ動かないかわかりますか。
答えは、
<input type="submit" name="submit" value="送信" />
の 「name=”submit”」の部分。
これで form.submit が上書きされてしまうため送信ができないのでした。
やっぱりJavaScriptは嫌いだ。
PEARのCrypt Browfishライブラリの挙動がローカル環境とサーバ環境で違うのでなんだろうと思って解析してみた。
結果、Windows版とLinux版で排他的論理和の挙動が違っていることが原因と判明。
echo ((-21474836470) ^ (2147483647));
Windows版ver5.2.9
echo ((-21474836470) ^ (2147483647));
結果→ 2147483637
Linux版PHP ver5.1.6(CentOS5付属)
echo ((-21474836470) ^ (2147483647));
結果→ -1
そもそも、ライブラリ内で扱っている初期値での演算で32ビット超えしちゃっている時点で、ライブラリの実装として間違っているような気がするが…。
それはさておき、上記の違いがマシンの64ビットと32ビットという環境の違いが原因かと思ったけど、いくつかの環境で試してみたところそうではないみたい。同じ環境内であれば暗号化、復号化とも問題ないようですが、暗号化データを移行する時は注意が必要ですね。