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

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

Sep 12, 2017 am 10:07 AM
php세션제어

세션 제어는 사용자를 추적하는 통신 방법으로 주로 다음 사항을 기반으로 합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP 세션의 개념을 간단한 용어로 설명하십시오.PHP 세션의 개념을 간단한 용어로 설명하십시오.Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsususingauniqueIdStoredInAcookie.here'showtomanagetheMeftically : 1) STARTASESSIONSTART_START () andSTAREDATAIN $ _SESSION.2) RegenerATERATESSESSIDIDAFTERLOGINWITHSESSION_RATERATERATES (True) TopreventSES

PHP 세션에 저장된 모든 값을 어떻게 반복합니까?PHP 세션에 저장된 모든 값을 어떻게 반복합니까?Apr 26, 2025 am 12:06 AM

PHP에서 세션 데이터를 통한 반복은 다음 단계를 통해 달성 할 수 있습니다. 1. Session_start ()를 사용하여 세션을 시작하십시오. 2. $ _session 배열의 모든 키 값 쌍을 통해 Foreach 루프를 통과합니다. 3. 복잡한 데이터 구조를 처리 할 때 is_array () 또는 is_object () 함수를 사용하고 print_r ()를 사용하여 자세한 정보를 출력하십시오. 4. Traversal을 최적화 할 때 페이징을 사용하여 한 번에 많은 양의 데이터를 처리하지 않도록 할 수 있습니다. 이를 통해 실제 프로젝트에서 PHP 세션 데이터를보다 효율적으로 관리하고 사용하는 데 도움이됩니다.

사용자 인증에 세션을 사용하는 방법을 설명하십시오.사용자 인증에 세션을 사용하는 방법을 설명하십시오.Apr 26, 2025 am 12:04 AM

이 세션은 서버 측 상태 관리 메커니즘을 통해 사용자 인증을 인식합니다. 1) 세션 생성 및 고유 ID의 세션 생성, 2) ID는 쿠키를 통해 전달됩니다. 3) ID를 통해 서버 저장 및 세션 데이터에 액세스합니다. 4) 사용자 인증 및 상태 관리가 실현되어 응용 프로그램 보안 및 사용자 경험이 향상됩니다.

PHP 세션에 사용자 이름을 저장하는 방법의 예를 제시하십시오.PHP 세션에 사용자 이름을 저장하는 방법의 예를 제시하십시오.Apr 26, 2025 am 12:03 AM

tostoreauser'snameinaphpsession, startSessionstart_start (), wathsignthenameto $ _session [ 'username']. 1) useSentess_start () toinitializethesession.2) assimeuser'snameto $ _session [ 'username']

PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?Apr 25, 2025 am 12:16 AM

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP의 세션 관련 문제를 어떻게 디버그합니까?PHP의 세션 관련 문제를 어떻게 디버그합니까?Apr 25, 2025 am 12:12 AM

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

session_start ()가 여러 번 호출되면 어떻게됩니까?session_start ()가 여러 번 호출되면 어떻게됩니까?Apr 25, 2025 am 12:06 AM

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

PHP에서 세션 수명을 어떻게 구성합니까?PHP에서 세션 수명을 어떻게 구성합니까?Apr 25, 2025 am 12:05 AM

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구