PHP使用指南,PHP使用指南-cookies部分

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中文网,转载请注明出处,感谢您的尊重!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python猜数字游戏猜n次_python实践项目四:猜数字游戏

1 #!/usr/bin/python 2 #-*- coding: UTF-8 -*- 3 4 importrandom5 secretNumberrandom.randint(1,20)6 print "Im thinking of a number between 1 and 20." 7 times 08 for i in range(1,7):9 print "Take a guess:" 10 guessint(input())11 if guess

使用Linux记录

更新时间: 2018-12-12 Linux Usage 缘起:最近将系统更换为Linux,虽然之前有用过,但只是当作尝试,未当为主系统,这次下定决心以它为主系统,懒得去纠结使用win的一种不道德感及不爽感,游戏及娱乐与…

使用java实现rfc3161,openssl验证用自签名证书签名的RFC3161时间戳

我使用openssl从rfc 3161 timestampreq生成了一个rfc3161 timestampresp。因此,我使用了自签名CA证书和自签名CA使用以下命令颁发的TSA证书:openssl ts -reply -queryfile request.tsq -signer TSAcert.pem -out response.tsr已创建响应。openssl ts -reply -text -in response…

halcon 旋转_Halcon视觉软件应该如何系统学习?

End 声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

java使用重复的类库,java list 去除 重复值

一:Hastset根据hashcode判断是否重复,数据不会重复Java代码/** List order not maintained **/public static void removeDuplicate(ArrayList arlList){HashSet h new HashSet(arlList);arlList.clear();arlList.addAll(h);}二:通过Hashset…

JavaScript--关于变量提升思考

下面例子仅仅是思考变量提升使用: 在实际开发中并不推荐使用相同名字的变量和函数! 1 // 如果变量和函数同名的话,函数优先提升 2 console.log(a); 3 function a() { 4 console.log(aaaaa); 5 } 6 var a 1; 7 console.log(a); 更多简单经典…

C++求复数的角度_【研读.教材分析】“勾股定理”教学——基于单元整体的角度再思考...

(西安市第八十六中学 刘丽丽)学科教学要注重知识的“生长点”和“延伸点”,把课时知识置于学科整体逻辑体系中,关注结构和通法,处理好局部与整体之间的关系。所以在北师大版八年级上册数学第一章《勾股定理》的备课中,我再次以问…

java 十进制 左移,java移位运算符之十进制转二进制

本次MS08-067严重漏洞各系统补丁地址如下:中文操作系统KB958644补丁下载地址:Windows Vista 安全更新程序 (KB958644)Windows Server 2008 x64 Edition 安全更新程序 (KB958644)Windows Server 2003 x64 Edition 安全更新程序 (KB958644)Windows Server …

angualr 单选全选方法(适用购物车/各种列表删除等)

Html部分&#xff1a; <table class"pay_attention_table"><thead><tr><!--ng-click"all(selectAll)"--><th class"c_aa w52"><input type"checkbox" class"mr4" ng-model"selectObj…

vc++64位系统下long的长度为4个字节_Java与系统硬件的亲密接触「伪共享」

作者&#xff1a;码洞来源&#xff1a;https://zhuanlan.zhihu.com/p/32764602在解释【伪共享】这个概念之前&#xff0c;我们先来运行一段代码&#xff0c;小编的电脑上有4个core。这个程序的逻辑是4个线程共享同一个数组读写不同下标的变量。每个线程循环1亿次读写&#xff0…

快捷登录PHP,phpcms 微信快捷登陆

上一篇文章&#xff0c;给大家分享了关于微信授权登陆功能&#xff0c;今天给大家分享一个微信快捷登陆的实际用例。phpcms接入微信快捷登陆第一步&#xff0c;在login方法中&#xff0c;判定是否使用微信浏览器访问&#xff0c;如果是&#xff0c;发起授权申请if ( strpos($_S…

linux 端口号查看

linux 端口号查看netstat -anp |grep 端口号最后一列是端口号转载于:https://www.cnblogs.com/ditmark/p/7669804.html

pwm波如何控制电机代码_PWM波控制720电机

详细方案四&#xff1a;pwm与720电机控制电机硬件分析什么是电机&#xff1f;电机(俗称"马达")是指依据电磁感应定律实现电能转换或传递的一种电磁装置。它的主要作用是产生驱动转矩&#xff0c;作为用电器或各种机械的动力源。其中本四轴采用的电机是直流电机。直流…

php里的stdclass,PHP中的stdClass是什么?

stdClass是另一个很好的PHP特性。您可以创建一个匿名PHP类。让我们检查一个例子。$pagenew stdClass();$page->nameHome;$page->status1;现在&#xff0c;假设您有另一个类&#xff0c;它将使用页面对象初始化并在其基础上执行。<?phpclass PageShow {public $curre…

arduino使用oled代码_【惊不?】Arduino改造古董卡西欧计算器为作弊神器

一台朴实无华的计算器&#xff0c;卡西欧牌。看起来和千万学子们所使用的计算器一样&#xff0c;没什么特别的&#xff0c;还带着一些陈旧的使用痕迹。但如果你用磁铁碰一下&#xff1a;咦&#xff0c;简直像打开了探险电影里的神秘机关&#xff0c;右上角的太阳能电池板部分居…

什么都没学到,记录一个鼠标监听事件吧

textField.addMouseListener(new MouseAdapter() { //鼠标在textField中时&#xff0c;改变btnNewButton的文本内容 貌似我的概念是混乱的&#xff0c;用控件乱用哈&#xff0c;哈哈 public void mousePressed(MouseEvent e) { btnNewButton.setText("按下鼠标&qu…

matlab实现id3,MATLAB简单实现ID3

再看《MATLAB数据分析与挖掘实战》&#xff0c;简单总结下今天看到的经典的决策树算法——ID3.ID3&#xff1a;在决策树的各级节点上&#xff0c;使用信息增益的方法作为属性的选择标准&#xff0c;来帮助确定生成每个节点时所应采取的合适属性。关于信息增益&#xff0c;知乎上…

python字符串数组_python将字符串转换成数组的方法

Python这篇文章主要介绍了Python __setattr__、 __getattr__、 __delattr__、__call__用法示例,本文分别对这几个魔法方法做了讲解,需要的朋友可以参考下 ... junjie4882019-11-22 Python这篇文章主要介绍了Python实现list反转的方法,实例总结了关于list的各种较为常见的操作技…

团队项目介绍

身为该团队的项目负责人&#xff0c;简单介绍下我们团队的项目以及分工。 我们团队共有10个人&#xff0c;团队名称&#xff1a;Eastwood。 团队项目&#xff1a;开发一个网页&#xff0c;里面包含几个小游戏&#xff0c;通过玩的游戏判断人的性格。 团队项目开始日期&#xff…

python fillna,Pandas之Fillna填充缺失数据的方法

约定&#xff1a;import pandas as pdimport numpy as npfrom numpy import nan as NaN填充缺失数据fillna()是最主要的处理方式了。df1pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])df1代码结果&#xff1a;01201.02.03.01NaNNaN2.02NaNNaNNaN38.08.0NaN用常数…