アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

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




2008/07/03 15:24追記
コメント欄で「通りすがり2」さんに autocomplete="off" とのコメントいただきました。大変ありがとうございます。

※ググったところ、autocomplete の指定で Firefox が記憶喪失になるのを防ぐ方法(http://postal-search-apis-and-solutions.blogspot.com/2008/06/autocomplete-firefox.html)との情報もありました。

貴重な情報ありがとうございました。




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

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


↓こんなのです。


・ログインフォーム


<h1>ログイン</h1>
<form method="post" action="index.php">
	<input type="text" name="username" />
	<input type="password" name="password" />
	<input type="submit" name="login" value="ログイン" />
</form>



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

・新規登録フォーム


<h1>新規登録</h1>
<form action="edit.php" method="post">
	<input type="text" name="username" id="username" value="" />
	<input type="password" name="password" id="password" value="" />
	<input type="submit" name="edit" value="編集" />
</form>	



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

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

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

・新規登録フォームのheadタグ内に追加


<script type="text/javascript">
//<![CDATA[
window.onload = function() {
	document.getElementById("username").value = "";
	document.getElementById("password").value = ""; // opera用
}
// ]]>
</script>


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

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