PHP의 세션 제어에 대한 심층적인 이해

黄舟
풀어 주다: 2023-03-15 20:56:01
원래의
1397명이 탐색했습니다.

세션 제어는 사용자를 추적하는 통신 방법으로 주로 다음 사항을 기반으로 합니다. http 프로토콜의 상태 비저장 특성으로 인해 일반 프로토콜을 통해 두 요청 간의 연결을 설정할 수 없습니다. 페이지 가져오기 및 게시 데이터 전송 방법은 주로 매개변수 전송 및 데이터 입력을 처리합니다. 두 페이지 간의 간단한 데이터 전송은 웹사이트의 여러 페이지에 대해 다양한 권한 차이가 있을 수 있습니다. 다른 페이지, 다른 작업 방법 등으로 이어집니다. get 및 post를 사용하는 것은 매우 번거롭습니다.

1. 쿠키 방식

사용자를 추적하려면 ​​​​쿠키의 개념은 사용자가 웹사이트의 첫 페이지를 방문할 때 사용자의 쿠키를 설정하는 것입니다. 정보 식별자, 웹 서버는 이를 텍스트 파일 형태로 사용자 컴퓨터에 저장합니다. 이 파일은 사용자가 웹사이트의 두 번째 페이지를 방문할 때 http 헤더에 키-값 쌍으로 저장됩니다. 쿠키 파일의 정보로 서버에 접속하여 지금 바로 사용자 정보를 다시 확인하세요. 이렇게 하면 방문할 때마다 사용자 정보를 입력하지 않고 여러 페이지 간 방문이 동일한 사용자인지 확인할 수 있습니다.

쿠키에 정보를 설정하는 함수: setcookie($key, $value, $expire, $path, $domain, $secure).

매개변수는 키, 값, 만료 시간(UNIX 타임스탬프, 기본값은 0이며 브라우저를 닫으면 쿠키가 사라짐을 의미), 쿠키에 액세스할 수 있는 경로를 설정한 후 해당 경로 아래에 스크립트를 작성합니다. 서버는 쿠키에 액세스할 수 있으며(기본값은 루트 디렉토리), 쿠키에 액세스하기 위한 도메인 이름, 이 도메인 이름 아래의 웹사이트 페이지(예: www.example.com)만 쿠키에 액세스할 수 있으며, 쿠키는 다음과 같은 경우에만 활성화됩니다. https 보안 연결.

예를 들어 post를 통해 양식을 제출한 후 일부 정보를 기록합니다

