2016-03-27 14 views
0

これは私の最初の角度です。オンラインチュートリアルやガイドに多くの時間を費やして初めてセッション管理に苦しんでしまいました。 Everithingは正常に動作しますが、私がログインするときに変数$_SESSION['uid']には私が望むものが含まれていますが、その値は$promise.then(function(response){...});に解析されないため、正しくセッションを開始できません。 私に手がかりを与えてもらえますか?

チュートリアルは続く:Simple session with angularjs and php, angularJs

user.php

<?php 
$json =file_get_contents('php://input'); 
$user=json_decode($json); //get user from JSON 


if($user->mail=='[email protected]' && $user->pass=='1234') 
    session_start(); 
    //$_SESSION['uid'] = uniqid('ang_'); 
    $_SESSION['uid'] = $user->mail; 
    return $_SESSION['uid'];   ?> 

loginService.js

(function() { 
'use strict'; 
    var app = angular.module('loginS',['sessionS']); 

    app.factory('loginService',['$http','$location','sessionService',function($http,$location,sessionService){ 
    return{ 
     login:function(data,scope){ 
      var $promise = $http.post('data/user.php', data);// send data to user.php 
      $promise.then(function(response){ 
       console.log(response); 
       var uid = response.data; 
       if(uid!=""){ 
        //scope.msgtext='Correct information'; 
        sessionService.set('uid',uid); 
        $location.path('/home'); 

       } 
       else{ 
        scope.msgtext='Wrong information'; 
        $location.path('/login'); 
       } 

      }); 
     }, 
     logout:function(){ 
      sessionService.destroy('uid'); 
      $location.path('/login'); 
     }, 

     isLogged:function(){ 
      var $checkSessionServer =$http.post('data/check_session.php'); 
      return $checkSessionServer; 
      /* 
      if(sessionService.get('user')) return true; 
      else return false; 
      */ 
     } 
    } 
    }]); 
})(); 

login.tmp.html

<div class="container"> 
<center> 
    <div class="bs-example text-left"> 
     <form role="form" name="form1" > 
      <div class="form-group"> 
       <p>Welcome : {{user.mail}} : {{user.pass}}</p> 
       <label for="exampleInputEmail1">Mail</label> 
       <input type="text" placeholder="Enrter name" class="form-control" id="exampleInputEmail1" required ng-model="user.mail"></input> 
      </div> 
      <div class="form-group"> 
       <label for="exampleInputPassword1">Password</label> 
       <input type="password" placeholder="Password" class="form-control" id="exampleInputPassword1" required ng-model="user.pass"></input> 
      </div> 
      <button class="btn btn-default" ng-disabled="form1.$invalid" ng-click="login(user)">Submit</button> 
      <p>{{msgtext}}</p> 
     </form> 
    </div> 
</center> 

これは私が約束から得るものです....私はPHPで、なぜ....

console.log

Object {data: "", status: 200, config: Object, statusText: "OK"} 
+0

はAngularJSの "約束" の他の議論のためにこのサイトを検索する検討します、例えばhttp://stackoverflow.com/questions/14080095/angularjs-promiseまた、「AngularJS Promises:The Definitive Guide」(http://www.codeproject.com/Articles/770325/AngularJS-Promises-The-Definitive-Guide –

答えて

1

returnを把握することはできませんブラウザに何も出力しません。.. .. echoを使用する必要があります。

加えて$httpのデフォルト期待コンテンツの種類は、私が変わってしまうJSONです:

return $_SESSION['uid']; 

を何かに:

​​

次に角度で:

login:function(data,scope){ 
     var $promise = $http.post('data/user.php', data);// send data to user.php 
     $promise.then(function(response){ 
      console.log(response); 
      var uid = response.data.uid; 
      if(uid){ 
       //scope.msgtext='Correct information'; 
       sessionService.set('uid',uid); 
       $location.path('/home'); 

      } 
      else{ 
       scope.msgtext='Wrong information'; 
       $location.path('/login'); 
      } 

     }); 
    }, 
+0

)をご覧ください。あなたはなぜビデオチュートリアルでうまくいくのか教えていただけますか? –

0

後あなたの答え私はそれをより良く理解しているので、これを試しましたあまりにも。

の代わりに:角度でそう

$_SESSION['uid'] = $user->mail; 
echo $_SESSION['uid']; 

​​

私はこれを使用しました

login:function(data,scope){ 
    var $promise = $http.post('data/user.php', data);// send data to user.php 
    $promise.then(function(response){ 
     console.log(response); 
     var uid = response.data; 
     if(uid!=""){ 
      //scope.msgtext='Correct information'; 
      sessionService.set('uid',uid); 
      $location.path('/home'); 

     } 
     else{ 
      scope.msgtext='Wrong information'; 
      $location.path('/login'); 
     } 

    }); 
} 
関連する問題