>백엔드 개발 >PHP 튜토리얼 >thinkphp에서 세션을 사용하는 방법에 대한 설명

thinkphp에서 세션을 사용하는 방법에 대한 설명

韦小宝
韦小宝원래의
2018-03-06 13:00:411904검색

우리는 PHP의 기본을 배우다 보면 세션세션 제어를 접하게 됩니다. 나중에 개발할 때 이해하지 못했을 뿐인데 너무 간단하다는 것을 알게 되었습니다. 아직은 이해도가 너무 낮습니다. 오늘은 thinkPHP 프레임워크에서 세션을 활용하는 방법에 대해 이야기해보겠습니다!

Session 클래스는 ThinkPHP에 캡슐화되어 있으며 사용자가 직접 사용할 수 있습니다. 일반적으로 사용되는 방법은 다음과 같습니다.

  • Session::set(name, value): 세션을 등록합니다.

  • Session::is_set(name): Session 값이 설정되어 있는지 확인하세요.

  • Session::get(name): 세션을 읽습니다.

  • Session::clear(): 세션을 지웁니다.

  • Session::destroy(): 세션을 삭제합니다.

ThinkPHP는 기본적으로 세션을 열기 때문에 Session 클래스를 사용하기 전에 session_start() 함수를 사용하여 세션을 열 필요가 없습니다.

세션 인스턴스를 사용하세요.

양식을 제출하여 세션을 등록하세요. 아래의 다른 두 가지 방법을 사용하여 세션을 등록합니다. 각 페이지는 템플릿 모드에서 세션 값을 읽고 Session::get 모드에서 동작합니다.

Register session

사용자 모듈 sessionTest 작업을 통해 세션을 등록합니다. 예:

class UserAction extends Action{  
public function session(){  
if(!emptyempty($_POST['username'])){  
Session::set('username',$_POST['username']);  
}  
$this->display();  
}  
}

sessionTest.html 템플릿(조각):

<p>  
< present name="_SESSION[&#39;username&#39;]">{$_SESSION[&#39;username&#39;]} 你好!  
< a href="APP/">首页</a>  
< a href="URL/user">本模块其他页面</a>  
< a href="URL/logout">注销</a><else />请输入您的用户名:  
< /p>  
< form action="SELF" method="post">  
< p><input type="text" name="username" /></p>  
< p><input type="submit" value=" 提交 " /></p>  
< /form>  
< /present>

사용자 이름(예: testuser)을 입력할 때 제출 버튼을 클릭하고 이를 sessionTest 메서드(즉, 현재 페이지)에 제출하여 세션 값을 처리하고 등록합니다. 템플릿 태그는 출력 논리를 제어하고 $_SESSION['사용자 이름이 등록되었습니다'] 변수가 출력되는지 감지하기 위해 존재합니다.

testuser 안녕하세요! 홈페이지 로그아웃

그렇지 않으면 양식이 출력됩니다.

세션 등록 여부 감지

템플릿에서 감지

템플릿에서 Present, Notempty 등의 태그를 직접 사용할 수도 있고, 세션 변수 등록 여부를 스위치로 확인하여 해당 세션을 판별할 수도 있습니다. 값을 출력하거나(출력 배열 단위를 사용하여 세션 변수 값을 직접 출력) 자세한 내용은 이 튜토리얼의 템플릿 태그 부분과 위의 예제를 참조하세요.

In 작업을 수행하려면 Session::is_set 메소드를 사용하여 세션 값이 설정되었는지 확인할 수 있습니다. 예를 들어 사용자 모듈 사용자는 다음과 같이 작동합니다.

public function user(){  
// 由于直接在操作里输出,为避免乱码  header("Content-Type:text/html; charset=utf-8");  
if(Session::is_set(&#39;username&#39;)){  
echo Session::get(&#39;username&#39;).&#39; 你好&#39;;  
}else{  
echo &#39;session 未注册&#39;;  
}  
}

다른 모듈 페이지

다른 페이지(예: Index/ index), 세션 코드 조각을 판단하고 읽으십시오:

<present name="_SESSION[&#39;username&#39;]">
{$_SESSION[&#39;username&#39;]} 你好!
<else />未登录
</present>

session 无效(无法传递)

session이 ThinkPHP에 나타날 수 있습니다. 유효하지 않은 경우(다른 페이지로 전달할 수 없음) 가능한 이유는 다음과 같습니다.

Session의 첫 글자 클래스는 대문자로 표시되지 않습니다. 예: session::set.

페이지에

항목 파일

에 빈 줄이 있는 등의 정보 출력이 있습니다.

서버의 세션 저장 경로(session.save_path)( Linux/Unix)에는 잘못된 권한이 있어 세션 정보가 올바르게 저장되지 않습니다.

범위 문제에 대한 제안:

ThinkPHP의 세션 클래스는 세션에만 이 작업을 수행합니다. 간단한 패키징으로 실제로 PHP의 기본 세션 기능을 직접 사용할 수 있습니다. 작업 시 공식적인 권장 사항은 동일합니다.

다음 사항도 살펴봐야 합니다.

PHP 세션 제어 세션, 쿠키 소개

Laravel Sessionid 처리 메커니즘에 대한 자세한 설명

위 내용은 thinkphp에서 세션을 사용하는 방법에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.