>  기사  >  백엔드 개발  >  PHP 세션 제어 예제 코드에 대한 자세한 소개

PHP 세션 제어 예제 코드에 대한 자세한 소개

黄舟
黄舟원래의
2017-03-14 16:29:551429검색


개요

http 프로토콜은 상태 비저장이며 각 요청에 대해 서버는 사용자를 구별할 수 없습니다. PHP 세션 제어는 사용자의 신원을 증명하는 키(암호화된 세션 문자열)를 제공합니다. 이는 서버가 상자(데이터베이스, 메모리 데이터베이스 또는 파일을 사용하여 만든 것)를 저장합니다. 사용자의 다양한 변수 정보를 확인할 수 있습니다.

이 열쇠는 어디에 있나요?
1, url query string
2, browser cookie

기존 PHP 세션에서는

<?php
//page1.php 启动一个会话并注册一个变量session_start();
$_SESSION[&#39;user_var&#39;] = "hello,codekissyoung!";
//这里的可以将$_SESSION理解为用户的箱子,实际的实现是php在服务器端生成的小文件
?>
<?php
//page2.php
session_start();
echo $_SESSION[&#39;user_var&#39;];
//通过钥匙访问自己的箱子内的变量
$_SESSION[&#39;user_var&#39;] = "bey,codekissyoung!";
<?php//page3.php 销毁钥匙,一般在用户注销时,访问page3.php文件session_start();
session_destroy();?>

를 사용합니다. 한 가지 질문이 있습니다. 열쇠? 사용자에게 키를 주는 동작을 못 보셨나요?
이 작업은 뒤에서 PHP에 의해 수행됩니다. page1.php에 액세스하여 session_start(); 프로그램을 실행하면 PHP는 현재의 일부 조건(사용자 IP, 브라우저 번호, 시간)에 따라 이를 생성합니다. 등) PHPSESSID 변수입니다. http 응답이 클라이언트에 반환된 후 이 PHPSESSID는 이미 브라우저 쿠키에 저장되어 있습니다. 이 도메인 이름을 다시 방문할 때마다 PHPSESSID가 서버로 전송됩니다. 이 PHPSESSID는 제가 여기서 말하는 사용자 키입니다.

한 가지 더 궁금한 점은 이 PHPSESSID의 보안이 도난당하기 쉬운지, 위조되기 쉬운지, 변조되기 쉬운지?
HTTPS를 사용하면 변조를 방지할 수 있습니다. PHPSESSID를 사용하지 말고, 위조 방지를 위해 사용자용 비밀키를 생성하세요. 도난당하기 쉬운지 여부에 대해서는 실제로 연구된 바가 없습니다. 예를 들어, 컴퓨터가 인터넷에 연결되어 있고 해커가 컴퓨터에 침입하는 경우입니다.

생성된 비밀 키를 브라우저 쿠키에 저장

设置cookiesetCookie(&#39;key&#39;,&#39;value&#39;,time()+3600);
删除cookiesetCookie(&#39;key&#39;,&#39;&#39;,time()-1);

싱글 사인온 달성: 세션 공유

싱글 사인온: 여러 하위 시스템 간에 사용자 집합 공유 인증 시스템의 경우 한 곳에서 로그인하면 모든 하위 시스템에 액세스할 수 있습니다.
이 시나리오를 상상해 보세요. 서버 A와 B의 PHP 환경이 동일하다고 가정합니다. 사용자는 서버 A에서 키를 얻은 다음 서버 B에 액세스하기 위해 키를 가져갔습니다. 그는 서버 B를 알고 있습니까?
분명히 그렇지 않습니다. 서버 A에서 생성된 키는 서버에서 인식되지 않습니다.
해결책: 사용자가 A 또는 B에 액세스하는지에 관계없이 생성된 키를 C(동일한 데이터베이스 또는 캐시 시스템)에 저장합니다. 사용자가 A 또는 B에 다시 액세스하면 A와 B 모두 C에게 다음과 같이 묻습니다. 사용자 키가 맞나요? 맞다면 사용자는 A나 B에 보관된 상자를 사용할 수 있습니다.

아아아아

위 내용은 PHP 세션 제어 예제 코드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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