>백엔드 개발 >PHP 튜토리얼 >PHP에서 클라이언트의 시간대를 결정하는 방법은 무엇입니까?

PHP에서 클라이언트의 시간대를 결정하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-03 02:28:02469검색

How to Determine a Client's Timezone in PHP?

PHP에서 클라이언트의 시간대를 확인하는 방법

클라이언트의 시간대를 검색하는 것은 다양한 시나리오에서 유용할 수 있습니다. 이 질문에서는 정확한 시간 표시, 시간대별 작업 또는 지역 타겟팅을 보장하면서 JavaScript와 PHP의 조합을 사용하여 클라이언트의 시간대를 얻는 방법을 탐구합니다.

해결책:

  1. PHP 서버 측 코드: PHP 파일을 만들고 시작 부분에 다음 코드를 포함합니다.
<code class="php">session_start();
$timezone = $_SESSION['time'];</code>

이 코드는 세션 변수를 설정합니다. 클라이언트의 시간대를 저장하기 위해 "time"이라는 이름을 지정합니다.

  1. JavaScript 클라이언트측 코드: HTML 헤드에 다음 코드를 추가합니다.
<code class="html"><script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        if("<?php echo $timezone; ?>".length==0){
            var visitortime = new Date();
            var visitortimezone = "GMT " + -visitortime.getTimezoneOffset()/60;
            $.ajax({
                type: "GET",
                url: "http://domain.com/timezone.php",
                data: 'time='+ visitortimezone,
                success: function(){
                    location.reload();
                }
            });
        }
    });
</script></code>

이 스크립트는 PHP $timezone 변수가 비어 있는지(클라이언트의 시간대가 설정되지 않았음을 나타냄)를 감지하고 JavaScript를 사용하여 브라우저에서 클라이언트의 시간 오프셋을 검색합니다. 그런 다음 이 오프셋을 사용하여 서버의 PHP 스크립트에 AJAX 요청을 보냅니다.

  1. 서버의 Timezone.php 스크립트: 다음을 사용하여 timezone.php라는 새 PHP 파일을 생성합니다. 다음 코드:
<code class="php">session_start();
$_SESSION['time'] = $_GET['time'];</code>

이 PHP 스크립트는 AJAX가 전송한 시간 오프셋을 세션 변수 "time"에 저장합니다.

작동 방식:

  1. JavaScript 코드는 클라이언트 측에서 실행되며 사용자의 시간대 오프셋을 감지합니다.
  2. 세션 변수 $timezone이 비어 있으면(첫 번째 방문) 오프셋을 시간대로 보냅니다. AJAX를 통한 .php.
  3. timezone.php는 세션 변수 "time"에 오프셋을 저장합니다.
  4. 이제 클라이언트의 시간대 정보는 $timezone을 사용하여 서버 측에서 액세스할 수 있습니다.

위 내용은 PHP에서 클라이언트의 시간대를 결정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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