我很遗憾地问这个问题,但我现在已经工作了好几个小时了,但仍然无法理解。我们使用API从数据库中为仅限成员的站点提取数据。如果信息正确,登录表单应该重定向到站点的主页,否则它应该显示一个弹出窗口,上面写着:“用户名和密码无效”(如果字段留空,我们也会想要一条错误消息)。但是,无论信息是否正确,登录仍将转到主页。
这是html表单 - login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script src ="angular.js"></script>
<script src ="app.js"></script>
<link rel="stylesheet" href="/CMPS1/css/login.css">
</head>
<body>
<div ng-app = "sga">
<div ng-controller="MainController">
<div class="body"></div>
<div class="grad"></div>
<div class="header">
<div><a style="color:gold">SGA</a><span><a style="color: seagreen"><strong>Connect</strong></a></span></div>
</div>
<br><br>
<div class="login">
<input type="text" placeholder="username" ng-model="username" required><br>
<input type="password" placeholder="password" ng-model="password" required><br>
<input type="button" value="Login" ng-click="login(username,password)">
</div>
</div>
</div>
</body>
</html>
我们的控制器/ api - login_controller.php(基于代码点火器框架)
<?php
class Login_controller extends CI_Controller
{
function validate(){
// when posting json data to the api
$json = key($this->input->post(NULL, TRUE));
$json = json_decode($json);
$username = $json->username;
$password = md5($json->password);
// when posting with a normal post method with parameters
// $username = $this->input->post('username');
// $password = md5($this->input->post('password'));
$this->load->model('Membership_model');
$query = $this-Membership_model->validate($username,$password);
if($query) {
$data['status']= true;
}
else{
$data['status'] = false;
}
$this->load->view('verify.php', $data);
}
}
?>
角度文件 - app.js
(function() {
angular.module("sga",[])
.controller("MainController",["$scope","$http",function($scope,$http){
$scope.login = function (username, password) {
var req = {
url: 'http://localhost/CMPS1/API/application/controllers/Login_controller/validate',
method: "POST",
data: {
username: username,
password: password
},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
};
if ($http(req).then(function (response) {
if (response.data) {
window.open('index.html', '_self');
}
}));
else {
alert("Invalid username or password.");
}
};
}]);
})();
实际检查数据库以查看信息是否正确的文件 - membership_model.php
<?php
class Membership_model extends CI_Model{
function validate($username,$password){
$this->db->where('username',$username);
$this->db->where('password',$password);
$query = $this->db->get('users');
if($query->num_rows() == 1){
return $query;
}
else{
return false;
}
}
}
任何帮助都会非常感激。谢谢。
答案 0 :(得分:0)
Angularjs用于创建单页面应用程序。在您的MainController中,您将成功时将用户重定向到index.html。
您应该有两个视图,一个用于登录,另一个用于angularjs中的主页。 包含在index.html中并为登录和主页创建路由。
.config(function ($routeProvider, $httpProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/login.html',
controller: 'LoginCtrl',
controllerAs: 'login'
})
.when('/home', {
templateUrl: 'views/home.html',
controller: 'HomeCtrl',
controllerAs: 'home'
})
.otherwise({
redirectTo: '/'
});
});
在成功回调中,只需使用“$ location.path(”/ home“)重定向到/ home;”