在Web开发中,有许多需要储存临时数据的场景,比如用户登录状态、购物车内商品等等。HTTP协议的无状态性质使得服务器无法识别来自同一用户的一些请求是否具有关联性。鉴于此,Cookie技术应运而生,它允许服务器在客户端保存一些信息,并在需要时取回。
一、设置Cookie
使用PHP设置Cookie非常简单,只需要调用setcookie函数即可,该函数有如下参数:
bool setcookie (string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]])这些参数的含义依次是:Cookie名、值、过期时间、可用路径、域名、是否SSL传输、是否HTTPOnly。其中,过期时间是秒数,若为0则表示随浏览器关闭而失效;可用路径表示Cookie的有效范围,若是"/"表示整个网站;域名为可选参数,若不指定则默认当前域名及其所有子域名均有效;SSL表示是否仅在HTTPS协议下使用;HTTPOnly则表示只允许HTTP协议使用Cookies,而不允许JavaScript等脚本访问。 例如,代码如下:
setcookie("user", "Alice", time()+3600, "/");这句代码将一个名为“user”值为“Alice”的Cookie储存在客户端,有效期为一小时,它在整个站点内均可使用。 二、取回Cookie 使用$_COOKIE全局变量即可取回Cookie的值。例如:
echo $_COOKIE["user"]; //输出Alice取回Cookie时,无需关心它是否在有效期内,如果Cookie在有效期内,$_COOKIE数组中存储它的值,否则为null。 三、删除Cookie 既然Cookie是在客户端储存的,那么删除一个Cookie就需要通过setcookie函数将它的值设置为空,并将其到期时间设置为过去的某个时间。例如:
setcookie("user", "", time()-3600);这条语句将把名为“user”的Cookie值清空,并将过期时间设置为一个比当前时间早一小时的时间点,从而将之删除。 四、注意事项 当PHP调用了setcookie这个函数并将Cookie发送到客户端时,这个Cookie就变成了不可撤销的。因此,需要在对Cookie进行维护之前,对用户身份进行验证,以免恶意用户操纵Cookie取得足够的权限。同时,要充分了解Cookie的安全机制,确认Cookie中不会包含敏感信息,除非使用SSL来保护这些Cookie。最后,可以通过设置储存在Cookie中的值进行数据的传递,而需要对这些数据进行加密,防止被恶意利用。 以上就是PHP中关于Cookie的方方面面。Cookie是一个很有用的技术,不过他也有其缺点,比如一些浏览器的安全策略会拒绝Cookie,他不能承载过多的数据等等。在使用的时需谨慎。