我目前正在与AngularJS合作开发一个项目,我正在尝试进行登录和会话。 到目前为止,我正在成功,当我传递正确的参数它工作,但当我输入错误的参数,如null userid和密码或填充的userid和null密码,它不起作用。我想它与php
解析JSON有关loginCtrl调用loginService登录函数。数据var是用户和密码(首先尝试使用纯文本,然后我会尝试更有趣的事情)。然后将它发送到build_session.php以将其解析为json并匹配登录名和密码。如果它是正确的,它进行身份验证。这是代码。
loginService.js
'use strict';
app.factory('loginService', function($http, $location, sessionService){
return{
login:function(data, scope){
var $promise = $http.post('data/build_session.php', data);
$promise.then(function(msg){
var uid = msg.data;
console.debug(uid); // <<<<<<<<<<<< DEBUG
if(uid){ //ISSUE IS HAPPENING HERE
scope.msgTxt = "";
sessionService.set('uid', uid); //THIS IS CALLING SESSIONSERVICE
$location.path('/historicoReceitas');
scope.moduleState = "loggedIn";
}
sessionService.js
'use strict'
app.factory('sessionService', ['$http', function ($http) {
return {
set:function(key,value){
return sessionStorage.setItem(key,value);
},
get:function(key){
return sessionStorage.getItem(key);
},
destroy:function(key){
$http.post('data/destroy_session.php');
return sessionStorage.removeItem(key);
}
};
}])
build_session.php
<?php
$user = json_decode(file_get_contents('php://input')); // <<<Error
if($user->cpf == '311.986.988-02' && $user->password == '1234'){
session_start();
$_SESSION['uid'] = uniqid('_ang');
print $_SESSION['uid'];
}
?>
当我输入正确的数据prom cpf和密码时,调试返回:
_ang53d9d09948e99
但是当我输入不正确的数据(没有登录名或密码)时,它会返回如下内容:
注意:尝试在第3行的C:\ Users \ Paolo Cezar \ Dropbox \ RMO \ data \ build_session.php中获取非对象的属性
我猜是一些PHP默认错误页面或其他东西。我看过一些关于如何json_decode(file_get_contents('php:// input'))的抱怨;处理JSON但我没有得到很好的回应。
我使用这两个教程作为我的代码的基础:
https://www.youtube.com/watch?v=4Y6LM4Y_K6c
https://www.youtube.com/watch?v=wz5G2A_enAk