2016-06-15 2 views
0

コードは正常に実行されますが、ページサービスのPHPを更新すると、どうやってログインしたのでしょうか?私は以前にログインしていましたが。Angularjsを使用したPHPセッションの維持

app.js

web_app.controller("form_dang_nhap_gio_hang", function($scope, $http){ 
$http({ 
    method: 'GET', 
    url: 'services/api_kiem_tra_dang_nhap.php' 
}).success(function(data, status, headers, config){ 
     $scope.thong_tin_dang_nhap = data; 
}).error(function(data, status, headers, config){ 
     alert("lỗi không gửi được!"); 
}); 

$scope.btn_dang_nhap_tai_khoan = function(){ 
    data_chuyen_di = '{ "data" : {"ten_dang_nhap":"'+$scope.ten_dang_nhap+'","mat_khau":"'+$scope.mat_khau+'"}}'; 
    //alert(data_chuyen_di); 
    $http({ 
     url: 'services/api_kiem_tra_dang_nhap.php', 
     method: "POST", 
     data: data_chuyen_di, 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }).success(function (data, status, headers, config) { 
     //alert(data); 
     if(data.thong_bao_loi != "") 
     { 
      alert(data.thong_bao_loi); 
     } 
     else 
     { 
      $scope.thong_tin_dang_nhap = data; 
      $("#modal-id").modal('hide'); 
     } 
     //$scope.persons = data; // assign $scope.persons here as promise is resolved here 
    }).error(function (data, status, headers, config) { 
     alert("lỗi không gửi được!"); 
    }); 
} 

})。

PHPサービスでは、前にセッションがなく、ログイン情報が正しい場合に、投稿データを取得したときにSessionを追加します。すでにログインしている場合は、ログイン情報が返されます。

$json = file_get_contents('php://input'); 
$doi_tuong_truyen_vao = json_decode($json); 
//print_r($doi_tuong_truyen_vao); 
if($doi_tuong_truyen_vao) 
{ 

    include_once("database.php"); 

    $db = new database(); 

    $lenh_sql = "select * from sqa_nguoi_dung WHERE tai_khoan = '" . $doi_tuong_truyen_vao->data->ten_dang_nhap . "'"; 
    $db->setQuery($lenh_sql); 
    $tt_nguoi_dung = $db->loadRow(); 
    //print_r($tt_nguoi_dung); 
    if($tt_nguoi_dung) 
    { 
     if($tt_nguoi_dung->mat_khau == $doi_tuong_truyen_vao->data->mat_khau) 
     { 
      //print_r($tt_nguoi_dung); 
      $_SESSION["nguoi_dung"] = $tt_nguoi_dung; 
      $tt_nguoi_dung->thong_bao_loi = ""; 
      echo json_encode($tt_nguoi_dung); 
     } 
     else 
     { 
      echo '{"thong_bao_loi":"Mật khẩu không chính xác!"}'; 
     } 
    } 
    else 
    { 
     echo '{"thong_bao_loi":"Tài khoản không tồn tại!"}'; 
    } 
} 
else 
{ 
    if($_SESSION["nguoi_dung"]) 
    { 
     $chuoi = json_encode($_SESSION["nguoi_dung"]); 
     echo $chuoi; 
    } 
    else 
    { 
     $chuoi = ""; 
    } 
} 

HTML

<div class="col-sm-8" ng-controller="form_dang_nhap_gio_hang"> 
       <div class="shop-menu pull-right"> 
        <ul class="nav navbar-nav"> 

         <li ng-if="thong_tin_dang_nhap.ho_ten"><a href="#"><i class="fa fa-user"></i>{{thong_tin_dang_nhap.ho_ten}}</a></li> 
         <li><a href="xem-gio-hang"><i class="fa fa-shopping-cart"></i>Giỏ hàng</a><span class="so_luong_trong_gio"></span></li> 
         <li ng-if="!thong_tin_dang_nhap.ho_ten"><a class="btn" data-toggle="modal" href='#modal-id'><i class="fa fa-lock"></i>Đăng nhập</a></li> 
        </ul> 
       </div> 
       <div class="modal fade" id="modal-id"> 
        <div class="modal-dialog"> 
         <div class="modal-content"> 
          <div class="modal-header"> 
           <button type="button" class="close" data-dismiss="modal">&times;</button> 
           <h4><span class="glyphicon glyphicon-lock"></span>Đăng nhập</h4> 
          </div> 
          <div class="modal-body" style="padding:40px 50px;"> 
           <form role="form"> 
            <div class="form-group"> 
             <label for="usrname"><span class="glyphicon glyphicon-user"></span>Tài khoản</label> 
             <input ng-model="ten_dang_nhap" type="text" class="form-control" id="usrname" placeholder="Nhập tài khoản"> 
            </div> 
            <div class="form-group"> 
             <label for="psw"><span class="glyphicon glyphicon-eye-open"></span>Mật khẩu</label> 
             <input ng-model="mat_khau" type="password" class="form-control" id="psw" placeholder="Nhập mật khẩu"> 
            </div> 
            <div class="checkbox"> 
             <label><input type="checkbox" value="" checked>Ghi nhớ đăng nhập</label> 
            </div> 
            <button ng-click="btn_dang_nhap_tai_khoan()" class="btn btn-success btn-block"><span class="glyphicon glyphicon-off"></span> Đăng nhập</button> 
           </form> 
          </div> 
         </div> 
        </div> 
       </div> 
      </div> 

任意のアイデア?

答えて

1

anglejをコーディングするとき、あなたはクライアント側だけをコーディングしています...そしてphpはサーバー側の言語なので...クライアントからログインすると、サーバー側にもsessionvariableを作成する必要があります。 html5の機能であるローカルストレージまたはセッションストレージに保存するためにクライアントに送信します。

任意の要求は、クライアントからサーバに送信されるたびに今、sessionstorageに格納されている値が..リクエストに追加し、サーバ側にチェックする必要があります。..

それはサーバ側で利用できない場合は、 403UNAUTHORIZED ACCESSステータスコード...あなたのインターセプタによって捕捉され、セッションを適切に維持することができます。

あなたは、このリンクからのlocalStorageとのsessionStorageを得ることができます。.. http://ngmodules.org/modules/ngStorage

+0

あなたが私に簡単な例を与えることができますが、「HTML5機能しているローカルストレージまたはセッションストレージ」を使用Angularjs。私はいくつかを参照してくださいが実行されません。 tks –

+0

ああ、確かな男...どのブラウザを使用していますか? @ xuanhungNguyen –

+0

クロムで、F12キーを押して[リソース]タブに移動すると、別のストレージを使用できるようになります。今度はangularjsを使用することができます。あなたはそれらを使用する方法を知っているかもしれません。 –

関連する問題