이번에 A,B사이트 두사이트에서
다른 한곳의 로그인여부를 가져와야하는데요.
B사이트가 A사이트의 로그인여부를 체크하는 상황입니다.
우선은 둘다 워드프레스 사이트이구요.
B사이트에서 A사이트로 통신해 A사이트에서 임의의 텍스트를 보낼경우에는 문제없이 B사이트에서 문제없이 A에서 보낸 값을 받는데 성공했습니다.
하지만 제목대로 워드프레스 함수를 사용할 경우에 되지가않아서요.
찾아보니 로그인 체크하는 함수가
is_user_logged_in( ) <<-- 이 함수더라구요.
그래서 A사이트에서 is_user_logged_in( )을 실행한다음
조건문 참거짓에따라 B사이트로 보낼 변수의 값을 임의로 정해주는데 B사이트에서 확인시 값이 undefined로 찍힙니다.
소스는
B사이트===========================================================================
<script>
(function($) {
$(function() {
testJSON();
function testJSON(gw_name, ip) {
$.ajax({
type:"POST",
url : "http://A사이트도메인/wp-content/themes/musi/include/ajax.php",
data : "ref1="+gw_name,
dataType : "jsonp",
jsonpCallback : "myCallback",
success: function(data) {
console.log('성공 - ', data);
if(data != null) {
alert(data.message);
}
},
error: function(xhr) {
console.log('실패 - ', xhr);
}
});
}
});
} ) ( jQuery);
</script>
================================================================================
A사이트의 ajax.php===================================================================
<?php
header('Content-Type: application/javascript;charset=UTF-8');
$idd = $_GET['menu-item-1222'];
$ref1 = $_REQUEST['ref1'];
$dtime = date("Y-m-d H:i:s");
$callback = $_REQUEST['callback'];
if( is_user_logged_in( ) ){ $check='Y'; }
else{$check='N';}
$arr = array("message" => $check , "time" =>$dtime, "gate_name" => $idd);
$json_val = json_encode($arr);
//echo "${param.callback}(".$json_val.");";
echo $callback."(".$json_val.")";
?>
================================================================================
이렇게 할경우
B사이트 console에서
GET http://A사이트/wp-content/themes/musi/include/ajax.php?callback=myCallback&ref1=undefined&_=1513168355093 net::ERR_ABORTED <<---이렇게 결과가 나옵니다.
말씀드린대로 is_user_logged_in()을 사용하지않고
$check라는 변수에 임의로 텍스트를 넣으면 잘 나옵니다.
도대체 무엇이 문제일까요.... 고수님들 ㅠㅠ
안녕하세요~^^
is_user_logged_in() 코드로 로그인 여부를 확인하려면
B사이트에서 A사이트로 POST로 보내는 URL을 A사이트의 실제 페이지 주소로 적용해주셔야 합니다.
위 코드는 ajax.php 파일과 통신하기 때문에 로그인 여부를 확인할 수 없는 듯합니다.
고맙습니다.
추가로 말씀드리자면 사이트가 서로 다르기 때문에 로그인 체크가 안될 겁니다.
싱글 사인온(SSO)을 구축해야 하며 다양한 방법이 있으니 적절한 방법을 찾아보셔야 할 듯합니다.
고맙습니다.