>  기사  >  백엔드 개발  >  PHP에서 도메인 간 자동 로그인을 구현하는 방법

PHP에서 도메인 간 자동 로그인을 구현하는 방법

PHPz
PHPz원래의
2023-04-04 10:40:29890검색

웹 애플리케이션의 인기가 높아짐에 따라 도메인 간 문제를 피하기가 점점 더 어려워지고 있습니다. 사용자가 다른 도메인 이름에서 하나의 도메인 이름에 액세스하는 경우 사용자 경험을 개선하기 위해 서로 다른 도메인 이름 간에 자동으로 로그인해야 할 수도 있습니다. 이 경우 PHP는 자동 도메인 간 로그인을 위한 효과적인 선택입니다. 이 기사에서는 PHP를 사용하여 도메인 간 자동 로그인을 구현하는 방법을 소개합니다.

1. 교차 도메인 쿠키 얻기

교차 도메인 자동 로그인을 달성하려면 먼저 소스 도메인 이름으로 사용자의 쿠키를 얻어야 합니다. 쿠키는 도메인 전체에서 액세스할 수 없으므로 Ajax를 사용하여 소스 도메인 이름으로 쿠키를 얻기 위해 서버에 요청을 제출해야 합니다.

원본 도메인 이름 서버에서 쿠키를 얻으려면 "get_cookie.php"라는 PHP 파일을 만들어야 합니다. 코드는 다음과 같습니다.

<?php
header(&#39;Access-Control-Allow-Origin: *&#39;);
if ($_SERVER[&#39;REQUEST_METHOD&#39;] == &#39;POST&#39;) {
  if (isset($_COOKIE[&#39;user&#39;])) {
    echo $_COOKIE[&#39;user&#39;];
  } else {
    echo &#39;Cookie not found.&#39;;
  }
}
?>

코드에서는 헤더 기능을 사용하여 "Access-Control-Allow-Origin" 헤더 파일을 설정하여 도메인 간 액세스를 허용합니다. 사용자 쿠키가 있으면 쿠키가 호출자에게 반환되고, 그렇지 않으면 "쿠키를 찾을 수 없습니다."가 반환됩니다.

2. 도메인 간에 쿠키 보내기

원본 도메인 쿠키를 얻은 후에는 이를 대상 도메인으로 보내야 합니다. 보안을 위해 쿠키 값을 대상 도메인으로 직접 보낼 수 없습니다. 대신 쿠키를 처리하려면 암호화 기술을 사용해야 합니다. 이 예에서는 Base64 인코딩 기술을 사용하기로 선택했습니다.

대상 도메인 이름 서버에서는 원본 도메인에서 보낸 쿠키를 처리하기 위해 "login.php"라는 PHP 파일을 만들어야 합니다. 코드는 다음과 같습니다.

<?php
$user = $_POST[&#39;user&#39;];
if (!empty($user)) {
  $user = base64_decode($user);
  $user_arr = explode(&#39;,&#39;, $user);
  if (count($user_arr) == 2) {
    $username = $user_arr[0];
    $password = $user_arr[1];
    //check user credentials and login
    //...
    echo &#39;success&#39;;
  } else {
    echo &#39;Invalid cookie data.&#39;;
  }
} else {
  echo &#39;Cookie not found.&#39;;
}
?>

코드에서는 먼저 $_POST 변수를 사용하여 소스 도메인에서 전송된 쿠키를 얻습니다. 그런 다음 Base64가 쿠키를 디코딩하여 사용자 이름과 비밀번호로 분할합니다. 다음으로 사용자 이름과 비밀번호를 사용하여 로그인하고 로그인 성공 시 호출자에게 "성공" 문자열을 반환할 수 있습니다. 쿠키 데이터가 유효하지 않은 경우 "잘못된 쿠키 데이터"가 반환됩니다.

3. iframe을 사용하여 자동 점프

마지막으로 소스 도메인과 대상 도메인 사이를 자동으로 이동하려면 iframe을 사용해야 합니다. 소스 도메인에서 다음 코드를 사용하여 "login.html"이라는 HTML 파일을 생성합니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cross-Domain Login</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$(function() {
  $.ajax({
    url: 'https://example.com/get_cookie.php',
    method: 'POST',
    success: function(data) {
      var iframe = $('<iframe/>', {
        src: 'https://targetdomain.com/login.php',
        style: 'display:none;'
      });
      $('body').append(iframe);
      iframe.load(function() {
        iframe.contents().find('body').append('<form method="post" action="https://targetdomain.com/login.php"><input type="hidden" name="user" value="&#39; + data + &#39;"></form>');
        iframe.contents().find('form').submit();
      });
    },
    error: function() {
      alert('Failed to get cookie.');
    }
  });
});
</script>
</head>
<body>
<p>Loading...</p>
</body>
</html>

코드에서는 jQuery 라이브러리를 사용하여 소스 도메인 쿠키를 얻기 위한 Ajax 요청을 시작합니다. 그런 다음 숨겨진 iframe을 만들어 body 요소에 추가했습니다. iframe 로드가 완료되면 쿠키를 POST 양식에 추가하고 해당 양식을 사용하여 대상 도메인에서 로그인 요청을 시작합니다.

사용자가 "https://sourcedomain.com/login.html"을 열면 페이지에서 쿠키를 얻기 위해 자동으로 POST 요청을 수행합니다. 그러면 페이지에서 숨겨진 iframe 페이지가 열리고 자동으로 로그인 정보를 입력하여 자동 로그인이 완료됩니다.

요약

이 글에서는 PHP를 사용하여 도메인 간 자동 로그인을 구현하는 방법을 소개합니다. 먼저 Ajax 요청을 사용하여 소스 도메인에서 쿠키를 가져온 다음 Base64 인코딩을 사용하여 쿠키를 암호화하고 대상 도메인에서 POST 형식을 사용하여 해독합니다. 마지막으로 iframe을 사용하여 소스 도메인과 대상 도메인 사이를 자동으로 이동합니다. 이 방법을 사용하면 상대적으로 높은 보안을 유지하면서 사용자에게 더 나은 경험을 제공할 수 있으므로 마스터할 가치가 있습니다.

위 내용은 PHP에서 도메인 간 자동 로그인을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.