2008/07/03 カテゴリ : Tech  JavaScript  Firefox 

ブラウザのパスワード記憶機能の困った現象

  1. 2008/07/03 15:24追記
  2. コメント欄で「通りすがり2」さんに autocomplete="off" とのコメントいただきました。大変ありがとうございます。
  3. ※ググったところ、autocomplete の指定で Firefox が記憶喪失になるのを防ぐ方法(http://postal-search-apis-and-solutions.blogspot.com/2008/06/autocomplete-firefox.html)との情報もありました。
  4. 貴重な情報ありがとうございました。


ずっとメインブラウザはOperaを使い続けてきたのですが、Firefox3が出てからすごく使いやすくなり、Firefoxに乗り換えた、中川です。

かなり便利(高速)になったFirefoxなのですが、
ログイン時などのlogin-id, passwordを記憶してくれる機能にちょっと困った現象に出会いました。


↓こんなのです。


・ログインフォーム
  1. <h1>ログイン</h1>
  2. <form method="post" action="index.php">
  3.   <input type="text" name="username" /><br />
  4.   <input type="password" name="password" /><br />
  5.   <input type="submit" name="login" value="ログイン" />
  6. </form>


で、これで管理画面などにログインして、D,PASSWORDを記憶させた場合、その中で、管理者管理などを作るときにユーザ名、パスワードを編集するような編集画面(新規登録画面)に行くと記憶したパスワードが勝手に入ってしまいます。

・新規登録フォーム
  1. <h1>新規登録</h1>
  2. <form action="edit.php" method="post">
  3.   <input type="text" name="username" id="username" value="" /><br />
  4.   <input type="password" name="password" id="password" value="" /><br />
  5.   <input type="submit" name="edit" value="編集" />
  6. </form>


編集などの場合には、username の value に値が入っている場合は記憶された値が勝手に入ることはないようですが、新規登録などの username インプットの value が空の場合に勝手に記憶された値が入ってしまいます。(そのための機能なのですが、うっとうしいですね。)

そもそも自分は記憶は一切させないようにしたい派なんですが、そうも言っていられないので、ググってもそれっぽい情報がでなかったので、記憶された値を入れない方法を考えてみました。

username の value を " "(空白一個)にしておき、javascriptで以下のように空に戻してあげます。
※ちなみにOpera9.5ではなぜかpasswordにだけ記憶された値が入っていました。。。
※IE7は優秀?でusernameを入れたらpassowordが補完されました。

・新規登録フォームのheadタグ内に追加
  1. <script type="text/javascript">
  2. //<![CDATA[
  3. window.onload = function() {
  4.   document.getElementById("username").value = "";
  5.   document.getElementById("password").value = ""; // opera
  6. }
  7. // ]]>
  8. </script>

これで、記憶された値が入らないようになりました^^;

何か、firefoxの機能で記憶された値を出さないような書き方があって、html側で制御
できる方法がありそうなものですがどうなんでしょう?
ご存知の方いらっしゃればコメントいただければと思います。

コメント

    • 通りすがり
    • 2008年07月03日 09:27
    • name属性を変えるという考え方はないんでしょうか
      通常、アカウントの入力情報の保存なんてログイン画面くらいしかないと思うので、 name="login_username"とでもしておけばいいのではないかと。
      JavaScriptでスペース消すやり方より安全な気がします
    • 通りすがり
    • 2008年07月03日 09:28
    • さきほどのですが
      試してないので動かなかったらすいません。
      さっきのは、たぶんname属性で判断してるだろうということで書いています。
    • 通りすがり2
    • 2008年07月03日 10:05
    • formタグやinputタグでautocomplete="off"を追加でいいのでは?
    • 中川です。
    • 2008年07月03日 15:37
    • >通りすがりさん
      nameを変えてもだめでしたので、強引にjavascript
      でやっていました。書くの忘れていました。。。

      >通りすがり2さん
      ありがとうございます!!!!
      まさしくこれでした。login manager や passwordなどでは調べてたのですが、autocompleteとは。
      記事に追記いたしました。



      ありがとうございました。

コメントフォーム

認証
captcha_key
 
 

トラックバックURI

アシアルPHP書籍情報