2017-05-31 73 views
0

我在我的应用程序中使用AngularJS和PHP后端在控制器中进行身份验证,我在控制台中放置了一个console.log,以查看身份验证是否正常工作,并且我发现一切都正常,当密码和用户名不正确时,我得到错误消息,当他们错了,我得到他们是不正确的,但在这种情况下,我想要重定向到其他视图,当我把:window.location.href =' #/管理员;它在两种情况下将我重定向到管理视图,而不仅仅是当它们正确时。你可以帮我请:如何在身份验证后重定向到其他视图

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

代替window.location.href使用

$state.go(state_name_of_#/admin) 

请参阅本$state.go()

无论身份验证如何,成功函数总是在有响应时调用。

在你的PHP文件,返回true反应只有在认证成功,否则返回false到前端

然后在一些检查的responseresponse.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 
    } 
}) 
+0

我试过这个解决方案,但我仍然有同样的问题,我总是重定向,但是密码错误 – SalamSalam

+0

现在检查更新的解决方案。任何你将如何得到回应 –

+0

我更新我的wuestion和我已经puted login.php文件,我如何才能返回true,只有认证成功请! – SalamSalam

0

可以使用$state.go()此为: $state.go('admin');

'管理员必须是你的国家的名字。'

编辑

当过你的数据没有任何错误.success的代码会被执行。如果您想基于身份验证进行重定向,则需要单独编写代码。示例代码如下。

.success(function(data, status, headers, config,result) {  
    console.log(data); 
    if(data.message === 'Logged In') { 
     $state.go('admin'); 
    } 
}) 
+0

我试过这个解决方案,但我仍然有同样的问题,我总是重定向,但密码错误 – SalamSalam

+0

但AUTHENTICATED不定义,我应该在这种情况下放什么! – SalamSalam

+0

什么'数据'打印在'console'? – SaiUnique

相关问题