0

ここにあるコードに従って、安全なログインページを作成しました。問題は、非表示の入力要素を作成できないことです。

function formhash(form, password) {
    // Create a new element input, this will be out hashed password field.
    var p = document.createElement("input");
    // Add the new element to our form.
    form.appendChild(p);
    p.name = "p";
    p.type = "hidden"
    p.value = hex_sha512(password.value);
    // Make sure the plaintext password doesn't get sent.
    password.value = "";
    // Finally submit the form.
    form.submit();
}

私はそれがIEでのみ機能し、geckoでは機能しないと言っています。これは本当ですか、それとも何かが足りないだけですか?

アップデート:

ログインページにJavaScriptを配置すると、フォームハッシュ関数が機能します。外部ファイルに移動すると、問題が再び発生します。

@asprin注意。php を配置する理由は、コードが php 実装に基づいていたためです。

@Henrikはそれを行います。ありがとう

@RenePotうん、それはprocess_login.phpページで呼び出されました

@MarkGarcia提案をありがとう。関数が宣言されていないことに注意してください

@WernerVesteråsよくわかりませんが、後で考えます。

@クエンティン提案をありがとう。そうします:D

4

2 に答える 2

1

formおそらく、あなたが思っているように設定されていない可能性があります.jsfiddle.netはおそらく私たちとあなたがデバッグするのに役立ちます. http://jsfiddle.net/JPTyj/で動作するバージョンを設定し、実際に動作することを確認するために非表示にコメントアウトします。DOM に動的に追加されるため、ブラウザーの「ソースの表示」で非表示の入力フィールドを表示しないことに注意してください。firebug または chrome dev tools を使用して確認してください。

また、ほとんどの場合、生の JavaScript を記述する代わりに、プラットフォームに依存しないコードを簡単に開発できるようにするために、ライブラリを使用することをお勧めします。

于 2012-10-01T08:25:53.800 に答える
0

IE8 (少なくとも) では、type追加する前に次のように属性を設定する必要がありますsetAttribute()

var p = document.createElement("input");
p.setAttribute("type", "hidden");
form.appendChild(p);

http://jsfiddle.net/BePGD/ IE7、IE8、Chrome でテスト済み。

于 2012-10-01T08:36:16.773 に答える