freeCodeCamp/guide/chinese/php/pp-sessions/index.md

143 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: PHP Sessions
localeTitle: PHP会话
---
# PHP会话
会话是一种存储要在多个页面中使用的信息(在变量中)的方法。
与cookie不同信息不存储在用户的计算机上。
## 什么是PHP会话
使用应用程序时打开它进行一些更改然后关闭它。这很像一个Session。
电脑知道你是谁。它知道您何时启动应用程序以及何时结束。
但在互联网上存在一个问题Web服务器不知道您是谁或您做了什么因为HTTP地址_不维护状态_ 。
会话变量通过存储要在多个页面中使用的用户信息(例如用户名,喜欢的颜色等)来解决此问题。
默认情况下,会话变量会持续到用户关闭浏览器为止。
**会话变量包含有关单个用户的信息,并且可用于一个应用程序中的所有页面。**
**注意:**如果需要永久存储,则可能需要将数据存储在数据库中。
## 启动PHP会话
使用_session_ start\_函数启动_会话_ 。
会话变量使用PHP全局变量设置$ \_SESSION。
**例:**
```
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "blue";
$_SESSION["favanimal"] = "dog";
echo "Session variables are set.";
?>
</body>
</html>
```
**注意:** session\_start函数必须是文档中的**第一件事** 。 **在**任何HTML标记**之前** 。
输出:
会话变量已设置。
## 获取PHP会话变量值
请注意会话变量不会单独传递到每个新页面而是从我们在每个页面开头打开的会话session\_start中检索它们。
另请注意,所有会话变量值都存储在全局$ \_SESSION变量中
**例:**
```
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
```
输出:
最喜欢的颜色是蓝色。
最喜欢的动物是狗。
显示用户会话的所有会话变量值的另一种方法是运行以下代码:
```
<?php
print_r($_SESSION);
?>
```
### 它是如何工作的?
大多数会话在用户的计算机上设置用户密钥如下所示765487cf34ert8dede5a562e4f3a7e12。
然后,当在另一个页面上打开会话时,它会扫描计算机以查找用户密钥。
如果匹配,则访问该会话,否则,它将启动新会话。
## 修改会话变量
要更改会话变量,只需覆盖它:
**例:**
```
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "pink";
print_r($_SESSION);
?>
</body>
</html>
```
## 销毁PHP会话
要删除所有全局会话变量并销毁会话请使用_session_ unset\_和_session_ destroy\_
**例:**
```
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>
```