【问题标题】:How to use session with angularJS如何在 angularJS 中使用会话
【发布时间】:2017-12-16 14:30:01
【问题描述】:

我正在使用 AngularJS 和 PHP 后端,我正在尝试显示经过身份验证的用户的数据,并且我有 2 个视图,一个 'login.html ' 和另一个 'info.html',2 个控制器(一个用于登录功能,另一个用于选择用户数据)。我实现了身份验证阶段,但是对于第二步,我希望当用户进行身份验证时,它将被重定向到其他视图(info.html),其中将显示该用户的所有信息。

我尝试使用会话,但它不起作用,我不知道为什么。 如何存储来自登录功能的用户数据并在第二个控制器(第二个 Web 服务)中使用它

login.php

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

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

     if(count($data) > 0)  

     { 

    $Email=mysqli_real_escape_string($connect, $data->Email);
    $mdp=mysqli_real_escape_string($connect, $data->mdp);

    $query = 'SELECT * FROM `client` WHERE (EmailClient = "'.$Email.'" AND   mdp= "'.$mdp.'")';

    $q = mysqli_query($connect , $query);

    if(mysqli_num_rows($q) > 0 )
      { 
           $token = md5($Email.time()."51395+81519851");
           $query = "UPDATE client SET token = '".$token."' WHERE EmailClient = '".$Email."'";
           mysqli_query($connect , $query);
           $_SESSION["logged_in"] = true; 
           $_SESSION["token"] = $token; 
; 
           $result['message'] ='Logged In';
           $result['email'] =$Email;
           $result['token'] = $token;

           $resultstring=json_encode($result);
           $resultstring=str_replace("null", '""', $resultstring);
           echo $resultstring;
           exit;

      }
     $result['code'] = 603;
           $result['message'] ='The username or password are incorrect!';



    $resultstring = json_encode($result);
    $resultstring = str_replace("null",'""',$resultstring);
    echo $resultstring;
    exit;
    }

    ?>

info.php

<?php  
session_start();
 $connect = mysqli_connect("localhost", "root", "", "user");  

 $output = array();  
 $query = "SELECT FirstName,FamilyName,EmailClient FROM client WHERE token = '".$_SESSION['token']."'";
 $result = mysqli_query($connect, $query);  
 if(mysqli_num_rows($result) > 0)  
 {  
      while($row = mysqli_fetch_array($result))  
      {  
           $output[] = $row;  
      }  
      echo json_encode($output);  
 }  

 ?> 

loginCtrl

app.controller('loginCtrl', function($scope, $location,$state,$http,$window){

    $scope.submit = function()
    {
        data = {
            'Email' : $scope.Email,
            'password' : $scope.password
    };

        $http.post('http://localhost/deb/login.php', data)
        .success(function(data, status, headers, config,result)
        {
            console.log(data);
            $state.go('info');

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

});

信息控制:

app.controller('infoCtrl', function($scope, $http,$state,$filter){

    $scope.loadColis = function(){ 
              $http.get("http://localhost/deb/info.php")  
           .success(function(data){  
                $scope.names = data;  
           });
      } 

我不知道如何获取用户认证的数据,请问我该怎么做?

提前致谢

【问题讨论】:

  • 在谷歌中搜索$localstorage$sessionstorage$cookies

标签: php angularjs session ionic-framework


【解决方案1】:

您需要在登录功能通过且没有任何错误的情况下创建session,如下所示,您必须在控制器中使用$sessionstorage 服务才能使其工作。

$http.post('http://localhost/deb/login.php', data)
  .success(function(data, status, headers, config, result) {
      console.log(data);

      //Here create a session, so I am creating a "user" session with its details
      $rootScope.globals = {
            currentUser: {
                firstname: data.firstname,
                lastname: data.lastname,
            }
        };

      $sessionStorage.user = $rootScope.globals;

      $state.go('info');

    }
  })

然后您可以使用$sessionStorage.user.currentUserinfo 页面上获取用户的详细信息,并且您还需要在其控制器中使用$sessionStorage 服务。

【讨论】:

  • 谢谢,但是如何在php文件中选择当前用户的数据
  • 数据会存放在这里$sessionStorage.user.currentUser,不知道你是怎么访问到PHP的
猜你喜欢
  • 2017-03-22
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 2016-03-11
相关资源
最近更新 更多