【问题标题】:How to implement an Authentication in AngularJS如何在 AngularJS 中实现身份验证
【发布时间】:2017-10-26 00:13:48
【问题描述】:

我正在开发一个在后端使用 angularJS 和 php 的应用程序,我想在我的应用程序中实现身份验证,我尝试了下面粘贴的代码,但它不会产生任何错误、任何消息以及当我尝试放置一个用户名和密码我去视图'admin“无论我输入什么用户,这意味着它不检查用户和密码。在表'client'的数据库中,我有:NomClient和mdp(密码)。

登录.html

<ion-content class="padding" ng-controller="loginCtrl">
<div class="list list-inset" >
<label class="item item-input">
      <input type="text" placeholder="nom" required="" ng-model="NomClient"> 
</label> 
<label class="item item-input">
      <input type="password" placeholder="Password" ng-model="mdp"> 
</label> 
    <button class="button button-block button-positive" ng-click="submit()">Login</button>       
 </ion-content>

app.js

app.controller('loginCtrl', function($scope,$state,$http){
  $scope.submit= function(){
 const url = 'http://localhost/deb/login.php';
const postBody = {
    NomClient: $scope.NomClient,
    mdp: $scope.mdp
};

$http.post(url, postBody).then(data => {
   $location.path('/admin');
});

};

登录.php

 <?php  

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

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


$response['status'] = 0;
$response['message'] = '';
$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.'"';


if(mysqli_connect_errno()){
    $response['status'] = 0;
    $response['message'] = "Failed to connect to MySQL: ".mysqli_connect_error();
    echo jsone_encode($response);exit;
}

$result = mysqli_query($connect, $query);
$rowcount=mysqli_num_rows($result);
if($rowcount>0){
    $response['status'] = 1;
    $response['message'] = 'Login successful';
}
else{
    $response['status'] = 0;
    $response['message'] = 'Invalid username of password';
}

echo json_encode($response);exit;
 ?>

提前致谢。

【问题讨论】:

    标签: php angularjs ionic-framework


    【解决方案1】:

    首先,您没有向 PHP 登录处理程序发送任何数据。您当前在 AngularJS 中的提交功能正在发出获取请求而不是发布。

    您的$scope.submit 函数应如下所示(这不是首选方法,但考虑到您当前的设置,这可能是最简单的方法):

    app.js

    $scope.submit = function () {
    
        const url = 'http://localhost/deb/login.php';
        const postBody = {
            NomClient: $scope.NomClient,
            mdp: $scope.mdp
        };
    
        $http.post(url, postBody).then(data => {
            // do whatever you need with the login data (token?)
        });
    
    };
    

    其次,如果您的 PHP 脚本从哪里获取 POST 数据?

    您需要在 PHP 脚本的开头包含这些内容以检索 POST 数据。

    $data = json_decode(file_get_contents('php://input'), true);
    

    【讨论】:

    • 谢谢你,我按照你所说的做了,我编辑了代码,但仍然没有结果
    • 您能否提供一些错误日志或至少指定您遇到的问题?
    • 我没有错误,当我期待代码时,也没有消息,当我点击提交时,没有任何变化,我仍然在同一页面中
    • 当然,您并没有在 submit 函数中做任何事情来更改页面或更改 UI。如果您的登录请求通过了,请查看 Chrome 开发者控制台。
    • 我检查了控制台,我只有这条消息:此页面在非安全上下文中包含密码或信用卡输入。 URL 栏中已添加警告。欲了解更多信息
    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 2021-03-19
    • 1970-01-01
    • 2015-05-31
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多