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