目次へ戻ります
イヌでもわかるJavaScript講座


パスワードを入力してリンクする その3

Step.15 や Step.16 で、パスワードを入力してリンクしましたが、ソースを見るとパスワードがバレバレでした。絶対にバレない方法とは・・・!
難易度:★★☆☆☆☆☆☆☆☆
【実行例】

ここは家族専用です→
※ちなみに Tatsuya家へのパスワードは、「secret」 です。 (^^;

【リスト】
<script language="JavaScript"><!--
function myEnter(){
   myPassWord = prompt(
     "Tatsuya家へのパスワードを入力してください 「 secret 」","");
   if ( myPassWord != "" )location.href = myPassWord+".htm";
}
// --></script>

<form>
ここは家族専用です→ 
<input type="button" value="Tatsuya家へ入る" onclick="myEnter()">
</form>

サンプルだけのHTMLは こちらへ
【説明】

Q:「Step.15 や Step.16 で、パスワードを入力してリンクするサンプルですが、JavaScript では、絶対にバレないようにパスワードは設定できないのですか?」

A:「できます。(^^;」


Step.15 や Step.16で、なぜパスワードや、そのリンク先が解読できるかというと、ソースにそのパスワードやリンク先を記述しているからです。暗号化というのも結局は、形を変えてソースにパスワードを記述しているので解読されるわけです。

つまり、記述しなければ良いのです。(^^;

Step.15 や Step.16 で、なぜパスワードを記述してしまったかというと、入力したパスワードが本当に正しいかを判断するのに、どうしても正しいパスワードがないと比較できなかったのです。(^^;

つまり、入力したパスワード自体が、リンク先のファイル名であれば、ソース内には、パスワードもリンク先も記述する必要がないため、絶対にバレないのです。

よって、エラーチェックはなくなったので、パスワードを間違えると、間違えたリンク先へリンクして、「ファイル無しエラー」ページが出現します。がはは〜

Q&A

Q:「ボタンではなく、自分の持っている画像を使って出来ないでしょうか・・・」
A:<form>〜</form>を下記の<a>〜</a>に置き換えてください。
<a href="javascript:myEnter()">
<img src="pinin42003.gif" alt="秘密のページへ" border="0">
</a>
秘密のページへ



Q:「ページへリンクできません。」
A:拡張子を確認してください。
  このサンプルは拡張子に htm を使っています。
     if ( myPassWord != "" )location.href = myPassWord+".htm";
        ↓
     if ( myPassWord != "" )location.href = myPassWord+".html";

A:ファイル名の大文字小文字を確認してください。
   インターネットはファイルの大文字と小文字を区別します。
     例 ) aaa.htm と AAA.htm 、aaa.htm と aaa.HTM は別ファイルとして解釈されます。

A:リンク先は同じフォルダであるか確認してください。
   このサンプルではリンク先にファイル名しか指定していませんので同フォルダでなければリンクできません。


Q:「リンクした場合にフレームを外したいのですが」
A:下記の部分を変更してください。
   location.href
          ↓
   top.location.href

参照:Step.55


Q:「右フレームにパスワードフォームを設置して、左フレームにページをリンクしたいのですが」
A:Step.55を参照してください。



Q:「説明がサッパリわかりません。パスワードはどこで指定すれば良いのですか??」
A:文章が下手ですみません。
パスワードを入力して、正解するとリンクするページが、「secret.htm」だとします。
すると、このサンプルではパスワードは「secret」になります。
要するに、このサンプルは、入力したパスワードに「.htm」をくっ付けて、リンクするだけです。
ですから、適当にパスワードを入れると(仮に「aaaaa」を入力したとすると)、「aaaaa.htm」にリンクしますが、当然そんなページは無いので(あるかも)、エラーとなり、秘密のページへは行けないということです。
わかったかな? ^^;

目次へ戻ります