ThinkPHP의 세션 운영 방법 요약
이 글에서는 세션 시 ThinkPHP의 다양한 동작 방법을 자세히 설명하고 있습니다.
ThinkPHP 동작 세션 공식 문서는 다음과 같습니다.
start 세션 시작
pause 세션 일시 중지
세션 지우기
세션 삭제
세션 값 가져오기
getLocal 개인 세션 값 가져오기
세션 값 설정
setLocal 개인 세션 값 설정
이름 가져오기 또는 set session_name
is_set 세션 값 설정 여부
is_setLocal 비공개 세션 값 설정 여부
id session_id 가져오기 또는 설정
path session_save_path 가져오기 또는 설정
setExpire 세션 만료 시간 설정
setCookieDomain 설정 유효한 도메인 이름
setCallback은 Session 객체를 deserialize할 때 콜백 함수를 설정합니다.
가장 일반적으로 사용되는 작업 방법 예제 코드는 다음과 같습니다.
// 检测Session变量是否存在 Session::is_set('name'); // 给Session变 量赋值 Session::set('name','value'); // 获取Session变量 Session::get('name');
Session 관련 구성 매개변수 코드는 다음과 같습니다.
'SESSION_NAME'=>'ThinkID', // 默认Session_name 'SESSION_PATH'=>'', // 采用默认的Session save path 'SESSION_TYPE'=>'File', // 默认Session类型 支持 DB 和 File 'SESSION_EXPIRE'=>'300000', // 默认Session有效期 'SESSION_TABLE'=>'think_session', // 数据库Session方式表名 'SESSION_CALLBACK'=>'', // 反序列化对象的回调方法
필요하지 않은 경우 SESSION_NAME 매개변수를 참고해야 합니다. 서로 다른 프로젝트 간에 세션 값을 공유합니다. 다른 값을 설정하고, 그렇지 않으면 동일한 기본값을 유지하십시오.
동일한 SESSION_NAME 값이 설정되어 있는데 프로젝트를 기반으로 비공개 세션 공간을 만들고 싶다면 어떻게 해야 하나요? ThinkPHP는 프로젝트를 세션 공간으로 사용하여 개인 세션 작업도 지원합니다. 이전의 일반적인 작업을 예로 들어 다음과 같이 변경합니다.
// 检测Session变量是否存在(当前项目有效) Session::is_setLocal('name'); // 给Session变 量赋值(当前项目有效) Session::setLocal('name','value'); // 获取Session变量(当前 项目有效) Session::getLocal('name');
이러한 방식으로 전역 세션 작업은 충돌하지 않으며 일부 특수 상황에 사용될 수 있습니다.
ThinkPHP는 데이터베이스 모드에서 세션 작업을 지원합니다. SESSION_TYPE의 값을 DB로 설정하면 됩니다. 데이터베이스 모드를 사용하는 경우 반드시 SESSION_TABLE의 값을 설정하고 다음 DDL을 데이터베이스로 가져오세요(예: MySQL). :
CREATE TABLE `think_session` ( `id` int(11) unsigned NOT NULL auto_increment, `session_id` varchar(255) NOT NULL, `session_expires` int(11) NOT NULL, `session_data` blob, PRIMARY KEY(`id`) )
Db Session 모드의 데이터베이스 연결은 프로젝트의 데이터베이스 구성 정보를 사용하여 연결됩니다. 데이터베이스 메서드 외에도 메모리 메서드, Memcache 메서드 등과 같은 다른 세션 저장 메커니즘 메서드를 추가할 수도 있습니다. 특정 메서드 정의는 session_set_save_handler 메서드를 사용하여 해당 필터만 추가하면 됩니다. Think.Util.Filter 아래의 FilterSessionDb. .class.php 파일 구현.
간단한 로그인 판단 생성
로그인 감지 후 Session 값이 비어 있거나 false가 되도록 Session 값을 할당
$_SESSION[C('USER_AUTH_KEY')] = $logInFind['id'] ;
여기서 [C('USER_AUTH_KEY')]는 ThinkPHP에 내장된 메소드 및 함수 클래스입니다. config.php 파일이 구성되지 않은 경우 기본적으로 비어 있습니다
$logInFind['id']에서 추출한 계정 값을 지정하면 기본적으로 세션 페이지가 닫히고 자동으로 삭제되어 사라집니다. !
다음 형식을 사용하여 다른 페이지를 판단하세요
if(!isset($_SESSION[C('USER_AUTH_KEY')])) { //isset 是检测变量是否赋值! $this->redirect('Login','Login'); //转到注册页面 }
세션 작업 방법에 대한 더 많은 ThinkPHP 관련 기사를 보려면 PHP 중국어 사이트를 주목하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











springboot 프로젝트 프로덕션 세션아웃 시간 초과에서 문제가 발견되었습니다. 문제 설명: 테스트 환경에서는 세션아웃 구성이 적용되었는지 확인하기 위해 application.yaml을 변경하여 세션아웃을 구성했습니다. , 프로덕션 환경에 도착하면 만료 시간이 8시간으로 직접 설정되었습니다. 그런데 정오에 고객으로부터 프로젝트 만료 시간이 짧게 설정되어 있다는 피드백을 받았습니다. 30분 동안 아무 작업도 수행하지 않으면 세션이 만료되어 반복 로그인이 필요합니다. 개발 환경 처리 문제를 해결합니다. springboot 프로젝트에는 Tomcat이 내장되어 있으므로 프로젝트의 application.yaml에 구성된 세션 아웃이 효과적입니다. 프로덕션 환경: 프로덕션 환경 릴리스는 다음과 같습니다.

세션 실패는 일반적으로 세션 수명 만료 또는 서버 종료로 인해 발생합니다. 해결 방법은 다음과 같습니다. 1. 세션 수명을 연장합니다. 3. 쿠키를 사용합니다. 4. 세션 관리 미들웨어를 사용합니다.

PHPSession의 도메인 간 문제 해결 프런트엔드와 백엔드 분리 개발에서 도메인 간 요청이 표준이 되었습니다. 도메인 간 문제를 처리할 때 일반적으로 세션 사용 및 관리가 포함됩니다. 그러나 브라우저 원본 정책 제한으로 인해 기본적으로 도메인 간에 세션을 공유할 수 없습니다. 이 문제를 해결하려면 도메인 간 세션 공유를 달성하기 위한 몇 가지 기술과 방법을 사용해야 합니다. 1. 도메인 간 세션을 공유하기 위한 쿠키의 가장 일반적인 사용

새로 고침 후 PHP 세션이 사라지는 문제에 대한 해결 방법: 1. "session_start();"를 통해 세션을 엽니다. 2. 모든 공개 구성을 PHP 파일에 작성합니다. 3. 변수 이름은 배열 첨자와 같을 수 없습니다. 4. phpinfo에서 세션 데이터의 저장 경로를 확인하고 파일 디렉터리의 sessio가 성공적으로 저장되었는지 확인합니다.

세션 PHP의 기본 만료 시간은 1440초(24분)입니다. 즉, 클라이언트가 24분 이상 새로 고치지 않으면 사용자가 브라우저를 닫으면 현재 세션이 만료되고 세션이 종료됩니다. 세션이 더 이상 존재하지 않습니다.

문제: 오늘 프로젝트에서 설정 시간 초과 문제가 발생했으며 SpringBoot2의 application.properties에 대한 변경 사항이 적용되지 않았습니다. 해결 방법: server.* 속성은 SpringBoot에서 사용하는 내장 컨테이너를 제어하는 데 사용됩니다. SpringBoot는 ServletWebServerFactory 인스턴스 중 하나를 사용하여 서블릿 컨테이너의 인스턴스를 생성합니다. 이러한 클래스는 server.* 속성을 사용하여 제어되는 서블릿 컨테이너(tomcat, jetty 등)를 구성합니다. 애플리케이션이 Tomcat 인스턴스에 war 파일로 배포되면 server.* 속성이 적용되지 않습니다. 적용되지 않습니다.

1. 세션 기반 SMS 로그인 구현 1.1 SMS 로그인 흐름도 1.2 SMS 인증코드 전송 구현 프런트엔드 요청 설명: 요청 방법 설명 POST 요청 경로/사용자/코드 요청 매개변수 전화(전화번호) 반환 값 백엔드 인터페이스 없음 구현: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1인 경우 휴대폰 번호를 확인합니다.

JavaScript쿠키 JavaScript 쿠키를 사용하는 것은 선호도, 구매, 커미션 및 기타 정보를 기억하고 추적하는 가장 효과적인 방법입니다. 더 나은 방문자 경험이나 웹사이트 통계를 위해 필요한 정보입니다. PHPCookieCookies는 클라이언트 컴퓨터에 저장되고 추적 목적으로 보관되는 텍스트 파일입니다. PHP는 HTTP 쿠키를 투명하게 지원합니다. JavaScript 쿠키는 어떻게 작동하나요? 귀하의 서버는 쿠키 형태로 방문자의 브라우저에 일부 데이터를 보냅니다. 브라우저는 쿠키를 허용할 수 있습니다. 존재하는 경우 방문자의 하드 드라이브에 일반 텍스트 기록으로 저장됩니다. 이제 방문자가 사이트의 다른 페이지에 도달하면
