> 백엔드 개발 > PHP 튜토리얼 > PHP에서 세션 제어를 이해하는 방법

PHP에서 세션 제어를 이해하는 방법

一个新手
풀어 주다: 2023-03-15 22:12:01
원래의
1400명이 탐색했습니다.

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

1. 쿠키 방식

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

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

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

예를 들어, 게시물을 통해 양식을 제출한 후 일부 정보를 기록합니다.

<?php    
    if(isset($_POST)){        
    $time = time();        
    setcookie(&#39;user&#39;, $_POST[&#39;user&#39;], $time+3600);  // 时间参数需要比当前时间点大,以表示cookie信息的有效时间        s
    etcookie(&#39;data&#39;, array(1,2,3), $time+1200);  // 可以存放各种数据     }
   保存cookie成功后,可直接到$_COOKIE超全局数组中以键名取得该值,非常方便,如echo $_COOKIE[&#39;user&#39;],基本的数据类型都支持       cookie的删除仍是通过setcookie进行,最好写成将时间提前的形式,或者直接写一个键名,比如在用户点击退出时进行该项操作
 setcookie(&#39;user&#39;, &#39;&#39;, time()-200);  // 时间提前,相对当前时间 
 setcookie(&#39;user&#39;);  // 简写,只写键名
로그인 후 복사
  2.session方式
로그인 후 복사

세션은 정보가 원래 사용자 측에 저장되었다는 점을 제외하면 쿠키와 유사하지만 이제는 서버 측에 저장되지만 식별 ID 이 ID는 기본적으로 사용자의 로컬 쿠키에 저장됩니다. 이렇게 하면 사용자가 처음 방문할 때 해당 정보가 웹 서버에 저장되고, 이후에 사용자가 다른 페이지를 방문할 때 고정 길이의 문자열(세션 ID)이 사용자에게 무작위로 할당됩니다. 쿠키를 사용하는 세션을 쿠키 기반 세션이라고 합니다.

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

세션 사용

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

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

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

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

1.仍然是先开启会话,或者是跳转到其他页面时,再次返回已经存在的会话,需要确保前面没有输出
    session_start();   // 开启或返回一个会话
 
2.清空$_SESSION数组中的相关变量
  unset($_SESSION[&#39;robert&#39;])  // 销毁某一个变量  $_SESSION = array();  // 或者一次性全部销毁会话变量
3.清除保存在客户端的cookie,别忘了session id还在用户计算机上面
if(
isset(
$_COOKIE[
session_name
()])){        
unset(
$_COOKIE[
session_name()]);    
//
session_name()获取sesion的名,session id也是以名和值的形式存储的
    }
4.彻底销毁存储到服务器的信息
 session_destroy();
로그인 후 복사

4단계를 마치면 세션이 종료됩니다.

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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