我正在使用AngularJS和PHP后端在我的应用程序中进行身份验证,在控制器中我放了一个console.log来查看身份验证是否正常工作,当密码和用户名不正确时,我发现一切正常我收到错误消息,当它们出错时,我发现它们是不正确的,但在这种情况下,我希望被重定向到其他视图,当我放置时:window.location.href ='#/ admin&#39 ;;它在两种情况下将我重定向到管理员视图,而不仅仅是在它们是正确的时候。你可以帮帮我吗?
app.controller('loginCtrl', function($scope, $location,$state,$http,$window){
$scope.submit = function()
{
data = {
'NomClient' : $scope.NomClient,
'mdp' : $scope.mdp
};
$http.post('http://localhost/deb/login.php', data)
.success(function(data, status, headers, config,result)
{
console.log(data);
window.location.href = '#/admin';
})
.error(function(data, status, headers, config, rsult)
{
console.log('error');
});
}
});
的login.php
<?php
$data = json_decode(file_get_contents("php://input"));
$connect = mysqli_connect("localhost", "root", "", "sem1");
if(count($data) > 0)
{
$NomClient=mysqli_real_escape_string($connect, $data->NomClient);
$mdp=mysqli_real_escape_string($connect, $data->mdp);
$query = 'SELECT * FROM `client` WHERE NomClient = "'.$NomClient.'" AND mdp= "'.$mdp.'"';
$q = mysqli_query($connect , $query);
if(mysqli_num_rows($q) > 0 )
{
$_SESSION["logged_in"] = true;
$_SESSION["naam"] = $NomClient;
$result['code'] = 200;
$result['message'] ='Logged In';
}
else
{
$result['code'] = 603;
$result['message'] ='The username or password are incorrect!';
}
$resultstring = json_encode($result);
$resultstring = str_replace("null",'""',$resultstring);
echo $resultstring ;
}
?>
提前致谢
答案 0 :(得分:0)
而不是window.location.href
使用
$state.go(state_name_of_#/admin)
请参阅此$state.go()
无论身份验证如何,成功函数始终在有响应时调用。
在PHP文件中,仅在验证成功时返回true响应,否则返回false到前端
然后检查您将找到返回值的response
或response.responseMessage
。
.success(function(reponse){
var data = JSON.parse(reponse);
if(data.code == 200){
$state.go(enter_your_state_name_of_admin); // example "admin"
} else {
// do nothing
}
})
答案 1 :(得分:0)
您可以使用$state.go()
作为:
$state.go('admin');
'admin必须是您的州名。'
修改强>
.success
中的代码将在您没有任何错误的情况下获取数据时执行。如果要根据身份验证重定向,则需要单独编写代码。示例代码如下。
.success(function(data, status, headers, config,result) {
console.log(data);
if(data.message === 'Logged In') {
$state.go('admin');
}
})