在PHP中使用cookie和会话

时间:2012-03-02 09:10:53

标签: php session cookies

当我使用我的凭据登录页面并离开该页面而没有注销时,下次我访问同一页面时我会再次自动登录。

这背后的机制是什么?如何使用PHP实现这一点?

2 个答案:

答案 0 :(得分:0)

会话和Cookie在 PHP Documentation 中都有各自的部分。

我会尽量简短地介绍一下每种方法的运作方式:

缓存

Cookie是以key = value格式保存到客户端计算机的文件,客户端可以通过两种方式保存cookie,

  1. 使用JavaScript代码声明时
  2. 从服务器发送为标题时
  3. 我们对#2感兴趣,您可以使用PHP发送cookie标头,请求客户端保存cookie(请注意,客户端可能会也可能不会实现此请求)。< / p>

    在下一个请求中,您可以使用$_COOKIE超全局检查客户端发送的cookie及其HTTP请求。

    会话

    会话是一组变量(以关联数组的形式),保存在服务器端,并与唯一会话ID 链接。该会话ID被发送到客户端(通常以cookie的形式)。当客户端然后从服务器请求页面时,它会发送会话ID以及请求。服务器读取它,并获取与ID关联的变量(通常来自文件或数据库),并将其设置为$_SESSION超全局。


    了解这一点可以帮助您弄清楚如何制作粘性登录系统。

答案 1 :(得分:0)

它只是一个简单的会话功能..对于Session,只需引用此链接

http://www.tizag.com/phpT/phpsessions.php

如果你想使用cookies ..使用这个概念..下面

 <html><head><script type="text/javascript">function getCookie(c_name){var i,x,y,ARRcookies=document.cookie.split(";");for (i=0;i<ARRcookies.length;i++)  {  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);  x=x.replace(/^\s+|\s+$/g,"");  if (x==c_name)    {     return unescape(y);    }  }}function setCookie(c_name,value,exdays){var exdate=new Date();exdate.setDate(exdate.getDate() + exdays);var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());document.cookie=c_name + "=" + c_value;}function checkCookie(){var username=getCookie("username");if (username!=null && username!="")  {  alert("Welcome again " + username);  }else   {  username=prompt("Please enter your name:","");  if (username!=null && username!="")    {   setCookie("username",username,365);    }  }}</script></head><body onload="checkCookie()"></body></html>