2017-10-27 22 views
0

私のローカルWebサイトで簡単なログインプロンプトを作成しようとしています。私は既にJavascriptで試してみましたが、パスワードをハードコードしたくありません。ユーザーはメールでパスワードを取得するので、必要な登録フォームはありません。インターネットで検索したところ、PHPとJavascriptで動作するはずです。これは私が思いついたものです:パスワードなしで簡単なパスワードログインを作成する[PHP、Javascript、MySQL]

<SCRIPT> 
function passWord() { 
var testV = 1; 
var pass1 = prompt('Enter password',' '); 
while (testV < 3) { 
if (!pass1) 
window.open('Website.html',"_self"); 
if (pass1.toLowerCase() == "password") { 
alert('Correct!'); 
window.open('./test/sitetwo.html',"_self"); 
break; 
} 
testV+=1; 
var pass1 = 
prompt('Wrong Password','Try again'); 
} 
if (pass1.toLowerCase()!="password" & testV ==3) 
return " "; 
} 
</SCRIPT> 
<CENTER> 
<FORM> 
<input type="button" value="Enter Protected Area" onClick="passWord()"> 
</FORM> 
</CENTER> 

これをコードする方法を知っている人はいますか?ご協力ありがとうございました。

+3

*私は、パスワードがハードコードされないようにする。*、うーん、データベースを使用して..?パスワードを維持するための何か他のもの? –

+3

パスワード検証にJavaScriptを使用しないでください。PHPはサーバー側で使用してください。 - ブラウザ/クライアントからは表示できません。 –

+0

ええ、私はデータベースのためにMySQLを使用したいと思いますが、私はどのように分かりません。 –

答えて

1

ログインプロンプトは、あなたのウェブサイトの情報を隠す方法の1つに過ぎません。最初に何を隠そうとしているのかを決める必要があります。たとえば、クライアントに有料情報を提供している場合は、パスワードの代わりにメールで情報自体を送信することができます。サイトの一部を他人から隠そうとしている場合 - site/jkhgdsdkgfのような奇妙なURLを与えることができます

phpとデータベースを使ってログインバックエンドを作成するには、あなたのphp、mysqlサーバーの管理スキルと完全にあなたのタスクの詳細に依存するので、ここで有用なアドバイスを提供することは困難です。あなたがそれを行う方法がわからない場合は、私の意見では

0

、あなたはあなたがしたい場合ことを知っている必要があり、(..ユーザ名、パスワード、などのような)

をすべての資格情報を格納するデータベースを使用する必要がありますあなたのPHPコードを実行するには、PHPサーバとどこかにあなたのdbを置く必要があります。ここで

は、ここではApache

https://www.ultraedit.com/support/tutorials-power-tips/uestudio/local-php-mysql-dev-environment.html

でPHPサーバーを設定する方法であるあなたはログインlogin.phpを(必要phpMyAdminに https://www.siteground.com/tutorials/phpmyadmin/create-populate-tables/

とデシベルを設定する方法でありますin)、test.phpページ(あなたが望むものを置いてください)、check_User.phpページ(認証情報が正しいかどうかを制御する場所)です。

Login.php

<html> 
<head> <title>Login</title> </head> 
<body> 
<form action="check_User.php" method="post" id="login_form"> 
<label><b>Username</b></label> 

       <!-- USERNAME -->    
       <input type="text" placeholder="Enter Username" name="username" required> 

       <!-- PASSWORD -->     
       <label><b>Password</b></label> 
       <input type="password" placeholder="Enter Password" name="password" required> 

       <!-- LOGIN --> 
       <button type="submit">Login</button> 
</form> 
<body> 
</html> 

check_User.php

<?php 
    session_start(); 
    $_POST["username"] = htmlspecialchars($_POST["username"]); 
    $_POST["password"] = htmlspecialchars($_POST["password"]); 
    $link = mysqli_connect("your_host", "your_db_username", "your_db_password", "your_db_name"); 

    $query = "SELECT username, password 
      FROM your_db_name 
      WHERE username = \"".$_POST["username"]."\" AND password = \"".$_POST["password"]."\" 
      "; 
    mysqli_query($link, $query); 

    $rows = array(); 
    $result = mysqli_query($link, $query); 
    while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) 
     $rows[] = $row; 

    /* correct match */ 
    if(mysqli_affected_rows($link) == 1) 
    { 
     $_SESSION["username"] = $_POST["username"]; 
     $_SESSION["password"] = $_POST["password"]; 
    } 
    if(isset($_SESSION["username"]) && isset($_SESSION["password"])) 
     header("Location:test.php"); 
    else { 
    alert("Wrong username or password"); 
    } 
    ?> 

test.phpを

<?php 
    session_start(); 

    // not logged in, not showing this page 
    if((!isset($_SESSION["username"]) || !isset($_SESSION["password"])) 
     header("Location:login.php"); 
    ?> 

    <html> 
    ....whatever you want this page to do 
    </html> 
+1

SQLインジェクションに対して何もされていない、\ * sigh \ * ...これはまさにこのような低品質で危険な質問です。 – CBroe

+0

$ query = "SELECT username、password FROM your_db_name WHERE username = \" "。$ _ POST [" username "]。" \ "; - 間違い!!リクエストデータを決してsqlに挿入しないでください。 。 –

+0

私は知っているが、彼はハードコーディングされたくないと言った。私は通常、SQLで値をチェックする前に$ _POST []データを暗号化します。したがって、クエリに渡すパラメータが暗号化されていればSQLインジェクションを行うことは不可能です。 このソリューションを維持するが、SQLインジェクションを避けるために私は答えを編集htmlspecialcharsを追加 –

関連する問題