php使用指南-cookies部分

在这课教程我们将学习怎样利用 PHP 处理cookies,我将试着使事情尽可能简单地去解释cookies的一些实际应用。

什么是cookies及作用?

cookies是由web服务器产生的并且存在客户端的一些信息。它嵌在html信息中,由服务器端指定,在客户端及服务器端间传递信息

。它通常用来:用户网页个性化,计数器,储存被浏览站点的信息等。

cookies和php

在 PHP中用cookies是相当容易的。可以使用setcookie函数设置一个cookie。cookie是 HTTP标头的一部分, 因此设置cookie功能必须在任何内容送到浏览器之前。这种限制与header()函数一样。任何从客户端传来的cookie将自动地转化成一个PHP变量。PHP取得信息头并分析, 提取cookie名并变成变量。因此,如果你设置cookie如setcookie("mycookie","wang");php将自动产生一个名为$mycookie,值为"wang"的变量.

先让我们复习一下setcookie函数语法:

setcookie(string CookieName, string CookieValue, int CookieExpireTime, path, domain, int secure);

PATH:表示web服务器上的目录,默认为被调用页面所在目录

DOMAIN:cookie可以使用的域名,默认为被调用页面的域名。这个域名必须包含两个".",所以如果你指定你的顶级域名,你必须用".mydomain.com"

SECURE:如果设为"1",表示cookie只能被用户的浏览器认为是安全的服务器所记住

应用:

对于一个需要注册的站点,将自动识别用户的身份,并发送给它信息,如果是陌生人,将告诉他请先注册。我们按下面给出的信息创建一个小型数 据库:名字(first name),姓(last name),email地址(email address),计数器(visit counter).

按下面步骤建表:

MySQL> create database users;

Query OK, 1 row affected (0.06 sec)

mysql> use users;

Database changed

mysql> create table info (FirstName varchar(20), LastName varchar(40),

email varchar(40), count varchar(3));

Query OK, 0 rows affected (0.05 sec)

好,现在有了符合要求的表,我们可以建一个php页面对照数据库检查cookies.

########################index.php##################################

if (isset($Example)) { //Begin instructions for existing Cookie

$info = explode("&", $Example);

$FirstName=$info[0];

$LastName=$info[1];

$email=$info[2];

$count=$info[3];

$count++;

$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;

SetCookie ("Example",$CookieString, time()+3600); //设一新的cookie

echo"

wang example

Hello $FirstName $LastName, this is your visit number: $count

Your email address is: $email

";

mysql_connect() or die ("PRoblem connecting to DataBase"); //update DB

$query = "update info set count=$count where FirstName='$FirstName' and

LastName='$LastName' and email='$email'";

$result = mysql_db_query("users", $query) or die ("Problems .... ");

} //End Existing cookie instructions

else { //Begin inctructions for no Cookie

echo "

Rafi's Cookie example

Click Here for Site Registration

";

} //End No Cookie instructions

?>

注意:如果你用的是一个远程mysql服务器或unix服务器,你应用下面语句

mysql_connect ("server","username","passWord") or die ("Problem connecting to DataBase");

我们想检查是否一个被指定名字的cookie在html头部分传送,记住,php能转换可识别的cookie为相应的变量,所以我们能检查一个名为"Example" 的变量:

if (isset($Example)) { //Begin instructions for existing Cookie

...

} else {

...

}

如果这个cookie存在,我们将计数器加一,并打印用户信息,如果这个cookie不存在,我们建议用户先注册

如果cookie存在,我们执行下面步骤:

if (isset($Example)) { //Begin instructions for existing Cookie

$info = explode("&", $Example); //split the string to variables

$FirstName=$info[0];

$LastName=$info[1];

$email=$info[2];

$count=$info[3];

$count++;

$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;

SetCookie ("Example",$CookieString, time()+3600); //setting a new cookie

echo"

wang example

Hello $FirstName $LastName, this is your visit number: $count

Your email address is: $email

";

mysql_connect() or die ("Problem connecting to DataBase"); //update DB

$query = "update info set count=$count where FirstName='$FirstName' and

LastName='$LastName' and email='$email'";

$result = mysql_db_query("users", $query) or die ("Problems .... ");

} //End Existing cookie instructions

上面的程序有3个主要部分:首先取得cookie值,用explode函数分成不同的变量,增加计数器,并设一新cookie.接着用html语句输出用户信息。最后,用新的计数器值更新数据库。

