Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:登录函数在PHP代码中不起作用_Javascript_Php_Angularjs - Fatal编程技术网

Javascript AngularJS:登录函数在PHP代码中不起作用

Javascript AngularJS:登录函数在PHP代码中不起作用,javascript,php,angularjs,Javascript,Php,Angularjs,目前,我正在尝试使用AngularJS框架创建登录函数。我试图创建一个登录函数,但它正在执行else语句。我能知道如何解决这个问题吗 这是我的login.php代码: $params = json_decode(file_get_contents('php://input'),true); if(!isset($_SESSION)){ session_start(); } include "classes/filmService.class.php"; $db = pdoDB::

目前,我正在尝试使用AngularJS框架创建登录函数。我试图创建一个登录函数,但它正在执行else语句。我能知道如何解决这个问题吗

这是我的login.php代码:

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

if(!isset($_SESSION)){ 
    session_start(); 
}

include "classes/filmService.class.php";
$db = pdoDB::getConnection();
header("Content-Type: application/json");

if(isset($params['userid']) && isset($params['password'])){

    $userid   = $params['userid'] ;
    $password = $params['password'];
    $service  = new FilmService();
    $result   = $service->loginRob($userid,$password);
    echo $result;
}else{
    echo '{"status": "fail", "message": "Please enter email & password la!!."}';
}
这是我的services.js代码:

this.login = function (userID, passwd) {
            var defer = $q.defer(),
            data = {
              //action: 'loginRob',
              userid: userID,
              password: passwd
            };

            $http({
                method: 'POST',
                url: loginUrl,
                params: data,
                cache: true,
                headers: {'Content-Type': 'application/x-www-form-urlencoded'}

            }). // notice the dot to start the chain to success()
            success(function (response) {
                defer.resolve({
                    data: response.status, // create data property with value from response
                    result: response,
                    user: response.username
                });
                console.log(response);
            }). // another dot to chain to error()
            error(function (err) {
                defer.reject(err);
            });
            // the call to getCourses returns this promise which is fulfilled 
            // by the .get method .success or .failure
            return defer.promise;
        };
这是我的controller.js代码:

.controller('LoginController',
            [
                '$scope',
                'dataService',
                '$location',
                '$window',
                '$rootScope',
                function ($scope, dataService, $location, $window, $rootScope){
                    $scope.check_login = function($event,userID,passwd){
                        if(userID && passwd){
                            dataService.login(userID,passwd).then(
                                function (response){
                                    if(response.result.status=='ok'){
                                        $scope.user = response.user;
                                        $rootScope.$broadcast("passuser", $scope.user);
                                    }else{
                                        $scope.message = response.result.message;

                                    }
                                },

                                function (err) {
                                    $scope.status = 'unable to connect to data' + err;
                                }
                            );

                            $scope.reloadRoute = function () {
                                $location.path('/#');
                                //$window.location.reload()
                            }//end of reload route fnction
                        }
                    }//end of function check_login 
                }
            ]
        );//end of login controller
这是登录的记录集代码:

function getLoginRecord($sql, $elementName = "ResultSet", $params = null) {
    $stmt     = parent::getRecordSet($sql, $params);
    $recordSet = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $nRecords = count($recordSet);
    $loginSuccess = "";
    if ($nRecords == 0) {
        $status = 'error';
        $message = json_encode("Invalid username or password");
        $result = '[]';
        $loginSuccess="{\"status\": \"$status\", \"message\":$message}";
    }
    else {
        $status = 'ok';
        $message = json_encode("Success");
        //$userName=json_encode($recordSet[0]['username']);
        $result = json_encode($recordSet);
        // $session = Session::getInstance();
        // $session->setProperty('user', $recordSet[0]['username']);
        // $session->setProperty('user_email', $recordSet[0]['email']);
        $loginSuccess="{\"status\": \"$status\", \"message\":$message }";
    }
   return $loginSuccess;
}

如果有人能帮我,我真的很感激。提前感谢。

设置
$http
的方式有几个问题

您正在
$http
配置中使用
params
,该配置用于GET not POST。需要为POST设置
数据

您正在将contentType切换为form encoded,但尝试在php中作为json接收。如果您希望以编码的形式发送,则需要进行大量更改


现在让我们以json数据的形式发送,因此请尝试切换到:

$http.post(loginUrl, data). // notice the dot to start the chain to success()
        success(function (response) {
            defer.resolve({
                data: response.status, // create data property with value from response
                result: response,
                user: response.username
            });
            console.log(response);
        }). // another dot to chain to error()
        error(function (err) {
            defer.reject(err);
        });

然后,在php中,如果仍然没有得到正确的响应,则需要进行一些非常基本的调试,以查看是否确实发送了数据。

控制台中是否有错误?你正确地注入依赖项了吗?没有错误@AlonEitan它只显示
echo'{“状态”:“失败”,“消息”:“请输入电子邮件和密码la!!。”}”一次I
console.log(响应)
请看一下这个答案,那么
$scope是如何调用的。请检查正在调用的\u login()
,参数的值从何而来?您确定它们甚至在控制器中定义,因此在请求中定义吗?奇怪的是,userId和password不是绑定在
ng model
中的作用域变量,这里有太多的未知数,并且没有给出调试/故障排除信息。使用浏览器开发工具网络检查实际请求,以准确查看发送的内容。现在需要隔离问题所在的位置,但是登录验证工作不正常。现在您正在创建一个全新的问题,不应该将其添加到此问题中。我为您提供了修复原始问题的解决方案,您应该开始一个新的验证方案,其中包括正确的问题陈述