Php 简明教程
PHP - $_SESSION
PHP 中的超全局变量之一 $_SESSION 是当前脚本中可用的会话变量的关联数组。 $HTTP_SESSION_VARS 也包含相同的信息,但它不是超全局变量,现在已被弃用。
One of the superglobal variables in PHP, $_SESSION is an associative array of session variables available in the current script. $HTTP_SESSION_VARS also contains the same information, but it is not a superglobal, and it has now been deprecated.
What is a Session?
会话是另一种方法,可跨整个网站的页面访问数据。它是用户与服务器建立连接时和连接终止时之间的持续时间。在此时间段内,用户可能会导航到不同的页面。许多时候,希望某些数据持续可在所有页面中使用。这由 session variables 实现。
A Session is an alternative way to make data accessible across the pages of an entire website. It is the time duration between the time a user establishes a connection with a server and the time the connection is terminated. During this interval, the user may navigate to different pages. Many times, it is desired that some data is persistently available across the pages. This is facilitated by session variables.
会话在服务器临时目录中创建一个文件,其中存储已注册的会话变量及其值。此数据在该访问期间可供站点上的所有页面使用。
A session creates a file in a temporary directory on the server where the registered session variables and their values are stored. This data will be available to all the pages on the site during that visit.
服务器为每个会话分配一个唯一的 SESSIONID。由于 HTTP 是一种无状态协议,因此当会话终止时,会话变量中的数据将自动删除。
The server assigns a unique SESSIONID to each session. Since HTTP is a stateless protocol, data in session variables is automatically deleted when the session is terminated.
The session_start() Function
为了启用对会话数据的访问,必须调用 session_start() 函数。session_start() 基于通过 GET 或 POST 请求或通过 Cookie 传递的会话标识符创建一个会话或恢复当前会话。
In order to enable access to session data, the session_start() function must be invoked. session_start() creates a session or resumes the current one based on a session identifier passed via a GET or POST request, or passed via a cookie.
session_start(array $options = []): bool
如果会话已成功启动,则此函数返回 true ,否则返回 false 。
This function returns true if a session was successfully started, else it returns false.
Handling Session Variables
要创建新的会话变量,请在 $_SESSION 数组中添加键值对 −
To create a new session variable, add a key-value pair in the $_SESSION array −
$_SESSION[ "var"]=value;
要读回会话变量的值,您可以使用 echo/print 语句或 var_dump() 或 print_r() 函数。
To read back the value of a session variable, you can use echo/print statements, or var_dump() or print_r() functions.
echo $_SESSION[ "var"];
要获取当前会话中所有会话变量的列表,可以使用 foreach 循环遍历 $_SESSION −
To obtain the list of all the session variables in the current session, you can use a foreach loop to traverse the $_SESSION −
foreach ($_SESSION as $key=>$val)
echo $key . "=>" . $val;
若要手动清除所有会话数据,则有 session_destroy() 函数。也可以通过调用 unset() 函数来释放特定的会话变量。
To manually clear all the session data, there is session_destroy() function. A specific session variable may also be released by calling the unset() function.
unset($_SESSION[ "var"]);
List of Session Functions
在 PHP 中,有许多用于管理会话数据的内置函数。
In PHP, there are many built-in functions for managing the session data.
Session Functions |
Description |
session_abort |
Discard session array changes and finish session |
session_cache_expire |
Return current cache expire |
session_cache_limiter |
Get and/or set the current cache limiter |
session_commit |
Alias of session_write_close |
session_create_id |
Create new session id |
session_decode |
Decodes session data from a session encoded string |
session_destroy |
Destroys all data registered to a session |
session_encode |
Encodes the current session data as a session encoded string |
session_gc |
Perform session data garbage collection |
session_get_cookie_params |
Get the session cookie parameters |
session_id |
Get and/or set the current session id |
session_is_registered |
Find out whether a global variable is registered in a session |
session_module_name |
Get and/or set the current session module |
session_name |
Get and/or set the current session name |
session_regenerate_id |
Update the current session id with a newly generated one |
session_register_shutdown |
Session shutdown function |
session_register |
Register one or more global variables with the current session |
session_reset |
Re-initialize session array with original values |
session_save_path |
Get and/or set the current session save path |
session_set_cookie_params |
Set the session cookie parameters |
session_set_save_handler |
Sets user-level session storage functions |
session_start |
Start new or resume existing session |
session_status |
Returns the current session status |
session_unregister |
Unregister a global variable from the current session |
session_unset |
Free all session variables |
session_write_close |
Write session data and end session |
Example
以下 PHP 脚本呈现一个 HTML 表单。表格数据用于创建三个会话变量。一个超链接将浏览器带到另一个页面,该页面读回会话变量。
The following PHP script renders an HTML form. The form data is used to create three session variables. A hyperlink takes the browser to another page, which reads back the session variables.
将此代码另存为“test.php”,并将其保存在文档根目录中,然后使用浏览器打开它。输入数据,然后按 Submit 按钮。
Save this code as "test.php" in the document root folder, and open it in a client browser. Enter the data and press the Submit button.
<html>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<h3>User's ID: <input type="text" name="ID"/></h3>
<h3>Your Name: <input type="text" name="name"/></h3>
<h3>Enter Age: <input type="text" name="age"/></h3>
<input type="submit" value="Submit"/>
</form>
<?php
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$_SESSION['UserID'] = $_POST['ID'];
$_SESSION['Name'] = $_POST['name'];
$_SESSION['age'] = $_POST['age'];
}
echo "Following Session Variables Created: \n";
foreach ($_SESSION as $key=>$val)
echo "<h3>" . $key . "=>" . $val . "</h3>";
echo "<br/>" . '<a href="hello.php">Click Here</a>';
?>
</body>
</html>
单击“提交”按钮后,它将显示创建的所有会话变量的列表 -
When you click the "Submit" button, it will show a list of all the session variables created −
接下来,在“hello.php”文件中保存以下脚本。
Next, have the following script in the "hello.php" file and save it.
<?php
session_start();
echo "<h2>Following Session variables Read:</h2>";
foreach ($_SESSION as $key=>$val)
echo "<h3>" . $key . "=>" . $val . "</h3>";
?>
现在,点击“test.php”页面上的链接导航到“hello.php”。它将显示被读到的会话变量 -
Now, follow the link on the "test.php" page to navigate to "hello.php". It will show the session variables that are read −