PHP-세션
전체 웹 사이트의 다양한 페이지에서 데이터에 액세스 할 수있는 또 다른 방법은 PHP 세션을 사용하는 것입니다.
세션은 등록 된 세션 변수와 해당 값이 저장되는 서버의 임시 디렉토리에 파일을 생성합니다. 이 데이터는 해당 방문 동안 사이트의 모든 페이지에서 사용할 수 있습니다.
임시 파일의 위치는 php.ini 라는 파일 session.save_path. 세션 변수를 사용하기 전에이 경로를 설정했는지 확인하십시오.
세션이 시작되면 다음과 같은 일이 발생합니다.
PHP는 먼저 3c7foj34c3jj973hjkop2fc937e3443과 같은 32 개의 16 진수로 구성된 임의의 문자열 인 특정 세션에 대한 고유 식별자를 만듭니다.
라는 쿠키 PHPSESSID 고유 한 세션 식별 문자열을 저장하기 위해 사용자의 컴퓨터에 자동으로 전송됩니다.
파일은 지정된 임시 디렉토리의 서버에 자동으로 생성되며 sess_ ie sess_3c7foj34c3jj973hjkop2fc937e3443 접두사가 붙은 고유 식별자 이름을가집니다.
PHP 스크립트가 세션 변수에서 값을 검색하려고 할 때 PHP는 자동으로 PHPSESSID 쿠키에서 고유 한 세션 식별자 문자열을 가져온 다음 임시 디렉토리에서 해당 이름이있는 파일을 찾고 두 값을 비교하여 유효성 검사를 수행 할 수 있습니다.
세션은 사용자가 브라우저를 잃거나 사이트를 떠난 후에 종료되며 서버는 미리 정해진 시간 (일반적으로 30 분) 후에 세션을 종료합니다.
PHP 세션 시작
PHP 세션은 다음을 호출하여 쉽게 시작할 수 있습니다. session_start()이 함수는 먼저 세션이 이미 시작되었는지 확인하고 시작된 세션이 없으면 세션을 시작합니다. 전화를 거는 것이 좋습니다session_start() 페이지 시작 부분에.
세션 변수는 다음과 같은 연관 배열에 저장됩니다. $_SESSION[]. 이러한 변수는 세션 수명 동안 액세스 할 수 있습니다.
다음 예제는 세션을 시작한 다음라는 변수를 등록합니다. counter 세션 중에 페이지를 방문 할 때마다 증가합니다.
활용 isset() 세션 변수가 이미 설정되어 있는지 확인하는 기능입니다.
이 코드를 test.php 파일에 넣고이 파일을 여러 번로드하여 결과를 확인하십시오.
<?php
session_start();
if( isset( $_SESSION['counter'] ) ) {
$_SESSION['counter'] += 1;
}else {
$_SESSION['counter'] = 1;
}
$msg = "You have visited this page ". $_SESSION['counter'];
$msg .= "in this session.";
?>
<html>
<head>
<title>Setting up a PHP session</title>
</head>
<body>
<?php echo ( $msg ); ?>
</body>
</html>
다음 결과가 생성됩니다-
You have visited this page 1in this session.
PHP 세션 삭제
PHP 세션은 다음에 의해 파괴 될 수 있습니다. session_destroy()함수. 이 함수에는 인수가 필요하지 않으며 단일 호출로 모든 세션 변수를 삭제할 수 있습니다. 단일 세션 변수를 삭제하려면 다음을 사용할 수 있습니다.unset() 세션 변수를 설정 해제하는 함수입니다.
다음은 단일 변수를 설정 해제하는 예입니다.
<?php
unset($_SESSION['counter']);
?>
다음은 모든 세션 변수를 파괴하는 호출입니다.
<?php
session_destroy();
?>
자동 세션 켜기
다음을 설정할 수있는 경우 사용자가 사이트를 방문 할 때 세션을 시작하기 위해 start_session () 함수를 호출 할 필요가 없습니다. session.auto_start 1 인치로 가변 php.ini 파일.
쿠키가없는 세션
사용자가 자신의 컴퓨터에 쿠키 저장을 허용하지 않는 경우가있을 수 있습니다. 따라서 세션 ID를 브라우저에 보내는 또 다른 방법이 있습니다.
또는 세션이 시작된 경우 정의 된 상수 SID를 사용할 수 있습니다. 클라이언트가 적절한 세션 쿠키를 보내지 않은 경우 session_name = session_id 형식입니다. 그렇지 않으면 빈 문자열로 확장됩니다. 따라서 URL에 무조건 포함 할 수 있습니다.
다음 예제는 변수를 등록하는 방법과 SID를 사용하여 다른 페이지에 올바르게 링크하는 방법을 보여줍니다.
<?php
session_start();
if (isset($_SESSION['counter'])) {
$_SESSION['counter'] = 1;
}else {
$_SESSION['counter']++;
}
$msg = "You have visited this page ". $_SESSION['counter'];
$msg .= "in this session.";
echo ( $msg );
?>
<p>
To continue click following link <br />
<a href = "nextpage.php?<?php echo htmlspecialchars(SID); ?>">
</p>
다음 결과가 생성됩니다-
You have visited this page 1in this session.
To continue click following link
그만큼 htmlspecialchars() XSS 관련 공격을 방지하기 위해 SID를 인쇄 할 때 사용할 수 있습니다.