ホームページ作成/アクセス制限・認証、サイト内検索

JavaScriptでパスワード認証を設定! 簡単な閲覧制限(3ページ目)

JavaScriptでパスワード認証を設定!HTMLに数行のJavaScriptを加えるだけでパスワードによる認証機能を作る方法を解説します。「ウェブサイト上でパスワード付きのアクセス制限を設定したい、でもBasic認証やCGIを使う複雑なことはしたくない」という場合には、JavaScriptを使った手軽なログイン認証機能を使ってはいかがでしょうか。完全な制限にはならない分、とても簡単にホームページの閲覧制限ができます。

西村 文宏

執筆者:西村 文宏

ホームページ作成ガイド

入力文字を制限し、キャンセルボタンに対応したバージョン

さて、前ページに掲載した簡易版のJavaScriptソースは、とても短く済むソースでしたが、「キャンセル」ボタンが押された場合にも移動してしまったり、どんな文字列が入力されても移動してしまうなど、エラー処理が一切ありませんでした。そこで以下に、それらのエラー処理を行った実用版のJavaScriptソースを掲載しておきます。

JavaScriptソース (実用版)
<script type="text/javascript">
function gate(){
   // ▼ユーザの入力を求める
   var UserInput = prompt("パスワードを入力して下さい:","");
   // ▼入力内容をチェック
   if( /\W+/g.test(UserInput) ) {
      // ▼半角英数字以外の文字が存在したらエラー
      alert("半角英数字のみを入力して下さい。");
   }
   // ▼キャンセルをチェック
   else if( UserInput != null ) {
      // ▼入力内容からファイル名を生成して移動
      location.href = UserInput + ".html";
   }
}
</script>
上記の16行をHTML内の適当な場所に記述して(前ページで記述したJavaScriptソースの代わりに)使って下さい。太字で掲載した箇所は、必要に応じて修正できます。6行目にある「/\W+/g」の部分は、正規表現という記述方法を使って「半角英数字とアンダーバー」以外の文字列が存在するかどうかを調べています(正規表現についての説明は長くなるのでここでは割愛します)。
 

移動先の秘密ページが検索サイトに登録されないようにする

本記事でご紹介する方法は、URLさえ分かれば認証を経ることなく誰でもアクセスできます。そのため、そのままでは移動先の秘密ページが検索エンジンに捕捉されて検索結果に表示されてしまう可能性もあります。検索結果に表示されてしまわないよう、秘密ページ側のHTMLソースには以下の1行を書いておくと良いでしょう。
<meta name="robots" content="noindex">
この1行がhead要素内にあれば、検索エンジンはそのページを検索結果に表示しなくなります。

※ただし、それは「検索結果に表示しないでね」というお願い程度の指示なので、絶対に表示されない保証はありません。そこまで強固なセキュリティが必要なら、後述する別の方法を使いましょう。
 

HTML+JavaScriptでの簡単認証サンプルページ

上記のソースを使って作成したパスワード認証サンプルページは下記の通りです。実際にアクセスして動作を試してみて下さい。また、HTMLソース内にコメント付きでJavaScriptソースも含めてすべてのソースを記載していますので、コピー&ペーストして使ってみる際の参考にして下さい。

上記のソースを使った簡単パスワード認証サンプルページ
 
JavaScriptでパスワード入力を求める簡単認証サンプルページ

JavaScriptでパスワード入力を求める簡単認証サンプルページ



動作内容:
上記のソースを使うと、ユーザの操作に対する動作は以下のようになります。
  • 正しいパスワードを入力した場合は、正しいページへ移動します。
  • パスワードを間違えた場合は、正しいページに移動できず、「Not Found」エラーページが表示されます。
  • 半角英数字(a~z、A~Z、0~9、アンダーバー)以外の文字を入力した場合は、「半角英数字のみを入力して下さい」とエラーを表示して、どこにも移動しません。
  • パスワードの入力欄で「キャンセル」ボタンをクリックした場合は、どこにも移動しません。

備考:
入力されたパスワードが間違っていた場合には、「パスワードが違います」というメッセージを表示させたいところですが、このJavaScriptの仕組み上、単にNot Foundエラーが出るだけです。ただ、この点は、.htaccessファイルを使ってエラーメッセージを書き換えることで対応することもできます。詳しくは、記事「Not Foundなど エラーメッセージを独自作成」をご参照下さい。

※ただ、そこまでするなら、そのついでに基本認証機能を使って、もっとしっかりしたアクセス制限を施しても手間は変わらないでしょう。その際は、記事「Basic認証(基本認証)でアクセス制限をかける方法」も併せてご参照下さい。
 

完全ではない(脆弱な)代わりに手軽に使えるJavaScript認証

今回は、JavaScriptを使って手軽にパスワードの入力を求める認証機能を実現する方法をご紹介いたしました。「認証」と呼べるほど強固なアクセス制限にはなりませんが、その分、とても簡単に実現できることがお分かり頂けたでしょう。「第三者に見られても困るわけではないけれど、おおっぴらに公開したいわけではない」というような軽いアクセス制限を施したい場合に、ぜひ活用してみて下さい。

【関連記事】
【編集部おすすめの購入サイト】
楽天市場でホームページ作成関連の書籍を見るAmazon でホームページ作成の参考書を見る
  • 前のページへ
  • 1
  • 2
  • 3
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます