> 백엔드 개발 > PHP 튜토리얼 > PHP 세션 제어 세션 및 쿠키 소개

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

小云云
풀어 주다: 2023-03-20 16:58:02
원래의
1720명이 탐색했습니다.

1. 쿠키

1>쿠키 소개

쿠키는 클라이언트 브라우저에 저장되는 데이터로, 쿠키를 통해 사용자 데이터를 추적하고 저장할 수 있습니다. 일반적으로 쿠키는 HTTP 헤더를 통해 서버에서 클라이언트로 반환됩니다. 대부분의 웹 프로그램은 쿠키가 HTTP 헤더에 존재하기 때문에 쿠키 작동을 지원합니다.
PHP에서 쿠키는 setcookie 함수를 통해 설정됩니다. 브라우저에서 다시 전송된 모든 쿠키에 대해 PHP는 특정 쿠키 값을 읽기 위해 이를

_COOKIE['key'] 형식으로 자동으로 저장합니다.
세션을 사용할 때 일반적으로 쿠키는 사용자를 식별하기 위해 세션 ID를 저장하는 데 사용됩니다. 쿠키에는 유효 기간이 만료되면 클라이언트에서 자동으로 삭제됩니다.

2>Set cookie
setcookie()
의미: 쿠키를 설정하는 데 사용됩니다. setcookie() 함수에는 7개의 매개변수가 있습니다(일반적으로 사용되는 매개변수는 5개입니다).
구문: setcookie(이름, 값, 만료, 경로, 도메인, 보안, httponly)
반환 값: 이 함수를 호출하기 전에 출력이 있으면 setcookie()는 실패하고 FALSE를 반환합니다. setcookie()가 성공적으로 실행되면 TRUE를 반환합니다. 이는 사용자가 쿠키를 허용하는지 여부를 나타내지는 않습니다.

매개변수:
이름:
$_COOKIE['name']을 통해 액세스되는 쿠키의 이름입니다.
값:
 쿠키 값
만료:
 쿠키가 만료되는 시간입니다. 이것은 초 단위의 Unix 타임스탬프입니다. time() 함수와 만료되기 전에 원하는 초 수를 사용하여 설정할 수 있습니다. 아니면 mktime()을 사용할 수도 있습니다. 0으로 설정하거나 생략하면 세션이 끝날 때(브라우저가 닫힐 때) 쿠키가 만료되며 기본값은 0입니다.
경로:
(유효한 경로) 경로가 '/'로 설정되면 전체 웹사이트가 유효해지고, '/foo/'로 설정되면 쿠키는 /foo/ 디렉터리 및 /foo/bar/와 같은 모든 하위 디렉터리에만 있게 됩니다. 사용 가능한 도메인.
도메인:
(쿠키가 사용 가능한 도메인) 기본적으로 전체 도메인 이름에 대해 유효합니다. 전체 도메인(모든 하위 도메인 포함)에서 쿠키를 사용할 수 있게 하려면 해당 값을 도메인 이름으로 설정하면 됩니다(이 경우 'example.com').
보안:
 이 쿠키는 클라이언트의 보안 HTTPS 연결을 통해서만 전송될 수 있음을 나타냅니다. TRUE로 설정하면 보안 연결이 존재하는 경우에만 쿠키가 설정됩니다. 서버 측에서 프로그래머는 보안 연결에서만 이러한 종류의 쿠키를 보낼 수 있습니다(예:

value, time()+3600, "path/", "baidu.com"에 상대적) //경로 및 도메인 설정

3>쿠키 삭제 및 만료 시간
PHP에는 쿠키를 삭제하는 기능이 없습니다. 대신, 쿠키의 만료 시간을 현재 시간 이전으로 설정하면 쿠키가 자동으로 만료되어 삭제됩니다.

4> 쿠키가 비어 있는지 확인
isset()
의미: 특정 쿠키가 존재하는지 확인합니다.
구문: isset(해당 쿠키 속성);
반환 값: true/false

setcookie("name","SYN");if( isset( $_COOKIE["name"])){    echo  $_COOKIE["name"];
}else{    echo "不存在";
}
로그인 후 복사

