2016-07-15 2 views
1

나는 내 웹 사이트에서 "좋아하는"기능을 구현하려고합니다.즐겨 찾기에 추가 버튼을 확인하십시오.

사용자는 로그인없이 전체 웹 사이트를 방문 할 수 있지만 일부 결과에서 자신이 좋아하는 것을 표시하려면 로그인해야합니다.

내가 좋아하는 기능을 추가하는 로그인은 분명합니다. 이제 문제는 사용자가 웹 사이트에 로그인 할 때 로그인 할 필요가 없다고 말했지만 "즐겨 찾기에 추가"버튼을 클릭하면 로그인 상태를 확인해야합니다 (처음에는 로그인하지 않았다는 것을 알고 있습니다). 그런 다음 부트 스트랩 모달이 소셜 로그인 (실제 문제)과 함께 나타나야합니다.

그래서 로그인하지 않은 경우 로그인 페이지를 어떻게 표시 할 수 있습니까?

내 코드는 다음과 같습니다 당신은 true 또는 false로 설정 $ _SESSION [ "로그인"]와 세션을 시작할 수

<button class='btn btn-sm btn-info favourite_feature' value="<?php echo $id;?>">favourite</button> 

$(document).ready(function() 
{ 
    $(".favourite_feature").click(function(){ 
    var _this = $(this); 
    var postid = _this.val(); 
    $.ajax({ 
     type  : 'POST', 
     url  : '/add_favourite.php', 
     dataType : 'json', 
     data  : '$postid='+ postid, 
    }); 
    }); 
}); 

답변

0

"즐겨 찾기에 추가"작업에 대한 요청을 받으면 기본적으로 사용자가 로그인했는지 여부를 확인하는 것은 백 엔드의 책임입니다.

JS가 데이터를 서버에 게시 할 때 JS는 적절하게 응답해야합니다 (작업이 성공했는지 여부 및 문제가 무엇인지 여부).

백엔드는 "마음에 드는 추가"가정 사용자가 로그인하지 않았을 때 행동이 JSON으로 응답합니다

{ 
    "success" : 0, 
    "error_type" : "login" 
} 

... 그리고 작업이 오류없이 수행 된이 JSON은 :

{ 
    "success" : 1 
} 

그런 식으로 서버가 사용자에게 로그인해야한다는 것을 자바 스크립트에 알립니다. 그러면 위의 응답을 처리 할 수 ​​있습니다 (내 예에서는 ID가 loginModal 인 요소가 표시되는 모달입니다) :

$(document).ready(function() 
{ 
    $(".favourite_feature").click(function(){ 
    var _this = $(this); 
    var postid = _this.val(); 
    $.ajax({ 
     type  : 'POST', 
     url  : '/add_favourite.php', 
     dataType : 'json', 
     data  : '$postid='+ postid, 
     success : function(response) { 
     if (response.success) { 
      // if add to favourite succeeded 
     } 
     else { 
      // handle errors 
      if (response.error_type == 'login') { 
       // if user should log in - show modal (example jQuery) 
       $('#loginModal').modal('show'); 
      } 
     } 
     } 
    }); 
    }); 
}); 
+0

if (! isset ($ _ SESSION [ 'google_data'])) { \t $ 결과 = 0; \t $ error_type = '로그인'; \t echo json_encode ($ error_type); \t echo json_encode ($ result); } add_to_favourite에서 이것을 시도했습니다.PHP는하지만 console.log에 json 문자열을 반환하지 않습니다. – parvez

+0

이렇게하면됩니다 :'$ response = array ('success'=> 0, 'error_type'=> 'login'); echo json_encode ($ response);' – Kleskowy

+0

이제 add_to_favourite.php, 에 문제가 생겼습니다. include 'include/dbconfig.php'; $ id = $ _SESSION [ 'id']; $ c_id = $ _POST [ 'postid']; $ u_email = $ _SESSION [ 'google_data'] [ '이메일']; if (! isset ($ _ SESSION [ 'google_data'])) { \t $ response = array ('success'=> 0, 'error_type'=> 'login'); \t echo json_encode ($ response); 다른 { \t $ 쿼리 = mysqli_query ($의 CONN "(favourites_table Course_ID에 266 USER_EMAIL) VALUES ('$의 C_ID'내로 '$ 아이디', '$의 u_email를"삽입 "또는 (mysqi_error 다이 } ($ \t echo json_encode ($ response); }'nw json empty – parvez

0

. $ _SESSION [ "login"]이 true 또는 false인지 확인하려면 add_favourite.php 파일에서 뒤에 &을 확인하십시오. false를 반환하면 모달이 적용됩니다.

+0

나는 세션에서 분명하지만 아약스 성공 함수 – parvez

+0

까지 모달을 트리거하는 방법을 모르고있다. 세션이 있는지 여부와 상관없이 세션 점검 여부를 세션에 넣을 수있다. 사용자가 자신이 좋아하는 목록에 항목을 추가 할 수 있도록 로그인 용 모달을 엽니 다. –

+0

괜찮습니다. 나는 당신이 이렇게 할 수 있다고 생각합니다. 따라서 사용자가 로그인하지 않고 조회 버튼을 누르지 않으면 /add_favourite.php로 이동하여 true인지 아닌지 세션을 확인합니다. 그래서이 상황에서 우리는 false가되어 모달 스크립트를 리턴 할 것입니다. 및 응답 아약스가 화면에 인쇄됩니다. 그래서 당신은 귀하의 페이지에 모달을 얻을 것입니다 –

관련 문제