用cookies来跟踪识别用户

让我们来看看保存在浏览器中的内容。如果你用的是IE5,在windows目录下有一个cookies的目录,里面有很多文本文件,文件名都是类似于wudong@15seconds[1].txt这样的,这就是浏览器用来保存值的cookies了。在以前的IE版本中,cookies的内容是可以察看的,但现在内容已经被编码了。在浏览器得到一个Web页面之前,它会先看这个页面的域名,是否在cookie中存在,如果有相比配的,浏览器会先把匹配的cookie传送到服务器,然后才接受处理服务器传送过来的页面。
  
  先举个cookies应用的例子:当我连接到Amazon.com时,浏览器在接受第一个页面之前会把它以前设置的cookies的内容传送给Amazon。然后Amazon.com对传送过来的内容加以检查,看看在数据库中有没有相关资料,在匹配之后,在为我建立一个定制的页面传送到过来。
  为cookies赋值
  
  必须在服务器传送任何内容给客户浏览器之前为Cookies赋值。要做到这一点,cookies的设置就必须放在<HEAD>标签内:
  <?php
  setcookie("CookieID",$USERID);
  ?>
  <HTML>
  <BODY>
  </BODY>
  </HTML>
  setcookie函数一共有六个参数,用逗号来分隔:
  
  cookie的名称,是一个字符串,例如:"CookieID"。其间不允许有冒号,逗号和空格。这个参数是必须的,而其它的所有参数都是可选的。如果只有这一个参数被给出,那么这个cookie将被删除。
  
  cookie的值,通常是一个字符串变量,例如:$USERID。也可以为它赋一个??来略过值的设置。
  
  cookie失效的时间。如果被省略(或者被赋值为零),cookie将在这个对话期(session)结束后失效。这个参数可以是一个绝对的时间,用DD-Mon-YYHH:MM:SS来表示,比如:"24-Nov-9908:26:00"。而更常用的是设置一个相对时间。这是通过time()函数或者mktime函数来实现的。比如time()+3600将使得cookie在一个小时后失效。
  
  一个路径,用来匹配cookie的。当在一个服务器上有多个同名的cookie的设置,为避免混淆,就要用到这个参数了。使用"/"路径的和省略这个参数的效果是一样的。要注意的是Netscape的cookie定义是把域名放在路径的前面的,而PHP则与之相反。
  
  服务器的域名,也是用来匹配cookie的。要注意的是:在服务器的域名前必须放上一个点(.)。例如:".friendshipcenter.com"。因为除非有两个以上的点存在,否者这个参数是不能被接受的。
  
  cookie的安全级,是一个整数。1表示这个cookie只能通过“安全”的网络来传送。0或者省略则表示任何类型的网络都可以。
  
  Cookies和变量
  
  当PHP脚本从客户浏览器提取了一个cookie后,它将自动的把它转换成一个变量。例如:一个名为CookieID的cookie将变成变量$CookieID.
  
  Cookies的内容被报存在HTTP_COOKIE_VARS数组中,你还可以通过这个数组和cookie的名称来存取指定的cookie值:
  
  print$HTTP_COOKIE_VARS[CookieID];
  
  记住每一个用户
  
  回过头在来看看上面的submitform.php3文件,它的作用是把客户的姓名添加到数据库中,现在我想为它添加一些东西。我想为每个用户都分配一个唯一的用户标志,然后把这个标志放在Cookies中,这样每当用户访问我的网站的时候,通过cookie和其中的用户标志,我就能够知道他是谁了。
  
  MySQL能够被设置成为每一个新的纪录自动的分配一个数字,这个数字从1开始,以后每次自动加1。用一行SQL语句,你就可以轻松的为数据表添加这样的一个字段,我把它叫做USERID:
  ALTERTABLEdbname
  ADDCOLUMN
  USERIDINT(11)NOTNULL
  PRIMARYKEYAUTO_INCREMENT;
  
  对这个字段我们作了一些特别的设置。首先,通过“INT(11)”定义它的类型为11位的整数;然后用“NOTNULL”关键字让这个字段的值不能为NULL;再用“PRIMARYKEY”把它设置为索引字段,这样搜索起来就会更快;最后,“AUTO_INCREMENT”定义它为自动增一的字段。
  
  当把用户的姓名插入到数据库后,就应该在他们的浏览器上设置cookie了。这时利用的就是刚才我们谈到的USERID字段的值:
  
  <?php
  mysql_connect(localhost,username,password);
  mysql_select_db(dbname);
  mysql_query("INSERTINTOtablename(first_name,last_name)
  VALUES('$first_name','$last_name')
  ");
  setcookie("CookieID",
  mysql_insert_id(),
  time()+94608000,
  "/");/*三年后cookie才会失效*/
  ?>
  
  PHP函数mysql_insert_id()返回在最后一次执行了INSERT查询后,由AUTO_INCREMENT定义的字段的值。这样,只要你不清除掉浏览器的Cookies,网站就会永远“记住”你了
  
  读取cookie
  
  我们来写一个像Amazon.com所作的那样的脚本。首先,PHP脚本会先检查客户浏览器是否发送了cookie过来,如果是那样的话,用户的姓名就会被显示出来。如果没找到cookie的话,就显示一个表单,让客户登记他们的姓名,然后把他添加到数据库中,并在客户浏览其中设置好cookie。
  
  首先,先来显示cookie的内容:
  <?php
  print$CookieID;
  ?>
  然后,就可以把名字显示出来了:
  <?php
  mysql_connect(localhost,username,password);
  mysql_select_db(dbname);
  $selectresult=mysql_query("SELECT*FROMtablename
  WHEREUSERID='$CookieID'
  ");
  $row=mysql_fetch_array($selectresult);
  echo"欢迎你的光临",$row[first_name],"!";
  ?>
  就是这样的了。我在其中没有作判断,交给你自己来完成好了

(0)

相关推荐

  • 用cookies来跟踪识别用户

    让我们来看看保存在浏览器中的内容.如果你用的是IE5,在windows目录下有一个cookies的目录,里面有很多文本文件,文件名都是类似于wudong@15seconds[1].txt这样的,这就是浏览器用来保存值的cookies了.在以前的IE版本中,cookies的内容是可以察看的,但现在内容已经被编码了.在浏览器得到一个Web页面之前,它会先看这个页面的域名,是否在cookie中存在,如果有相比配的,浏览器会先把匹配的cookie传送到服务器,然后才接受处理服务器传送过来的页面. 先举个

  • .NET/C#实现识别用户访问设备的方法

    本文实例讲述了.NET/C#实现识别用户访问设备的方法.分享给大家供大家参考,具体如下: 一.需求 需要获取到用户访问网站时使用的设备,根据不同设备返回不同类型的渲染页面. 二.实现前准备 通过NuGet把UAParser程序包添加到项目中 三.实现 新建UAParseUserAgent类文件,在这个文件中进行实现. 实现代码如下: public class UAParserUserAgent { private readonly static uap.Parser s_uap; private

  • PHP实现通过get方式识别用户发送邮件的方法

    本文实例讲述了PHP实现通过get方式识别用户发送邮件的方法.分享给大家供大家参考.具体如下: send_email.php如下: <?php $conn=mysql_connect("localhost","root","admin"); mysql_select_db("songyunb_development",$conn); $id=$_GET["id"]; $sql="insert

  • Python中Cookies导出某站用户数据的方法

    应朋友需要,想将某客户的数据从某站里导出,先去某站搞个账号,建几条数据观察一番,心里有底后开搞. 1.Python环境搭建 之前电脑有安装过PyCharm Community 2019.1,具体安装过程就不写了,先跑个HelloWorld,输出正常后正式开整. 2.利用抓包工具或者Google浏览器调试模式拿到请求参数 Cookies参数如下: cookies = { 'JSESSIONID': 'XXX', 'phone': 'XXX', 'password': 'XXX', 'isAuto'

  • PHP 和 MySQL 基础教程(三)

    用 cookies 来跟踪识别用户 让我们来看看保存在浏览器中的内容.如果你用的是 IE5 ,在 windows 目录下有一个 cookies 的目录,里面有很多文本文件,文件名都是类似于 wudong@15seconds[1].txt 这样的,这就是浏览器用来保存值的 cookies 了.在以前的 IE 版本中, cookies 的内容是可以察看的,但现在内容已经被编码了.在浏览器得到一个 Web 页面之前,它会先看这个页面的域名,是否在 cookie 中存在,如果有相比配的,浏览器会先把匹配

  • PHP 之Section与Cookie使用总结

    SESSION与COOKIE区别: Session 将信息保存在服务器上.服务器在接受到唯一的SESSION_ID后,根据这个ID获取相关数据,然后将信息传递到客户端(浏览器). Cookie 是将所有信息以文本的形式存在本地文件,并由客户端(浏览器)进行管理与维护. 因为Session 数据存储在server端,所以远程client无法对数据进行修改;而Cookie存储在client本地,容易被获取和篡改.所以Session安全性较高. SESSION 介绍: PHP5 后session被设置

  • Laravel 中使用简单的方法跟踪用户是否在线(推荐)

    今天,我的任务是,在Laravel应用程序用户个人资料页面上,用户名旁边添加一个绿点,表示他们是否在线.我首先想到的是,我们将需要启动一个node.js服务器并跟踪每个用户的活动套接字连接.然后用当前登录的用户套接字,我们可以实时更新在线状态!唯一的问题是,这是我们目前的要求,有点超过顶部,并没有完全必要的,直到我们的功能,需要达到第二个准确性,如实时聊天. 一位同事指出,对于目前的需求,MySpace用来处理"在线"功能的方式可能就足够了.就我们所知,MySpace用来显示用户是否在

  • 详解Python Flask API 示例演示(附cookies和session)

    目录 一.概述 二.常用函数讲解 1)Flask() 函数 2)route() 函数 3)jsonify() 函数 4)render_template() 函数 5)redirect() 函数 6)url_for() 函数 7)before_request() 函数 8)after_request() 函数 9)abort() 函数 10)send_file() 函数 三.常用对象讲解 1)request 对象 2)session 对象 四.Flask 中的 cookies 与 session

  • ASP.NET在IE10中无法判断用户已登入及Session丢失问题解决方法

    今天发现在IE10中登录我公司的一个网站时,点击其它菜单,页面总会自动重新退出到登录页,后检查发现,IE10送出的HTTP头,和.AUTH Cookie都没问题,但使用表单验证机制(FormsAuthentication)却无法判断该用户已登入,保存的Session总会丢失. 后查实这是ASP.NET 2.0,3.5和4.0的Bugs,因这些版本无法识别IE10的User-Agent标头字符串,所以无法识别用户浏览器的版本,从而导至了ASP.NET的特定功能失效,认为游览器不支持Cookies功

  • PHP根据session与cookie用户登录状态操作类的代码

     1.用户登录状态操作类UserLogin <?php final class UserLogin { public function __construct() { } public static function getUserInfo() { if (isset($_COOKIE["user_id"])&&$_COOKIE["user_id"]&&(trim($_COOKIE["user_id"])!=

随机推荐