백엔드 개발 PHP 튜토리얼 用cookies来跟踪识别用户_php基础

用cookies来跟踪识别用户_php基础

May 17, 2016 am 09:48 AM

让我们来看看保存在浏览器中的内容。如果你用的是IE5,在windows目录下有一个cookies的目录,里面有很多文本文件,文件名都是类似于wudong@15seconds[1].txt这样的,这就是浏览器用来保存值的cookies了。在以前的IE版本中,cookies的内容是可以察看的,但现在内容已经被编码了。在浏览器得到一个Web页面之前,它会先看这个页面的域名,是否在cookie中存在,如果有相比配的,浏览器会先把匹配的cookie传送到服务器,然后才接受处理服务器传送过来的页面。
  
  先举个cookies应用的例子:当我连接到Amazon.com时,浏览器在接受第一个页面之前会把它以前设置的cookies的内容传送给Amazon。然后Amazon.com对传送过来的内容加以检查,看看在数据库中有没有相关资料,在匹配之后,在为我建立一个定制的页面传送到过来。
  为cookies赋值
  
  必须在服务器传送任何内容给客户浏览器之前为Cookies赋值。要做到这一点,cookies的设置就必须放在

标签内:
    setcookie("CookieID",$USERID);
  ?>
  
  
  
  
  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字段的值:
  
    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的内容:
    print$CookieID;
  ?>
  然后,就可以把名字显示出来了:
    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],"!";
  ?>
  就是这样的了。我在其中没有作判断,交给你自己来完成好了  


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Laravel의 플래시 세션 데이터로 작업합니다 Laravel의 플래시 세션 데이터로 작업합니다 Mar 12, 2025 pm 05:08 PM

Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 Mar 14, 2025 am 11:42 AM

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

Laravel 테스트에서 단순화 된 HTTP 응답 조롱 Laravel 테스트에서 단순화 된 HTTP 응답 조롱 Mar 12, 2025 pm 05:09 PM

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> ​​'Hello World', 'github.com'=> ​​[ 'foo'=> 'bar'], 'forge.laravel.com'=>

PHP 로깅 : PHP 로그 분석을위한 모범 사례 PHP 로깅 : PHP 로그 분석을위한 모범 사례 Mar 10, 2025 pm 02:32 PM

PHP 로깅은 웹 애플리케이션을 모니터링하고 디버깅하고 중요한 이벤트, 오류 및 런타임 동작을 캡처하는 데 필수적입니다. 시스템 성능에 대한 귀중한 통찰력을 제공하고 문제를 식별하며 더 빠른 문제 해결을 지원합니다.

Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Mar 13, 2025 pm 12:08 PM

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

PHP에서 늦은 정적 결합의 개념을 설명하십시오. PHP에서 늦은 정적 결합의 개념을 설명하십시오. Mar 21, 2025 pm 01:33 PM

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법. 프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법. Mar 28, 2025 pm 05:12 PM

이 기사에서는 프레임 워크에 사용자 정의 기능 추가, 아키텍처 이해, 확장 지점 식별 및 통합 및 디버깅을위한 모범 사례에 중점을 둡니다.

See all articles