如果这个cookie不存,下面的程序将被执行:

else { //Begin inctructions for no Cookie

echo "

Rafi's Cookie example

Click Here for Site Registration

";

} //End No Cookie instructions

下面reg.php简单列出到注册页面的链接

#############################reg.php#############################

Registering the Site

Registering the site

User Name:maxlength=20>

Last Name:maxlength=40>

email addrress:maxlength=40>

在所有的信息被提交后调用另一php文件分析这些信息

##############################reg1.php####################################

if ($FirstName and $LastName and $email)

{

mysql_connect() or die ("Problem connecting to DataBase");

$query="select * from info where FirstName='$FirstName' and

LastName='$LastName' and email='$email'";

$result = mysql_db_query("users", $query);

$r=mysql_fetch_array($result);

$count=$r["count"];

if (isset($count)) {

$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;

SetCookie ("Example",$CookieString, time()+3600);

echo "

user $FirstName $LastName already exists. Using the existing

info.";

echo "

Back to Main Page";

} else {

$count = '1';

$query = "insert into info values

('$FirstName','$LastName','$email','$count')";

$result = mysql_db_query("users", $query);

$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;

SetCookie ("Example",$CookieString, time()+3600);

echo "Thank you for registering.

";

}

} else { echo "Sorry, some information is missing. Please go back and add all

the information"; }

?>

首先检查所有的信息是否按要求填写,如果没有,返回重新输入

if ($FirstName and $LastName and $email)

{

...

} else { echo "Sorry, some information is missing. Please go back and add all

the information"; }

?>

如果所有信息填好,将执行下面:

mysql_connect() or die ("Problem connecting to DataBase");

$query="select * from info where FirstName='$FirstName' and

LastName='$LastName' and email='$email'";

$result = mysql_db_query("users", $query);

$r=mysql_fetch_array($result);

$count=$r["count"];

if (isset($count)) {

$count++;

$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;

SetCookie ("Example",$CookieString, time()+3600);

echo "

user $FirstName $LastName already exists. Using the existing

info.";

echo "

Back to Main Page";

} else {

$count = '1'; //new visitor - set counter to 1.

$query = "insert into info values

('$FirstName','$LastName','$email','$count')";

$result = mysql_db_query("users", $query);

$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;

SetCookie ("Example",$CookieString, time()+3600);

echo "Thank you for registering.

";

这段程序做了几件工作:它检查数据库是否有这样一个用户(如果没有,也就是说,这个cookie已被删除),如果有,它指定旧的信息,并用当前的信息建一新的cookie,如果同一用户没有数据库登录,新建一数据库登录,并建一新的cookie.

首先,我们从数据库中取回用户登录详细资料

mysql_connect() or die ("Problem connecting to DataBase");

$query="select * from info where FirstName='$FirstName' and

LastName='$LastName' and email='$email'";

$result = mysql_db_query("users", $query);

$r=mysql_fetch_array($result);

$count=$r["count"];

现在检查是否有一计数器为这用户,利用isset()函数

if (isset($count)) {

...

} else {

...

}

计数器增加并新建一cookie

$count++; //increase counter

$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;

SetCookie ("Example",$CookieString, time()+3600);

echo "

user $FirstName $LastName already exists. Using the existing info.";

echo "

Back to Main Page";

如果没有一用户计数器,在mysql中加一记录,并设一cookie

注意:在任何时候,setcookie放在输送任何资料到浏览器之前,否则得到错误信息

以上就介绍了PHP使用指南-cookies部分,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

PHP使用指南,PHP使用指南-cookies部分相关推荐

  1. 安全牛:“新一代SOC研究报告”之市场指南及技术指南点评

    在2017年8月9日,国内知名的企业级信息安全市场的专业新媒体--安全牛--发布了"新一代SOC研究报告"之市场指南及技术指南.在指南正式发布之前,7月份的阿里安全峰会(以后改成& ...

  2. python编程入门指南-编程入门指南

    编程入门指南 ----------------------------------------------- 编程入门指南 v1.5 --- https://zhuanlan.zhihu.com/p/ ...

  3. keras安装与配置指南_Keras-快速指南

    keras安装与配置指南 Keras-快速指南 (Keras - Quick Guide) Keras-简介 (Keras - Introduction ) Deep learning is one ...

  4. 黑莓开发人员必读资料 - BlackBerry - 开发指南- 手册和指南

    下面两个内容是一样的,中文版本翻译的也相当不错. 如果全部浏览一遍太麻烦,那么开发的时候可以随时搜索. 搜索方法:Google啦,比如要在开发指南里面搜索sqlite,你就搜索下面的字符串 开发指南 ...

  5. mysql 指南_MySQL-快速指南

    mysql 指南 MySQL-快速指南 (MySQL - Quick Guide) MySQL-简介 (MySQL - Introduction) 什么是数据库? (What is a Databas ...

  6. autocad .net开发指南_就业指南||职路明灯(二十)

    " 让我们走进新一期的就业指南, 寻找适合你的工作吧! 01 宝略科技(浙江)有限公司 招聘职位:GIS开发工程师 工资待遇:6-8千/月 学历要求:本科 招聘人数:3人 岗位职责: 1.负 ...

  7. java初学者指南_Java初学者指南

    java初学者指南 Java编程的第一步. 对于Java中的入门教程,请参阅Sun的官方帮助这里 除了核心语言外,还有几种技术和API 介绍. 我们建议首先阅读涵盖 基础知识,并继续其余的教程. 我们 ...

  8. mysql指南_MySQL入门指南

    MySQL入门指南,希望对大家用处!! 一.SQL速成 以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册. 1.创建表 表是数据库的最基本元素之一,表与 ...

  9. mysql数据库权威指南_MySQL_MySQL权威指南读书笔记(三),第二章:MYSQL数据库里面的数 - phpStudy...

    MySQL权威指南读书笔记(三) 第二章:MYSQL数据库里面的数据 用想用好MYSQL,就必须透彻理解MYSQL是如何看待和处理数据的.本章主要讨论了两个问题:一是SQL所能处理的数据值的类型:二是 ...

最新文章

  1. 程序猿小白应该注意什么
  2. linux wm虚拟机网络,复制多台虚拟机及简单的网络配置
  3. python常用函数-python常用魔法函数
  4. FPGA 之 VGA的IP核编写
  5. 【STM32】FreeRTOS列表和列表项详解
  6. HYSBZ - 2160 拉拉队排练(回文自动机)
  7. python打包工具报错_python打包生成exe报错
  8. Nutch1.2二次开发详细攻略(一)【图文】------Windows平台下Cygwin环境的搭建
  9. 梅花雨的日历控件在ASP.NET2.0下不可用的解决方法
  10. python访问字符串中的部分字符的操作_小白学Python-13(字符串基础与简单操作)...
  11. 搭建自己的病毒扫描系统clamav-原版教程
  12. 开机未发现nvidia控制面板_nvidia控制面板打不开如何解决_nvidia控制面板点了没反应...
  13. btsync 分享资源
  14. matlab卷积代码,卷积的Matlab代码实现
  15. 基于javaweb宠物领养平台管理系统设计和实现
  16. 一年级上册计算机教学计划,一年级上学期教学计划
  17. pygame UI 框架
  18. Mac 维修前的准备工作你都知道吗?
  19. 玻色量子与华夏、人行、龙盈智达联合发表量子金融研究成果
  20. Vue-实现商品放大镜效果

热门文章

  1. 基于Java+jsp+servlet的养老院管理系统设计和实现《收藏版》
  2. oracle10g支持数据泵么,Oracle 10g使用数据泵(EXPDP和IMPDP)。
  3. html如何创建关键帧动画旋转,[教程] 用 CSS3 Animations(动画) 和 Keyframes(关键帧) 创建简单的网页动画 – CSS3 实现弹跳球动画...
  4. 计算机虚拟现实技术论文好写吗,虚拟现实技术的论文
  5. 没有bug队——加贝——Python 练习实例 35,36
  6. linux vim 到底,真的有(很多)linux大牛用vim写项目吗?
  7. leetcode combinations java_[LeetCode][Java] Combinations
  8. php熊掌号怎么设置json-ld,dedecms织梦系统对接百度熊掌号并添加JSON_LD数据
  9. dsp实现快速傅里叶的C语言程序,DSP-快速傅立叶变换(FFT)算法实验
  10. 鸿蒙分布式通讯子系统,【鸿蒙】分布式通信子系统--让华为手机发现Hi3861开发板...