PHP 的 Cookie 用法


什么是 Cookie
Cookie 能够让网页开发者将指定的资料储存到使用者的硬盘,在有需要时在客户端读取已储存的 cookie 资料。例如在建立电子商贸网站时,可以使用 cookie 记录使用者所选取的货品。

而 cookie 为了预防使用者的资料被泄,所以有以下限制:

— 每个浏览器最多只可储存 300 个 cookie
— 每个浏览器对每个网站只能储存 20 个 cookie
— 如果浏览器关闭了 cookie 功能,那就不能使用

Cookie 的实作
要在 PHP 内储存一个 cookie 给使用者,最简单的做法是:

setcookie(“cookie_name”, “cookie_value”);

以上的 cookie_name 是 cookie 的名称,cookie_value 是定义给 cookie 的值。
但用这方法所储存的 cookie,当使用者关闭浏览器后便会失效,以下几个例子会示范 setcookie 其他的用法:

Cookie 的有效时间为 1 小时

设定成只有 /member/ 目录才可使用

在 www.mydomain.com 的 /member/ 目录才有效,mydomain.com 则没有效

如果是结合 HTTPS 安全协定(SSL),就需指定最后一个值

常见问题
一般上使用 cookie 失败的原因是使用者关闭 cookie 功能,或者在使用 setcookie 前已输出内容给浏览器。

使用者关闭 cookie 功能很难避免,另一个问题则可在程式层面上解决。

在 PHP 内使用 header() 及 setcookie() 的函式时,需要在输出内容前使用,否则会出现 “Headers already sent” 错误, 以下是正确及错误的例子:

错误写法, 会出现 “Headers already sent”.

正确写法

Tags:

Leave a Reply