안녕하세요.
A (php로 만들어진 사이트)
B( 라이믹스 2.0.13)
A 라는 사이트에서 아이디를 보내주면
B라는 라이믹스 사이트에서서 해당 아이디가 있으면 로그인처리 하려고 하고 없으면 회원가입 시킬려고 합니다. (패스워드 등은 알아서 처리 예정)
A 사이트에서 데이터를 받을때
if($_SERVER['REQUEST_METHOD'] === 'POST') { require_once ($_SERVER['DOCUMENT_ROOT'] . "/common/autoload.php"); Context::init(); $data = json_decode(file_get_contents('php://input'), true); $member_info = getModel('member')->getMemberInfoByUserID($data['user_id']); ...
이렇게 auth.php 파일을 만들어서 받고
($data 변수에 넘긴 값이 잘 들어오는듯합니다.)
그런데 getMemberInfoByUserID() 여기도 해당 $member_info로 잘 가져오는데
getMemberInfoByUserID, procMemberLogin() 등에서 debugPrint(); 를 하거나 로그인 처리를 하려고 해도 작동하지 않네요.
원래 $_SERVER['REQUEST_METHOD'] 안에선 잘 안되는것이었나요??
혹은 다른 방법이 무엇이 있을까요?
제일 중요한 정보가 빠졌네요. 저 auth.php를 어디에서 어떤 방식으로 호출하나요?
만약 A사이트의 서버에서 curl이나 그 밖의 PHP 라이브러리로 B사이트의 auth.php를 호출한다면, 로그인 처리하더라도 curl이 로그인되는 것이지 사용자의 브라우저가 로그인되는 것이 아니기 때문에 아무 소용 없습니다. 디버그 함수를 사용하더라도 그 디버그 정보를 curl이 받지, 사용자가 받지는 않겠죠.
만약 A사이트에서 자바스크립트(AJAX 또는 location.href)로 B사이트의 auth.php를 호출한다면, POST가 아닌 GET으로 요청되어서 첫 번째 줄의 조건을 통과하지 못하고 있을 가능성이 높습니다. CORS나 <form> 같은 꼼수를 동원하지 않는 한, 자바스크립트는 다른 사이트에 POST 요청을 발생시킬 수 없는 것이 원칙이니까요. 위에 언급한 꼼수를 동원하더라도 CSRF 체크에 걸려서 튕길 가능성이 높고요. 혹시라도 성공하신다면 알려주세요. 다음 버전에서 해당 꼼수를 차단하겠습니다.^^