PHP-COOKIE和会话
导航: 上一页 | ASP | PHP | JSP | HTML | CSS | XHTML | aJAX | Ruby | JAVA | XML | Python | ColdFusion
使用CooKie[ ]
设置CooKie[ ]
cookie是服务器在用户的机器上存储信息的一种方式。利用这种方式,站点可以在访问期间记住或跟踪用户。一些人对cookie心存疑虑,因为它们认为cookie允许服务器知道太多的事情。不过,cookie只能用于存储提供給服务器的信息,因此,与大多数其它在线技术相比,cookie的安全性并不差。
关于cookie要理解的最重要的事情是,必须在任何其它信息之前把它们从服务器发送给客户,万一服务器试图在WEB浏览器已经接收到HTML之后发送cookie,就会导致一条错误信息,并且不会发送cookie。
通过setcookie函数发送cookie:
setcookie(name,value);
例:sertcookie('first_name','Larry');//把cookie发送到浏览器时,带有名字first_name和值Larry.
与在PHP中使用任何变量时一样,在给cookie命名时,不要使用空白或标点符合,但是,要特别注意使用正确的大小写字母。
访问CooKie[ ]
设置好cookie后,要从cookie中检索一个值,只需要把合适的cookie名称用作键来引用$_COOKIE超全局数组,例如,从如下代码建立的cookie中检索一个值:
setcookie('username','Trout');
将使用$_COOKIE['username']获得这个值。
设置CooKie参数[ ]
尽管只把名称和值传递给setcookie()函数就足够了,还应该知道其它可用的参数,该函数还可以带有最多另外4个参数,其中每一个都会改变cookie的定义。
setcookie('name','value',expiration,'path','domain',secure);
到期时间(expireation)参数用于设置cookie存在的精确限定的时间长度,从新纪元(1970年1月1日)起所经过的秒数表示。如果没有设置它,cookie将持续起作用,直到用户关闭了浏览器,通常情况下,通过在当前时刻上增加特定的分钟数或小时数来确定到期时间,可以使用time()函数获取当前时间,下面一行代码将把cookie的到期时间设置为当前时间后1小时:setcookie('name','value',time()+3600.'/admin/');
最后,安全值规定只应该通过安全的HTTPS连接来发送cookie,1表示必须使用安全的链接,0表示标准连接也不错.
setcookie('name','value',time()+3600,'/admin/',' ',1);
与带有参数的所有函数一样,必须俺顺序传递setcookie()值,要跳过任何参数,可以使用NULL或空字符串,到期时间和安全这两个值都是整数,因此,不能使用引号括住它们。
删除CooKie[ ]
如何删除一个cookie,虽然,关闭用户的浏览器时或者在到达日期/时间时cookie会自动到期,但是,有时你希望手动删除cookie,例如,在具体注册用户和登录能力的WEB站点内,可能希望在用户注销时删除任何cookie。
尽管setcookie()函数可以带6个参数,实际上只有一个参数是必须的,如果发送一个包含名称但没有值的cookie,其效果就相当于删除现在的同名cookie,例如,要创建first_name的cookie,使用如下代码:
setcookie('first_name','Larry');
要删除first_name的cookie,可以编写如下代码:
setcookie('first_name');
一种附加的预防措施是,你还可以把到期日期设置成过去的某个日期:
setcookie('first_name',,time()-300);
使用会话[ ]
设置会话变量[ ]
使数据可供web站点上的多个页面使用的另一种方法是使用会话,会话假定数据存储在服务器上,而不是在web浏览器上,会话标识富用于定位特定用户的记录(会话数据)。这个会话标识符通常通过cookie存储在用户的web浏览器中,但是,敏感的数据本身--如用户的ID,姓名等,总是保存在服务器上。
关于会话的最重要的规则是,将会使用它们的每个页面首先都必须调用session_start()函数,这个函数告诉PHP开启一个新的会话,或者访问一个现有的会话。
第一次使用session_start()函数时,它会试图发送一个cookie,名称为PHPSESSID(会话名称),由于试图发送一个cookie,所以在把任何数据发送到Web浏览器之前,必须先调用seesion_start(),这与使用setcookie()和header()这两个函数时的情况一样。一旦启用了会话,就可以使用以下语句把值注册到会话中:
$_SESSION['key']='value';
$_SESSION['name']='Jessica';
$_SESSION['id']=48;
访问会话变量[ ]
一旦启动了会话,并向期注册了变量,就可以创建将访问这些变量的其它脚本,为了执行该操作,每个脚本首先必须再次使用session_start()来启动会话。
这个函数将允许当前脚本访问以前启动的会话(如果它可以读取cookie中存储的PHPSESSID值),或者创建一个新的会话(如果不能读取这个值)这种情况下,它将不能访问存储的值,因为将会创建新的会话,引用会话变量,可以使用$_SESSION['var'],就像你引用任何其它数组一样。