2016-04-20 15 views
0

enter image description here Ich möchte Benutzername und Passwort von mongodb validieren. Wenn der Benutzername & mit meinem PHP-Code übereinstimmt, sollte es mich auf die Admin-Seite bringen. Angular Validierung funktioniert für Benutzername und Passwort, aber keine mongodb db. können Sie sagen, wo mache ich Fehler?Kann Benutzername und Passwort nicht von mongodb validieren mit php

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>"; 
    } 
    } 

} 

?> 

Antwort

0

hier:

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

Sie das Passwort mit md5 abfragt, aber Sie es in unverschlüsselt speichern!

Auch md5 ist kein guter Sicherheits-Hash zum Speichern von Passwort. Seit PHP 5.5 haben Sie password_hash(), das Sie verwenden sollten: http://php.net/manual/en/function.password-hash.php

+0

Ich versuchte mit dem auch, aber immer noch nicht funktioniert. Das Problem ist die Validierung, da ohne Formularaktion nicht mit dem Benutzernamen und Passwort validiert wird und keine Navigation ist auch admin.php funktioniert –

+0

Hat der '$ cursor' irgendwas? Ich denke nicht, dass es zu irgendetwas passt. Angenommen, Sie haben eine Einschränkung im Feld "Benutzername", warum fragen Sie nicht nur nach dem Benutzernamen ab, und wenn der Benutzer existiert, hashen Sie das erhaltene Passwort und vergleichen es mit dem, das Sie gespeichert haben. – Tomahock

+0

Eine andere Sache, die Sie beachten sollten, dass der MongoDB-Treiber, den Sie verwenden, veraltet ist http://php.net/manual/en/class.mongoclient.php und es ist nicht kompatibel mit PHP7 – Tomahock

Verwandte Themen