<?php    
if(isset($_POST)){        
$time = time();        
setcookie(&#39;user&#39;, $_POST[&#39;user&#39;], $time+3600);  // 时间参数需要比当前时间点大,以表示cookie信息的有效时间    
    setcookie(&#39;data&#39;, array(1,2,3), $time+1200);  // 可以存放各种数据 
    }
로그인 후 복사

쿠키 삭제는 여전히 setcookie를 통해 이루어집니다. 예를 들어 시간을 앞당기는 형식으로 작성하거나 키 이름을 직접 작성하는 것이 가장 좋습니다. , 사용자가 종료를 클릭하면 이 작업을 수행합니다

   setcookie(&#39;user&#39;, &#39;&#39;, time()-200);  // 时间提前,相对当前时间    
   setcookie(&#39;user&#39;);  // 简写,只写键名
로그인 후 복사

s 2. 세션 방법

SESSION은 쿠키와 유사하지만 원래는 사용자에 대한 정보가 존재했지만 이제는 서버로 변경되지만 식별자 ID를 생성합니다. 사용자 측에서는 이 ID가 사용자의 로컬 쿠키에 저장되므로 세션이 다시 쿠키와 관련됩니다. 이렇게 하면 사용자가 처음 방문할 때 해당 정보가 웹 서버에 저장되고, 이후에 사용자가 다른 페이지를 방문할 때 고정 길이의 문자열(세션 ID)이 사용자에게 무작위로 할당됩니다. 쿠키를 사용하는 세션을 쿠키 기반 세션이라고 합니다.

그러나 사용자는 쿠키를 비활성화하도록 브라우저를 설정할 수 있습니다(일반적으로 그렇게 하지 않음). 일부 웹사이트에서는 쿠키가 비활성화되었음을 감지한 후 사용자에게 쿠키를 활성화하도록 강제합니다. 그러나 쿠키를 통해 이러한 상황이 발생합니다. -based 방식은 작동하지 않습니다. 이 경우 URL 다음에 세션 ID를 사용하여 get 형식으로 전달할 수 있습니다. 물론 http post를 통해서도 전달할 수 있습니다.

세션 사용

먼저 session_start()를 사용하여 세션을 엽니다. 이러한 유형의 네트워크 기능의 경우

그런 다음 세션 변수를 등록합니다. 즉, 사용자 정보나 유용한 데이터에 액세스할 필요가 없습니다. $_SESSION 슈퍼 전역 배열에 직접 저장됩니다(예: $_SESSION['user'] = $_POST[['user']). 이러한 데이터는 서버의 파일에 저장됩니다. 캐시에 있어야 합니다(memcache, redis).

다른 페이지로 이동할 때는 먼저 다른 페이지에서 세션을 열어야 하며, 여전히 session_start()를 사용하여 세션이 이미 열려 있으면 이 함수는 현재 세션을 반환하고, 그렇지 않은 경우 다시 엽니다.

마지막으로 사용자가 어떤 이유로 대화를 종료하거나 파괴하는 경우 이러한 변수는 로그아웃되어야 합니다. 4단계:

1. 먼저 세션을 열거나, 다른 페이지로 이동할 때 기존 세션으로 다시 돌아가서 이전 출력이 없는지 확인해야 합니다.

    session_start();   // 开启或返回一个会话
로그인 후 복사

2. $_SESSION에서 관련 변수를 지웁니다. array


 unset($_SESSION[&#39;robert&#39;])  // 销毁某一个变量  
  $_SESSION = array();  // 或者一次性全部销毁会话变量
로그인 후 복사

3. 클라이언트에 저장된 쿠키를 삭제하세요. 세션 ID는 여전히 사용자의 컴퓨터에 있다는 것을 잊지 마세요


 if(isset($_COOKIE[session_name()])){        
unset($_COOKIE[session_name()]);    // session_name()获取sesion的名,session id也是以名和值的形式存储的
    }
로그인 후 복사

4. 서버에 저장된 정보를 완전히 파기하세요


  session_destroy();
로그인 후 복사
네 단계를 마치면 세션이 종료됩니다.



3. 세션 제어를 사용하는 기본 단계는 다음과 같습니다.

1) 세션 시작

  session_start() 함수를 호출하면 됩니다. 함수의 구체적인 기능은 PHP 문서를 참조하세요. 이 함수는 세션을 사용하여 스크립트 시작 시 호출되어야 합니다. 그렇지 않으면 세션에 저장된 모든 정보를 스크립트에서 사용할 수 없습니다. session_start() 함수를 수동으로 호출하는 것 외에도 PHP가 자동으로 호출하도록 자동으로 구성할 수도 있습니다.

 2) 세션 변수 등록

  PHP4.1부터 세션 변수는 슈퍼 전역 배열 $_SESSION에 저장됩니다. 세션 변수를 생성하려면 $_SESSION['myvar'] = 5;

 3) 세션 변수 사용

  세션 변수를 사용하는 방법은 매우 간단합니다. $_SESSION 배열에 액세스하고 저장하려면 세션 변수로 충분합니다. 예를 들어 echo $_SESSION['mywar']; 은 5를 출력합니다. 세션을 사용하기 전에 먼저 session_start() 함수를 사용하여 세션을 시작해야 합니다.

 4) 변수 등록 취소 및 세션 삭제

  변수 등록을 취소하려면 unset($_SESSION['myvar'])와 같이 unset을 직접 사용하면 됩니다. 모든 세션 변수를 한 번에 삭제하려면 unset($ _SESSION); 세션이 끝나면 모든 변수를 먼저 등록 해제한 다음 session_destroy()를 호출하여 세션 ID를 지워야 합니다.

위 내용은 PHP의 세션 제어에 대한 심층적인 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!