세션 처리 Examples 세션 ID 전달

세션 ID를 전파하는 두 가지 메서드가 있습니다.

  • Cookies
  • URL parameter

세션 모듈은 두 가지 메서드를 모두 지원합니다. 쿠키는 최적이지만 항상 사용할 수 있는 것은 아니므로 다른 방법도 제공합니다. 두 번째 메서드는 세션 ID를 URL에 직접 포함합니다.

PHP는 링크를 투명하게 변환할 수 있습니다. 런타임 옵션 session.use_trans_sid가 활성화되면 상대 URI가 세션 ID를 자동으로 포함하도록 변경됩니다.

메모: arg_separator.output php.ini 지시문을 사용하면 인수 구분 기호를 사용자 지정할 수 있습니다. 완전한 XHTML 준수를 위해 & 거기에 지정하십시오.

또는 세션이 시작된 경우 정의된 상수 SID를 사용할 수 있습니다. 클라이언트가 적절한 세션 쿠키를 보내지 않은 경우 session_name=session_id 형식을 갖습니다. 그렇지 않으면 빈 문자열로 확장됩니다. 따라서 무조건 URL에 포함할 수 있습니다.

다음 예에서는 변수를 등록하는 방법과 SID를 사용하여 다른 페이지에 올바르게 링크하는 방법을 보여줍니다.

예제 #1 단일 사용자의 조회수 계산

                  
<?php

session_start();

if (empty($_SESSION['count'])) {
   $_SESSION['count'] = 1;
} else {
   $_SESSION['count']++;
}
?>

<p>
Hello visitor, you have seen this page <?php echo $_SESSION['count']; ?> times.
</p>

<p>
To continue, <a href="nextpage.php?<?php echo htmlspecialchars(SID); ?>">click
here</a>.
</p>
                  
                

htmlspecialchars()는 XSS 관련 공격을 방지하기 위해 SID를 인쇄할 때 사용할 수 있습니다.

--enable-trans-sid가 PHP를 컴파일하는 데 사용된 경우 위에 표시된 것처럼 SID를 인쇄할 필요가 없습니다.

메모: 상대가 아닌 URL은 외부 사이트를 가리키는 것으로 간주되므로 SID를 추가하지 않습니다. SID를 다른 서버로 유출하면 보안 위험이 될 수 있기 때문입니다.