2014年3月5日水曜日

SSL + IE11の環境でtype="password"の値が取得できない

ssl_ie11_password会員登録の画面でユーザーから「登録できない」と問合せがあったので調べたときの覚書。

<会員登録処理の流れ>
ユーザー名、パスワード、パスワード確認を入力

POST

プレビュー画面
※このときPOSTされた値はdisplay:noneで隠してある。

POST

登録

 

調べてみるとプレビュー画面からPOSTする際に確認用パスワードの値を取得出来ていない。

IE11のバグとして上がっているみたい。

 

この現象の確認と対策用に作成したスクリプトはこちら

<html>
<head>
    <script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
    <title>POSTテスト</title>
    <style>
        .hide {display: none;}
    </style>
</head>
<body>
    <?php var_dump($_POST);?>
    <form id="submit-form" method="post">
        <div class="frame <?php if (!empty($_POST)) echo 'hide';?>">
            <input type="text" name="test" value=""/>
            <input type="password" name="pass" value="<?php if (!empty($_POST['pass'])) echo $_POST['pass'];?>"/>
            <input type="password" name="pass_confirm" value="<?php if (!empty($_POST['pass_confirm'])) echo $_POST['pass_confirm'];?>"/>
        </div>
        <button>submit</button>
    </form>
    <script>
jQuery(function($){
    var jForm = $('#submit-form');
    jForm.submit(function() {
        alert(jForm.find('[name=pass_confirm]').val());
        if (confirm('post?')) {
            return true;
        }
        return false;;
    });

    <?php if (!empty($_POST)) :?>
    // this is for SSL + IE11
    //jForm.find('[name=pass_confirm]').val('<?php echo $_POST['pass_confirm'];?>');
    <?php endif;?>
});
</script>
</body>
</html>

 

最後のコメントを外すとSSL + IE11の環境でも動作するようになる。

SSL証明書をインストールしていないサーバーでも再現しなかったので注意。

 

< Related Posts >

コメントを投稿
Related Posts Plugin for WordPress, Blogger...

Blog Archives