2016-06-15 3 views
0

코드는 잘 실행되지만 서비스 서비스 페이지를 새로 고침 할 때 나는 어떻게 로그인했는지 모르겠다. 전에 로그인했지만.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

angularjs를 코딩 할 때 클라이언트 측 코딩 만하고 PHP는 서버 측 언어이므로 클라이언트에서 로그인 할 때 서버 측에도 sessionvariable을 만들어야합니다. html5 기능인 로컬 저장소 또는 세션 저장소에 저장하려면 클라이언트로 보냅니다. 이 서버 측에서 사용할 수없는 경우

어떤 요청 sessionstorage에 저장된 값 .. 요청에 첨부 된 서버 측에 체크해야 클라이언트에서 서버로 전송된다 지금마다

.., 그것은 403UNAUTHORIZED ACCESS 상태 코드가 인터셉터에 의해 잡히고 세션을 올바르게 유지 관리 할 수 ​​있습니다.

당신은이 링크에서 로컬 스토리지 및 sessionstorage를 얻을 수 있습니다

.. http://ngmodules.org/modules/ngStorage

+0

당신이 나에게 간단한 예제 AngularJS와를 줄 수는 "HTML5 기능입니다 로컬 저장소 또는 세션 저장"을 사용합니다. 나는 약간을 본다. 그러나 그것은 달리지 않는다. tks –

+0

오, 물론 ... 어떤 브라우저를 사용합니까? @xuanhungNguyen –

+0

크롬에서 F12 키를 눌러 리소스 탭으로 이동하면 사용할 수있는 다른 저장소가 표시됩니다 .. 이제 angularjs를 사용하면 해당 항목을 사용할 수 있습니다 ... 답변에서 몇 가지 참조를 공유하고 있습니다. 당신이 그들을 사용하는 방법을 알 수 있습니다 .. –