>  기사  >  백엔드 개발  >  PHP 인터뷰의 세션 제어 소개

PHP 인터뷰의 세션 제어 소개

不言
不言앞으로
2019-02-25 09:34:084035검색

이 기사는 PHP 인터뷰에서 세션 제어에 대한 소개를 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 세션

PHP 세션은 세션이라고도 합니다. PHP가 Session을 작동할 때, 사용자가 로그인하거나 일부 초기 페이지를 방문할 때 서버는 클라이언트에 SessionID를 할당합니다. SessionID는 세션 수명 주기 동안 클라이언트에 저장되는 암호화된 난수입니다. 이는 사용자 컴퓨터의 쿠키에 저장되거나 URL을 통해 네트워크를 통해 전송될 수 있습니다.

사용자는 SessionID를 통해 세션 변수라고 불리는 몇 가지 특수 변수를 등록할 수 있으며, 이러한 변수의 데이터는 서버 측에 저장됩니다. 특정 웹 사이트 연결에서 클라이언트가 쿠키나 URL을 통해 SessionID를 찾을 수 있으면 서버는 클라이언트가 전달한 SessionID를 기반으로 서버 측에 저장된 세션 변수에 접근할 수 있습니다.

세션의 수명 주기는 특정 웹사이트 연결 내에서만 유효합니다. 브라우저가 닫히면 세션이 자동으로 만료되고 이전에 등록된 세션 변수를 더 이상 사용할 수 없습니다. 구체적인 사용 단계는 다음과 같습니다.

1) 세션을 초기화합니다. 세션 함수를 구현하기 전에 세션을 초기화해야 합니다. 세션을 초기화하려면 session_start() 함수를 사용하세요.

bool session_start(void)

이 함수는 SessionID가 존재하는지 확인하고, 존재하지 않으면 SessionID를 생성하고 사전 정의된 배열 $_SESSION을 사용하여 액세스할 수 있습니다. 세션이 성공적으로 시작되면 함수는 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다. 세션이 시작된 후 해당 세션에 등록된 세션 변수를 로드하여 사용할 수 있습니다.
2) 세션 변수를 등록합니다. PHP 4.1부터 세션 변수는 미리 정의된 배열 $_SESSION에 저장되므로 배열 단위를 직접 정의하여 세션 변수를 정의할 수 있습니다. 형식은 다음과 같습니다.

$_SESSION["键名"]="值";

세션 변수를 정의한 후 다음 파일에 기록됩니다. 세션이 종료되거나 변수가 수동으로 로그아웃될 때까지 변수 값이 추적됩니다.
3) 세션 변수에 액세스합니다. 스크립트의 세션 변수에 액세스하려면 먼저 session_start() 함수를 사용하여 세션을 시작하세요. 그런 다음 $_SESSION 배열을 사용하여 변수에 액세스할 수 있습니다.
4) 세션 변수를 삭제합니다. 세션변수 사용 후, 등록된 세션변수를 삭제하여 서버 자원 점유를 줄이세요. 세션 변수를 삭제하려면 unset() 함수를 사용하세요. 구문 형식은 다음과 같습니다.

void unset(mixed $var [, mixed $var [, $... ]])

설명: $var는 삭제할 변수이며, 하나 이상의 변수를 삭제할 수 있습니다. 모든 세션 변수를 한 번에 삭제하려면 session_unset();을 사용하세요.
5) 세션을 삭제합니다. 세션 사용 후 해당 세션 변수를 로그아웃한 후 session_destroy() 함수를 호출하여 세션을 삭제합니다. 구문 형식은 다음과 같습니다.

bool session_destroy ( void )

이 함수는 세션의 모든 데이터를 삭제하고 SessionID를 삭제하며, 세션을 닫습니다.

2. 쿠키

쿠키는 사용자 이름, 비밀번호, 사이트 방문 횟수 등과 같은 정보를 저장하는 데 사용될 수 있습니다. 쿠키는 웹사이트를 방문할 때 html 웹페이지의 작은 정보 조각을 브라우저로 보내고 이를 스크립트 형태로 클라이언트 컴퓨터에 저장합니다.

