2016-04-20 10 views
0

enter image description here mongodbからユーザー名とパスワードを検証したいと思います。パスワード&のパスワードが自分のPHPコードと一致する場合、管理ページに進みます。 ユーザー名とパスワードに対して角度検証が機能していますが、mongodb dbは機能していません。 私は間違いをどこにしているのか分かりますか?PHPを使ってmongodbからユーザー名とパスワードを検証できません

のindex.php

<?php 
include('login.php'); // Includes Login Script 
?> 
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>LoginIN</title> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script type="text/javascript" src="js/angular.min.js"></script> 
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"> 

    <link href="styles/bootstrap.min.css" rel="stylesheet"> 
    <link href="styles/signin.css" rel="stylesheet"> 
    <script src="js/app.js"></script> 


</head> 
<body ng-app="postAngular" ng-controller="PostController as postCtrl"> 

<div id="wrapper"> 
    <header id="top"> 
    <center><h1>Leave Reporting System</h1></center> 
    <div class="container"> 

    <form class="form-signin" ng-submit="postCtrl.postForm()"> 
    <ul> 
    <?php if(isset($errorMessage)):?> 

    <?php endif ?> 

    <h2 class="form-signin-heading">Please sign in</h2> 

    <input type="text" name="username" class="form-control" placeholder="Email address" ng-model="postCtrl.inputData.username" required > 


    <input type="password" name="password" class="form-control" placeholder="Password" required ng-model="postCtrl.inputData.password"> 

     <div class="checkbox"> 
    <label> 
    <input type="checkbox" value="remember" name ="remember">Remember me 
    </label><br> 
    </div> 

    <div role="alert" ng-show="errorMsg">{{errorMsg}}</div> 
    <input name="login" button class="btn btn-lg btn-primary btn-block" type ="submit" value=" Log in"> 

     <br> 
     <a href="">Forgot your password?</a> 
    </ul> 
</form> 

    </div> 
    </body> 
    </html> 

login.php

<?php 

$errorMessage =""; 
//session_start(); 

if(isset($_POST['login'])){ 
    $usr = $_POST['username']; 
    $pass = $_POST['password']; 

    $conn = new MongoClient(); 

    $db = $conn->lrs; 
    $col = $db->Login; 

    $query = array(
    'username' => $usr, 
    'password' => md5($pass) 
); 

    $cursor = $col->findOne($query); 

    foreach($cursor as $obj){ 
    $foundusr = $obj['username']; 
    $foundpass = $obj['password']; 

    if($obj['username']== $usr && $obj['password']= $pass){ 
     header('location: admin.php'); 
    } else { 
     $errorMessage = "<h3>Username/password did not match.</h3>"; 
    } 
    } 

} 

?> 

答えて

0
ここ

$query = array(
    'username' => $usr, 
    'password' => md5($pass) 
); 

あなたはMD5でパスワードを照会しているが、あなたは、プレーンテキストに格納されています!

また、md5はパスワードを保存するための安全なセキュリティハッシュではありません。 PHP 5.5以降、password_hash()を使用する必要があります:http://php.net/manual/en/function.password-hash.php

+0

私もその1つを試みましたが、それでも動作しません。問題は検証です。フォームアクションを使わずに、ユーザ名とパスワードで検証されていないので、ナビゲーションもありません。 –

+0

'$ cursor'に何かがありましたか?私はそれが何にもマッチするとは思わない。 'username'フィールドにいくつかの制約があると仮定すると、ユーザー名だけで照会して、存在していれば保存したパスワードをハッシュします。 – Tomahock

+0

あなたが使用しているMongoDBドライバがhttp://php.net/manual/en/class.mongoclient.phpで非推奨であり、PHP7と互換性がないことに注意してください – Tomahock

関連する問題