## æ¦è¿°
å¯ä»¥ç´æ¥ä½¿ç¨`think\facade\Session`ç±»æä½`Session`ã
>[danger] æ°çæ¬ä¸æ¯ææä½åç`$_SESSION`æ°ç»åææ`session_`å¼å¤´çå½æ°ï¼åªè½éè¿`Session`ç±»ï¼æè
å©æå½æ°ï¼æ¥æä½ãä¼è¯æ°æ®ç»ä¸å¨å½å请æ±ç»æçæ¶åç»ä¸åå
¥ æ以ä¸è¦å¨`session`åå
¥æä½ä¹åæ§è¡`exit`çä¸ææä½,å¦åä¼å¯¼è´`Session`æ°æ®åå
¥å¤±è´¥ã
`6.0`ç`Session`ç±»å¯ä»¥å¾å¥½çæ¯æ诸å¦`Swoole`/`Workerman`çç¯å¢ã
## å¼å¯Session
`Session`åè½é»è®¤æ¯æ²¡æå¼å¯çï¼APIåºç¨é常ä¸éè¦ä½¿ç¨`Session`ï¼ï¼å¦æä½ éè¦ä½¿ç¨`Seesion`ï¼éè¦å¨å
¨å±çä¸é´ä»¶å®ä¹æ件ä¸å ä¸ä¸é¢çä¸é´ä»¶å®ä¹ï¼
```
'think\middleware\SessionInit'
```
> å¦ææ¯å¤åºç¨æ¨¡å¼ï¼å¹¶ä¸ä½ åªæ¯ç¨äºé¨ååºç¨ï¼é£ä¹ä¹å¯ä»¥å¨åºç¨ä¸é´ä»¶å®ä¹æ件ä¸åç¬å¼å¯ã
## Sessionåå§å
ç³»ç»ä¼èªå¨æç
§`session.php`é
ç½®çåæ°èªå¨åå§å`Session`ã
é»è®¤æ¯æç`session`设置åæ°å
æ¬ï¼
|åæ°|æè¿°|
|---|---|
|type|sessionç±»åï¼`File`æè
`Cache`ï¼|
|store|å½type设置为cacheç±»åçæ¶åæå®åå¨æ è¯|
|expire|sessionè¿ææ¶é´ï¼ç§ï¼å¿
须大äº0|
|var_session_id|请æ±session_idåéå|
|name|session_name|
|prefix|sessionåç¼|
|serialize|åºååæ¹æ³|
æ éä»»ä½æä½å°±å¯ä»¥ç´æ¥è°ç¨`Session`ç±»çç¸å
³æ¹æ³ï¼ä¾å¦ï¼
~~~
Session::set('name', 'thinkphp');
Session::get('name');
~~~
ä¼è¯æ°æ®ä¿åï¼è¯·æ±ç»æï¼çæ¶åä¼èªå¨åºååï¼å¹¶å¨è¯»åçæ¶åèªå¨ååºååï¼é»è®¤ä½¿ç¨`serialize`/`unserialize`è¿è¡åºååæä½ï¼ä½ å¯ä»¥èªå®ä¹åºååæºå¶ã
ä¾å¦å¨é
ç½®æ件ä¸è®¾ç½®ä¸ºä½¿ç¨`JSON`åºååï¼
```
'serialize' => ['json_encode', 'json_decode'],
```
>[danger] å°½éé¿å
æ对象ä¿åå°`Session`ä¼è¯
## åºç¡ç¨æ³
### èµå¼
~~~
Session::set('name', 'thinkphp');
~~~
### å¤ææ¯å¦åå¨
~~~
Session::has('name');
~~~
### åå¼
~~~
// å¦æå¼ä¸åå¨ï¼è¿ånull
Session::get('name');
// å¦æå¼ä¸åå¨ï¼è¿å空å符串
Session::get('name', '');
// è·åå
¨é¨æ°æ®
Session::all();
~~~
### å é¤
~~~
Session::delete('name');
~~~
### åå¼å¹¶å é¤
~~~
// åå¼å¹¶å é¤
Session::pull('name');
~~~
å¦ænameçå¼ä¸åå¨ï¼è¿å`Null`ã
### æ¸
空
~~~
Session::clear();
~~~
### éªåæ°æ®ï¼ä¸æ¬¡è¯·æ±ä¹åææ
~~~
// 设置session 并ä¸å¨ä¸ä¸æ¬¡è¯·æ±ä¹åææ
Session::flash('name','value');
~~~
### æåæ¸
é¤å½å请æ±ææçæ°æ®
~~~
// æ¸
é¤å½å请æ±ææçsession
Session::flush();
~~~
>[danger] 注æï¼`Session`åå
¥æ°æ®çæä½ä¼å¨è¯·æ±ç»æçæ¶åç»ä¸è¿è¡æ¬å°ååå¨ï¼æ以ä¸è¦å¨åå
¥`Session`æ°æ®ä¹å使ç¨exitçä¸ææä½ï¼å¯è½ä¼å¯¼è´`Session`没ææ£å¸¸åå
¥ã
## å¤çº§æ°ç»
æ¯æ`session`çå¤çº§æ°ç»æä½ï¼ä¾å¦ï¼
~~~
// èµå¼
Session::set('name.item','thinkphp');
// å¤ææ¯å¦èµå¼
Session::has('name.item');
// åå¼
Session::get('name.item');
// å é¤
Session::delete('name.item');
~~~
å
¶ä¸`set`å`delete`æ¹æ³åªè½æ¯æäºçº§æ°ç»ï¼å
¶ä»æ¹æ³æ¯æä»»æ级æ°ç»æä½ã
## å©æå½æ°
ç³»ç»ä¹æä¾äºå©æå½æ°`session`å®æç¸åçåè½ï¼ä¾å¦ï¼
~~~
// èµå¼
session('name', 'thinkphp');
// å¤ææ¯å¦èµå¼
session('?name');
// åå¼
session('name');
// å é¤
session('name', null);
// æ¸
é¤session
session(null);
~~~
## Request对象ä¸è¯»åSession
å¯ä»¥å¨Request对象ä¸è¯»åSessionæ°æ®
```
public function index(Request $request) {
// 读åæ个sessionæ°æ®
$request->session('user.name', '');
// è·åå
¨é¨sessionæ°æ®
$request->session();
}
```
ä½`Request`ç±»ä¸ä¸æ¯æ`Session`åå
¥æä½ã
## åºç¨ç¬ç«ä¼è¯
>[danger] å¤åºç¨æ
åµä¸é»è®¤`Session`æ¯è·¨åºç¨çï¼ä¹å°±æ¯è¯´å¤åºç¨ä¹é´æ¯å
±äº«ä¼è¯æ°æ®çï¼å¦æä¸å¸æå
±äº«ä¼è¯æ°æ®ï¼å¯ä»¥ç»æ¯ä¸ªåºç¨è®¾ç½®ä¸åçåç¼`prefix`ã
å¦ææ¯Fileç±»åçè¯ï¼é»è®¤ç`session`ä¼è¯æ°æ®ä¿åå¨`runtime/session`ç®å½ä¸é¢ï¼ä½ å¯ä»¥è®¾ç½®`path`æ¹ååå¨è·¯å¾ã
## Session驱å¨
é»è®¤ç`Session`驱å¨éç¨æ件ç¼åæ¹å¼è®°å½ï¼å¹¶ä¸æ¯æå¦ä¸é
ç½®
|åæ°|æè¿°|
|---|---|
|path|sessionä¿åè·¯å¾|
|data_compress|æ¯å¦å缩æ°æ®|
|gc_divisor|GCåæ¶æ¦ç|
|gc_probability|GCåæ¶æ¦ç|
é¤äºæ件类åä¹å¤ï¼è¿å¯ä»¥æ¯æç´æ¥ä½¿ç¨ç¼åä½ä¸º`Session`ç±»åï¼ä¾å¦ï¼
~~~
return [
'type' => 'cache',
'store' => 'redis',
'prefix' => 'think',
]
~~~
表示使ç¨`redis`ä½ä¸º`session`ç±»åã
è¦ä»¥ä¸çé
ç½®çæï¼è¯·ç¡®ä¿ç¼åé
ç½®æ件`cache.php`ä¸ç`stores`ä¸å·²ç»æ·»å äº`redis`ç¼åé
ç½®ï¼ä¾å¦ï¼
~~~
return [
'default' => 'file',
'stores' => [
// æ件ç¼å
'file' => [
// 驱å¨æ¹å¼
'type' => 'file',
// 设置ä¸åçç¼åä¿åç®å½
'path' => '../runtime/file/',
],
// redisç¼å
'redis' => [
// 驱å¨æ¹å¼
'type' => 'redis',
// æå¡å¨å°å
'host' => '127.0.0.1',
],
],
];
~~~
## èªå®ä¹é©±å¨
å¦æéè¦èªå®ä¹`Session`驱å¨ï¼ä½ ç驱å¨ç±»å¿
é¡»å®ç°`think\contract\SessionHandlerInterface`æ¥å£ï¼å
å«äºä¸ä¸ªæ¹æ³ã
```
interface SessionHandlerInterface
{
public function read(string $sessionId): string;
public function delete(string $sessionId): bool;
public function write(string $sessionId, string $data): bool;
}
```
`read`æ¹æ³æ¯å¨è°ç¨`Session::start()`çæ¶åæ§è¡ï¼å¹¶ä¸åªä¼æ§è¡ä¸æ¬¡ã
`write`æ¹æ³æ¯å¨æ¬å°åä¼è¯æ°æ®çæ¶åæ§è¡ï¼è°ç¨`Session::save()`æ¹æ³ï¼ï¼ç³»ç»ä¼å¨æ¯æ¬¡è¯·æ±ç»æçæ¶åèªå¨æ§è¡ã
`delete`æ¹æ³æ¯å¨éæ¯ä¼è¯çæ¶åæ§è¡ï¼è°ç¨`Session::destroy()`æ¹æ³ï¼ã
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- URL访é®
- 容å¨åä¾èµæ³¨å ¥
- æå¡
- é¨é¢
- ä¸é´ä»¶
- äºä»¶
- è·¯ç±
- è·¯ç±å®ä¹
- åéè§å
- è·¯ç±å°å
- è·¯ç±åæ°
- è·¯ç±ä¸é´ä»¶
- è·¯ç±åç»
- èµæºè·¯ç±
- 注解路ç±
- è·¯ç±ç»å®
- ååè·¯ç±
- MISSè·¯ç±
- è·¨å请æ±
- URLçæ
- æ§å¶å¨
- æ§å¶å¨å®ä¹
- åºç¡æ§å¶å¨
- 空æ§å¶å¨
- èµæºæ§å¶å¨
- æ§å¶å¨ä¸é´ä»¶
- 请æ±
- 请æ±å¯¹è±¡
- 请æ±ä¿¡æ¯
- è¾å ¥åé
- 请æ±ç±»å
- HTTP头信æ¯
- 伪éæ
- åæ°ç»å®
- 请æ±ç¼å
- ååº
- ååºè¾åº
- ååºåæ°
- éå®å
- æ件ä¸è½½
- æ°æ®åº
- è¿æ¥æ°æ®åº
- åå¸å¼æ°æ®åº
- æ¥è¯¢æé å¨
- æ¥è¯¢æ°æ®
- æ·»å æ°æ®
- æ´æ°æ°æ®
- å é¤æ°æ®
- æ¥è¯¢è¡¨è¾¾å¼
- é¾å¼æä½
- where
- table
- alias
- field
- strict
- limit
- page
- order
- group
- having
- join
- union
- distinct
- lock
- cache
- comment
- fetchSql
- force
- partition
- failException
- sequence
- replace
- extra
- duplicate
- procedure
- èåæ¥è¯¢
- å页æ¥è¯¢
- æ¶é´æ¥è¯¢
- é«çº§æ¥è¯¢
- è§å¾æ¥è¯¢
- JSONå段
- åæ¥è¯¢
- åçæ¥è¯¢
- æ¥è¯¢äºä»¶
- è·åå¨
- äºå¡æä½
- åå¨è¿ç¨
- æ°æ®é
- æ°æ®åºé©±å¨
- 模å
- å®ä¹
- 模åå段
- æ°å¢
- æ´æ°
- å é¤
- æ¥è¯¢
- æ¥è¯¢èå´
- JSONå段
- è·åå¨
- ä¿®æ¹å¨
- æç´¢å¨
- æ°æ®é
- èªå¨æ¶é´æ³
- åªè¯»å段
- 软å é¤
- ç±»å转æ¢
- 模åè¾åº
- 模åäºä»¶
- 模åå ³è
- ä¸å¯¹ä¸å ³è
- ä¸å¯¹å¤å ³è
- è¿ç¨ä¸å¯¹å¤
- è¿ç¨ä¸å¯¹ä¸
- å¤å¯¹å¤å ³è
- å¤æå ³è
- å ³èé¢è½½å ¥
- å ³èç»è®¡
- å ³èè¾åº
- è§å¾
- 模æ¿åé
- è§å¾è¿æ»¤
- 模æ¿æ¸²æ
- 模æ¿å¼æ
- è§å¾é©±å¨
- é误åæ¥å¿
- å¼å¸¸å¤ç
- æ¥å¿å¤ç
- è°è¯
- è°è¯æ¨¡å¼
- Traceè°è¯
- SQLè°è¯
- åéè°è¯
- è¿ç¨è°è¯
- éªè¯
- éªè¯å¨
- éªè¯è§å
- é误信æ¯
- éªè¯åºæ¯
- è·¯ç±éªè¯
- å ç½®è§å
- 表å令ç
- 注解éªè¯
- æ项
- ç¼å
- Session
- Cookie
- å¤è¯è¨
- ä¸ä¼
- å½ä»¤è¡
- å¯å¨å ç½®æå¡å¨
- æ¥ççæ¬
- èªå¨çæåºç¨ç®å½
- å建类åºæ件
- æ¸ é¤ç¼åæ件
- çææ°æ®è¡¨å段ç¼å
- çæè·¯ç±æ å°ç¼å
- è¾åºè·¯ç±å®ä¹
- èªå®ä¹æ令
- æ©å±åº
- æ°æ®åºè¿ç§»å·¥å ·
- Workerman
- thinkå©æå·¥å ·åº
- éªè¯ç
- Swoole
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