세션과 쿠키의 유사점과 차이점

cookie:
1. 클라이언트에 데이터를 저장하고 사용자와 서버 간의 연결을 설정하면 일반적으로 많은 문제를 해결할 수 있지만 쿠키에는 여전히 몇 가지 제한 사항이 있습니다.
2. 쿠키는 상대적으로 보안이 취약하고 쉽게 도난당할 수 있어 쿠키 사기로 이어질 수 있습니다
3. 단일 쿠키의 가치는 최대 4k까지만 저장할 수 있습니다
4. 각 요청에는 네트워크 전송이 필요하며 대역폭을 차지합니다

session:
1. 크기 제한 없이 사용자의 세션 데이터를 서버에 저장합니다.
2. 사용자 식별은 session_id를 통해 이루어집니다. 기본적으로 PHP 세션 ID는 쿠키를 통해 저장됩니다

//开始使用sessionsession_start();//设置一个session$_SESSION['test'] = time();//显示当前的session_idecho "session_id:".session_id();echo "<br>";//读取session值echo $_SESSION['test'];//销毁一个sessionunset($_SESSION['test']);echo "<br>";
var_dump($_SESSION);
로그인 후 복사

2. Session

1>세션 사용

먼저 session_start 메소드를 실행하여 세션을 연 후 사용하세요. 전역 변수 $ _SESSION은 세션을 읽고 씁니다. 기본적으로 세션은 파일 형태로 서버에 저장되므로, 페이지에서 세션이 열리면 해당 세션 파일이 독점적으로 점유됩니다. 이로 인해 현재 사용자의 다른 동시 액세스가 실행될 수 없게 됩니다. 기다리다. 이 문제는 캐시나 데이터베이스 저장소를 사용하여 해결할 수 있습니다.
세션은 설정할 값을 자동으로 인코딩 및 디코딩하므로 세션은 데이터 및 개체를 포함한 모든 데이터 유형을 지원할 수 있습니다.

session_start();$_SESSION['ary'] = array('name' => 'jobs');$_SESSION['obj'] = new stdClass();
var_dump($_SESSION);
로그인 후 복사

2>세션 삭제 및 파괴

unset()
PHP에서는 특정 세션 값을 삭제하려면 unset 함수를 사용합니다. 삭제 후에는 전역 변수 $_SESSION에서 제거되어 접근할 수 없습니다.

session_start();$_SESSION['name'] = 'jobs';unset($_SESSION['name']);echo $_SESSION['name']; //提示name不存在
로그인 후 복사

session_destroy()
session_destroy 함수는 모든 데이터를 삭제하지만 session_id는 여전히 존재합니다.

session_start();$_SESSION['name'] = 'jobs';$_SESSION['time'] = time();
session_destroy();
로그인 후 복사

특별 주의:
session_destroy()는 전역 변수

_SESSION이 비어 있을 때까지 즉시 삭제하지 않으므로 $_SESSION을 즉시 삭제해야 하는 경우 unset()을 사용할 수 있습니다.

3>세션을 사용하여 사용자의 로그인 정보 저장

登录信息既可以存储在sessioin中,也可以存储在cookie中,他们之间的差别在于session可以方便的存取多种数据类型,而cookie只支持字符串类型,同时对于一些安全性比较高的数据,cookie需要进行格式化与加密存储,而session存储在服务端则安全性较高。

<?phpsession_start();//假设用户登录成功获得了以下用户数据$userinfo = array(    &#39;uid&#39;  => 1011,    'name' => 'spark',    'email' => '1637167XX@qq.com',    'sex'  => 'F');
header("content-type:text/html; charset=utf-8");/* 将用户信息保存到session中 */$_SESSION['uid'] = $userinfo['uid'];$_SESSION['name'] = $userinfo['name'];$_SESSION['userinfo'] = $userinfo;//* 将用户数据保存到cookie中的一个简单方法 */$str =serialize($userinfo); //将用户信息序列化setcookie('userinfo', $str);
로그인 후 복사

了解更多关于序列化serialize;

相关推荐:

php用户登录代码session、cookie自动记忆功能

cookie 和session 的定义和区别

php session会话如何写入redis

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