2017-05-25 54 views
0

我正在使用angularJS和php在後端的應用程序,我想在我的應用程序中實現驗證,並且我嘗試了下面粘貼的代碼,但它不會生成任何錯誤,任何消息,當我嘗試輸入用戶名和密碼時,無論用戶輸入什麼內容,都會轉到view'admin,這意味着它不檢查用戶和密碼。在'client'表的數據庫中,我有: NomClient和MDP(密碼)。如何在AngularJS中實現驗證

的login.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'); 
}); 

};

的login.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; 
?> 

感謝。

回答

0

首先,你沒有發送任何數據到你的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); 
+0

謝謝你,我做了什麼你syggested我編輯的代碼,但仍然沒有結果 – SalamSalam

+0

你能提供一些錯誤日誌或至少說明你在哪裏卡住? –

+0

我沒有錯誤,當我期待代碼,也沒有消息,當我點擊提交時,沒有任何改變,我仍然在同一頁 – SalamSalam