横浜の業務用ソフトウェア開発やPHPを使ったWEBシステム開発・ホームページ制作ならアイ・エヌ・ワークスにお任せください。

横浜のホームページ制作ページ
  • home
  • 会社概要
  • 制作実績
  • 価格
  • ダウンロード
  • ブログ
  • お問い合せ
ホーム > ブログ

【横浜のWeb制作業者】ブログ

以下の、フォーム送信の簡単なコードが動かないでしばらく悩んだのでメモ。

[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ビットという環境の違いが原因かと思ったけど、いくつかの環境で試してみたところそうではないみたい。同じ環境内であれば暗号化、復号化とも問題ないようですが、暗号化データを移行する時は注意が必要ですね。