php cookie和session详细讲解

PHP Cookie
cookie 是服务器留在用户计算机中的小文件,网站可以用它来识别访问网站的计算机。
创建 cookie
通过 setcookie() 函数来创建一个 cookie ,成功返回 TRUE ,否则返回 FALSE 。

语法:

bool setcookie( string name [, string value [, int expire [, string path [, string domain ]]]] )
参数说明: 参数 说明
name cookie 名称
value 可选,cookie 值
expire 可选,过期时间,时间戳格式
path 可选,服务器端有效路径,/ 表示整个域名有效,默认为当前设置 cookie 时页面的路径
domain 可选,该 cookie 有效的域名

创建 cookie 的例子:

setcookie("username", "xiaoli", time()+3600);
?>
在该例子中,我们设置了一个名称为 username 的cookie,其值为 xiaoli ,并在1小时候后过期。如果时间也被省略,cookie 将会在会话结束后(一般是浏览器关闭)失效。

cookie 会以一定格式被存储在用户计算机特定位置。

一个更完整的例子:

setcookie("username", "xiaoli", time()+3600, "/", ".5idev.com");
?>
该例子使用了 path 和 domain 参数,即在 5idev.com 域名的 / 路径下该 cookie 都有效(即全站有效)。

读取 cookie
PHP 内置了 $_COOKIE 变量以访问设置的 cookie 值。

例子:

echo $_COOKIE["username"];    //输出 xiaoli
?>
使用 isset() 函数来检测 cookie 变量是否已经被设置:

if (isset($_COOKIE["username"])) {
    echo "欢迎你: ".$_COOKIE["username"];
} else {
    echo "请登陆";
}
?>
销毁 cookie
可以通过设置 cookie 过期时间为以前的时间点来销毁一个 cookie :

setcookie("username", "", time()-3600);
?>
提示
由于协议限制,在设置 cookie 之前,不能有任何内容向浏览器输出
cookie 不会在设置的当前页生效,要访问设置的 cookie ,必须是另一个页面在过期之前访问
由于 cookie 信息存储于用户的计算机中,那么就有可能伪造 cookie 从而造成 cookie 欺骗,一般可以对 cookie 的值进行加密来预防欺骗。读取 cookie 的时候,对 cookie 解密即可

















PHP Session
PHP Session 概述
session 是一种客户与网站(服务器)更为安全的对话方式。一旦开启了 session 会话,便可以在网站的任何页面使用(保持)这个会话,从而让访问者与网站之间建立了一种“对话”机制。

常见的网上购物车,就是一个session会话的典型应用。我们在预定商品的时候,将选择好的商品放入购物车,实际就是开启一个商品的session会话。如果对选择的商品下了订单,则会将对应信息写入数据库;如果最终没有下订单,在用户关闭浏览器或退出登陆的时候,则会关闭session会话,选择的商品随即失效。

session 会话会为每一个开启了 session 会话的访问者建立一个唯一的会话 ID ,用于识别用户。该会话 ID 可能存储于用户电脑的 cookie 内,也可能通过 URL 来传递。而对应的具体 session 值会存储于服务器端,这也是与 cookie 的主要区别,并且安全性相对较高。

创建 session
要创建 session ,必须先使用 session_start() 函数开启一个 session 会话,系统会分配一个会话 ID:

session_start();
?>
使用 session_register() 函数注册一个 session 变量,成功返回 TRUE ,否则返回 FALSE 。

语法:

bool session_register( mixed name [, mixed ...] )
使用 session_register() 函数可以在目前会话下注册一个或多个全局 session 变量。

例子:

session_start();
$username = "xiaoli";
session_register("username");
?>
在该例子中,我们向 session 注册了一个名为 username 的变量,其值为 xiaoli 。

读取 session
PHP 内置的 $_SESSION 变量可以很方便的访问设置的 session 变量。

例子:

session_start();
echo "登记的用户名为:".$_SESSION["username"];    //输出 登记的用户名为:xiaoli
?>
销毁 session
可以通过 session_unregister() 函数来注销单个 session 变量或使用 session_unset() 来注销整个 session 会话。

例子:

session_start();
session_unregister("username");    //注销 session 变量
session_unset();                    //注销 session 会话
?>
另一种方式
可以通过直接添加 $_SESSION 数组成员的方式注册 session 变量:

session_start();
$_SESSION["username"] = "xiaoli";
?>
如果要注销这种方式注册的 session 变量,需要使用 unset() 函数:

session_start();
unset($_SESSION["username"]);
?>
读取 session 变量与销毁 session 会话则同前面的方式相同。

提示
不可使用 unset() 来销毁 session 会话。

你可能感兴趣的:(php基础)