2017-08-12 8 views
-1

私はhtml/JavaScript/PHPに関する質問があります。私は正しいパスワードを入力した場合にのみいくつかのページを表示できるようにしたいのですが、私はすべてのプライベートページにパスワードを入れなければならないあなたは訪問する。例えばhtmlページをパスワードで保護できますか?

ページ:「WWW:

  • login.htmlと
  • PrivatePage1.html
  • PrivatePage2.html

は今、あなただけに行くことができます。 mywebsite.com/PrivatePage1.html 'とパスワードを入力する必要はありませんので、すでにログインしているかどうかを確認する方法はありますかgin.hmtl login.htmlと '

https://hastebin.com/egehaboxig.js

password(); 

function password() { 
    var userPassword; 
    var myPassword = "a"; 

    userPassword = prompt("Enter the password:"); 

    if(userPassword == myPasswordfun) { 
     alert('Correct, press ok to enter the site.'); 
    }else if(userPassword == null) { 
     window.location ="http://www.google.com"; 
    }else { 
     alert('Incorrect'); 
     password(); 
    } 
} 

私のコードで' 読みいただき、ありがとうございます!

+3

あなたは誰もがあなたのhtmlページのソースを見て、パスワードを見つけることができることを理解していますか? –

+0

セッション変数が必要です。 –

+1

誰もがソースビューでパスワードを見ることができるので、最も非効率なパスワード保護のようなものです。しかし、JavaScriptでクッキーを保存して確認することは可能です。あなたはあなたが望むことを達成するために、 'logged_in'-Cookieを1時間保存することができます。しかし、実際の保護はサーバー側で行わなければなりません。さらに参考:https://www.w3schools.com/js/js_cookies.asp – ProgrammingMachine5000

答えて

1

誰でもブラウザ側で自分自身を手動で認証できるので、私はlocalStorageをJavascriptで使用しないでください。安全なパスワード処理のための唯一のオプションは、サーバー側の認証です。

PHPには、これを処理するための組み込み変数$_SESSIONがあります。まず、session_start()コマンドでサーバー上でセッションを開始する必要があります。ユーザーがパスワードを入力すると、パスワードを検証して$_SESSION['valid'] = TRUEを設定できます。ユーザーが次の機能で妥当性を確認したかどうかを確認できます。

セッションは、ユーザーがブラウザウィンドウを閉じると終了します。

パスワード自体は実際にはデータベースにハッシュとして保存する必要があります。これにより、ウェブマスターを含む誰もがパスワードに直接アクセスできなくなります。パスワードがハッシュされると、ユーザー入力をハッシュして2つのハッシュを比較できます。一致した場合、正しいパスワードを入力したことがわかります。

+0

私がLocalStorageを使うべきではない最初の理由は、まったく真実ではないと思いますが、PHPの$ _SESSIONを使用することは確かに安全です –

0

成功したログインをどこかに保存する必要があります(最も安全なサーバーである可能性があります)。

いくつかのメカニズムは機能しますが、クライアントではlocalStorageが最も簡単です。

は、ログインが成功した後、あなたはこのように、localStorageに値を設定する:あなたはログインをチェックしたい各ページに、

localStorage.setItem("loggedIn", "true"); 

そして、次のように記述します。

if(localStorage.getItem("loggedIn") === "true"){ 
    // user is logged in 
} else { 
    // user is not logged in 
} 
+0

もちろん、クライアントがlocalStorageをサポートしていない場合、これは動作しません。 – junkfoodjunkie

+0

@junkfoodjunkieもちろん。また、クライアント側のメカニズムがオフになっていても、これは機能しません。 –

+0

えええええええええええええええええええええええええええええええええば、 1つは良い解決策を教えるために努力すべきです。解決策は、すべての手段で機能しますが、localStorageがサポートされていない場合は、別のものにフォールバックするか、代わりにサーバー側のものを使用することをお勧めします。 – junkfoodjunkie

関連する問題