일반적으로 쿠키는 HTTP 헤더를 통해 서버에서 브라우저로 반환됩니다. 먼저, 서버는 응답으로 Set Cookie Header를 사용하여 쿠키를 생성합니다. 그런 다음 브라우저는 생성된 쿠키를 쿠키 헤더를 통해 요청에 포함시키고 이를 서버로 반환하여 브라우저 확인을 완료합니다.

쿠키 기술에는 다음과 같은 많은 제한이 있습니다.
1) 여러 사람이 컴퓨터를 공유하는 경우 쿠키 데이터가 쉽게 유출됩니다.
2) 사이트에 저장되는 쿠키 정보는 제한되어 있습니다.
3) 일부 브라우저에서는 쿠키를 지원하지 않습니다.
4) 사용자는 브라우저 옵션을 설정하여 쿠키를 비활성화할 수 있습니다.
위의 쿠키 제한으로 인해 세션 관리를 수행할 때 일반적으로 SessionID는 쿠키에만 저장되지 않고 쿠키와 URL의 두 가지 방법으로 저장됩니다.

구체적으로 쿠키를 사용하는 단계는 다음과 같습니다.
1) 쿠키를 생성합니다. PHP에서 쿠키를 생성하려면 setcookie() 함수를 사용하십시오. 구문은 다음과 같습니다.

bool setcookie(string $name [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly ]]]]]])

① $name: 쿠키의 이름을 나타냅니다.
② $value: 쿠키의 값을 나타냅니다. 이 값은 클라이언트에 저장되므로 민감한 데이터는 저장하지 마세요.
3 $expire: 쿠키가 만료되는 시간을 나타냅니다. 이는 UNIX 타임스탬프이며, UNIX 에포크 이후의 초 수입니다. $expire 설정은 일반적으로 현재 타임스탬프에 해당하는 초 수를 더해 결정됩니다. 예를 들어, time()+1200은 쿠키가 20분 후에 만료됨을 의미합니다. 설정하지 않으면 브라우저가 닫힌 후 쿠키가 만료됩니다.
4 $path: 서버에서 쿠키의 유효 경로를 나타냅니다. 기본값은 쿠키가 설정된 현재 디렉터리입니다.
⑤ $domain: 서버에 있는 쿠키의 유효한 도메인 이름을 나타냅니다. 예를 들어 example.com 도메인 이름 아래의 모든 하위 도메인에서 쿠키가 유효하도록 하려면 이 매개변수를 ".example.com"으로 설정해야 합니다.

2) 쿠키에 액세스합니다. setcookie() 함수를 통해 생성된 쿠키는 배열 단위로 사용되며 미리 정의된 변수 $_COOKIE에 저장됩니다. 즉, $_COOKIE 배열 단위에 직접 값을 할당하여 쿠키를 생성할 수도 있습니다. 그러나 $_COOKIE 배열로 생성된 쿠키는 세션이 종료된 후 만료됩니다.

3)删除Cookie。Cookie在创建时指定了一个过期时间,如果到了过期时间,那么Cookie将自动被删除。在PHP中没有专门删除Cookie的函数。如果为了安全方面的考虑,在Cookie过期之前就想删除Cookie,那么可以使用setcookie()函数或$_COOKIE数组将已知Cookie的值设为空。
示例代码如下:

<?php
    $_COOKIE["user"]="administrator";
    setcookie("password","123456",time()+3600);
    $_COOKIE["user"]="";                    //使用$_COOKIE清除Cookie
    setcookie("password","");                //使用setcookie()函数清除Cookie
    print_r($_COOKIE);                    //输出:Array ( [user] => )
?>

Cookie和Session都是用来实现会话机制的,由于HTTP协议是无状态的,所以要想跟踪一个用户在同一个网站之间不同页面的状态,需要有一个机制,称为会话机制。

위 내용은 PHP 인터뷰의 세션 제어 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제