【问题标题】:how to redirect to another view after authentication身份验证后如何重定向到另一个视图
【发布时间】:2017-10-29 19:35:53
【问题描述】:

我正在使用 angularJS 和 php 后端,并尝试进行身份验证。我通过console.log对其进行了测试,当密码不正确时,我收到错误消息,而当密码正确时,我什么也没有得到,在这种情况下,我想被骑到其他视图,请问我该怎么做:

app.js

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)
        {
          // $window.location.href = '#/admin';
            console.log(data);
        })
        .error(function(data, status, headers, config)
        {
            console.log('error');
        });
    }

});

登录.php

 <?php  

$data = json_decode(file_get_contents("php://input"));

 $connect = mysqli_connect("localhost", "root", "", "test");  


 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; 
        }
        else
        {
            echo 'The username or password are incorrect!';
        }

}
 ?>

如你所见,我在 app.js 中有一个注释行: // $window.location.href = '#/admin';我把它作为评论,因为当我放它时,它会将我重定向到管理员视图但是密码不正确。

提前致谢

【问题讨论】:

  • 尝试使用window.location.href
  • 我使用它,正如您在代码中看到的那样,我把它作为评论,因为当我把它重定向到其他视图时,密码错误
  • 你需要做的是从你需要发回错误消息/布尔值的 php 并检查数据它是什么并放入 if 条件
  • 你能解释更多吗!请问我该怎么办!

标签: php angularjs mysqli ionic-framework


【解决方案1】:

在php文件中

$data = json_decode(file_get_contents("php://input"));

 $connect = mysqli_connect("localhost", "root", "", "test");  
$response = array();

 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 )
        { 
            $response["error"] = false;
            $_SESSION["logged_in"] = true; 
            $_SESSION["naam"] = $NomClient; 
        }
        else
        {
            $response['error'] = true;
        }
  echoRespnse(200, $response);

}
function echoRespnse($status_code, $response)
{

    $app->contentType('application/json');
    echo json_encode($response);
}
 ?>

app.js

 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)
        {
          console.log(data.error);
          if(data.error=="true") { 
              //Show error
           }else {
              //else redirect
         }

        })
        .error(function(data)
        {
            console.log('error');
        });
    }

});

【讨论】:

  • 谢谢,但我还是有同样的问题,总是重定向但是密码错误
【解决方案2】:

在您的 php 页面上

if(mysqli_num_rows($q) > 0 )
        { 
            echo 'success'; 
        }
        else
        {
            echo 'error';
        }

}

在你的 app.js 上

$http.post('http://localhost/deb/login.php', data)
        .success(function(response)
        {
            if(response.data =='success'){
                  $window.location.href = '#/admin';
                  }else{
                    console.log('Username or Password Error');
                     }

            console.log(data);
        })
        .error(function(data, status, headers, config)
        {
            console.log('error');
        });

【讨论】:

    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多