Heim  >  Artikel  >  Backend-Entwicklung  >  PHP会话跟踪一(41)

PHP会话跟踪一(41)

WBOY
WBOYOriginal
2016-08-08 09:23:05838Durchsuche

PHP会话跟踪

什么是会话控制

我们需要一种强有力的解决方案,为了使得网站可以跟踪客户端与服务器之间的交互,保存和记忆每个用户的身份和信息,这样就产生了会话控制。
??什么是会话控制:
??HTTP是一个无状态的协议,此协议无法来维护两个事务之间的联系。
??当一个用户请求一个页面后再请求另外一个页面时,HTTP无法告诉我们这两个请求是来自同一个人。
??会话控制思想就是能够在网站中跟踪一个变量,我们可以跟踪变量,就可以做到对用户的支持,并根据授权和用户身份显示不同内容,不同页面。

会话跟踪技术

隐藏表单域

将会话跟踪字段的隐藏表单域添加到HTML 页面,但是不会显示在客户端浏览器中



在GET 和POST 方法中指定用于存储有关会话消息的名称和值。

URL 重写

??URL(统一资源定位)重写技术将一个唯一的会话ID 添加到URL 结尾,以标识该会话。
??例如,重写以下URL 传递会话ID=1002

原始URL:http:<span>//</span><span>www.myphp.com/load.php</span>用添加的参数重写的URL:http:<span>//</span><span> www.myphp.com/load.php? id=1002原始URL:</span><span>http://www.myphp.com/bookinfo.php</span>用添加的参数重写的URL:http:<span>//</span><span>www.myphp.com/bookinfo.php?bookid=1000</span>

cookie和session

当我们需要会话可以跟踪的范围更广,时间更长,我们需要用到cookie和session。比如在有些网站下载东西需要会员先登陆。我们想得知顾客是否已经登陆,并可以进行自动登陆怎么办呢?cookie和session就可以知道。
??比如网上购物,购物车怎么知道顾客挑选过哪些商品呢?cookie和session也可以记录。
??总而言之,cookie和session就是能够记录顾客状态的技术,尽管二者属于不同的技术,但只要cookie能做到的,session也能做到!

cookie

什么是cookie:
??cookie是在http协议下,服务器或脚本可以维护客户端信息的一种方式。
??cookie是web服务器保存在用户浏览器上的小甜饼(一个很小的文本文件),她可以包含有关用户的信息,常用于保存用户名,密码,个性化设置,个人偏好记录等。当用户访问服务器时,服务器可以设置和访问cookie的信息。
??cookie保存在客户端,通常是IE或Firefox浏览器的cookie临时文件夹中,可以手动删除。注意:如果浏览器上cookie 太多,超过了系统所允许的范围,浏览器也会自动对它进行删除。

cookie工作原理

当客户访问某个基于PHP技术的网站时,在PHP中可以使用setcookie()函数生成一个cookie,系统经处理把这个cookie发送到客户端并保存在C:\Documents and Settings\用户名\Cookies目录下。
??cookie是HTTP标头的一部分, 因此setcookie()函数必须在HTML本身的任何内容送到浏览器之前调用。这种限制与header()函数一样(如需了解head()函数,请自行查阅)。
??当客户再次访问该网站时,浏览器会自动把C:\Documents and Settings\用户名\Cookies目录下与该站点对应的cookie发送到服务器,服务器则把从客户端传来的cookie将自动地转化成一个PHP变量。在PHP5中,客户端发来的cookie将被转换成全局变量。你可以通过$_COOKIE[‘xxx’]读取。

定义一个cookie

设置cookie:
??语法:boolsetcookie(stringname,[stringvalue,[intexpire,[stringpath,[stringdomain,[intsecure]]]]]);
本cookie函数可以有6个属性,常用的有3个参数。
??实例:
$value="the best way is by yourself";
setcookie("cookiename",$value,time()+60*60*24*7);

setcookie参数解释

接收和处理cookie
PHP对cookie有很好的支持,和form表单一样,在接收的时候PHP会自动从web服务器接收HTTP头并且分析它。接收的时候和表单接收一样,用$_COOKIE[“cookiename”]或者$HTTP_COOKIE_VARS[“cookiename”](不提倡使用)

注意:
如果网站有几个不同的文件目录,使用不带路径的cookie,那么只能在设置cookie的文件所在路径下访问到此cookie。如果指定路径,则按照设置时的路径作为访问cookie的指定路径。

创建cookie数组:

其一:
setcookie("CookieArray[0]", "Value 1");
setcookie("CookieArray[1]", "Value 2");
其二:
setcookie("CookieArray['one']", "Value 1");
setcookie("CookieArray['two']", "Value 2");

setcookie() 中使用数组

<span>php
setcookie(</span><span>"</span><span>cookie[three]</span><span>"</span>, <span>"</span><span>cookiethree</span><span>"</span><span>);
setcookie(</span><span>"</span><span>cookie[two]</span><span>"</span>, <span>"</span><span>cookietwo</span><span>"</span><span>);
setcookie(</span><span>"</span><span>cookie[one]</span><span>"</span>, <span>"</span><span>cookieone</span><span>"</span><span>);
</span><span>//</span><span> 刷新页面后,显示出来</span><span>if</span> (isset($_COOKIE[<span>'</span><span>cookie</span><span>'</span><span>])) {
</span><span>foreach</span>($_COOKIE[<span>'</span><span>cookie</span><span>'</span>] <span>as</span> $name =><span> $value){
echo </span><span>"</span><span>$name : $value <br>\n</span><span>"</span><span>;
}
}
</span>?>

删除cookie

要删除一个已经存在的cookie,有两个办法:
1、调用只带有name参数的setcookie,那么名为这个
  name的cookie将被从客户机上删掉;
  setcookie(“MyCookie”); //删除MyCookie
2、设置Cookie的失效时间为time()或time()-1,注意:
  time()减多少没有关系啦,只要是过期时间就行,那
  么这个Cookie在这个页面的浏览完之后就被删除了
  (其实是失效了)。
??例如:
setcookie(“MyCookie”,”Value”,time()-1);
  //删除MyCookie。
  要注意:当一个Cookie被删除时,它的值在当前页仍然
  有效。如果要把cookie设置成在浏览器关闭后就失效。
  那么可以直接把expiretime设为0,或者不设置此值。
例如:setcookie(“name”,”value”,0)。

cookie注意事项

1、setcookie()之前不能有任何html输出,就是空格,空白
行都不行,必须在html文件的内容输出前设置
??2、setcookie()后,你在当前页调用echo $_COOKIE[“name”]不会有输出。必须刷新或到下一个页面才可以看到cookie值。
•3、不用浏览器对cookie处理不同。客户端可以禁用cookie,浏览器也会限制cookie的数量。一个浏览器能创建的cookie数量最多为300个,并且每个不能超过4KB,每个WEB站点能设置的cookie总数不能超过20个。
??4、cookie是保存在客户端的,用户禁用了cookie,你的cookie自然也就没作用啦!因此,避免过度依赖cookie,要先想好如果cookie被禁用时的解决方案,以备万一

以上就介绍了PHP会话跟踪一(41),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn