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中文网,转载请注明出处,感谢您的尊重!
PHP使用指南,PHP使用指南-cookies部分相关推荐
- 安全牛:“新一代SOC研究报告”之市场指南及技术指南点评
在2017年8月9日,国内知名的企业级信息安全市场的专业新媒体--安全牛--发布了"新一代SOC研究报告"之市场指南及技术指南.在指南正式发布之前,7月份的阿里安全峰会(以后改成& ...
- python编程入门指南-编程入门指南
编程入门指南 ----------------------------------------------- 编程入门指南 v1.5 --- https://zhuanlan.zhihu.com/p/ ...
- keras安装与配置指南_Keras-快速指南
keras安装与配置指南 Keras-快速指南 (Keras - Quick Guide) Keras-简介 (Keras - Introduction ) Deep learning is one ...
- 黑莓开发人员必读资料 - BlackBerry - 开发指南- 手册和指南
下面两个内容是一样的,中文版本翻译的也相当不错. 如果全部浏览一遍太麻烦,那么开发的时候可以随时搜索. 搜索方法:Google啦,比如要在开发指南里面搜索sqlite,你就搜索下面的字符串 开发指南 ...
- mysql 指南_MySQL-快速指南
mysql 指南 MySQL-快速指南 (MySQL - Quick Guide) MySQL-简介 (MySQL - Introduction) 什么是数据库? (What is a Databas ...
- autocad .net开发指南_就业指南||职路明灯(二十)
" 让我们走进新一期的就业指南, 寻找适合你的工作吧! 01 宝略科技(浙江)有限公司 招聘职位:GIS开发工程师 工资待遇:6-8千/月 学历要求:本科 招聘人数:3人 岗位职责: 1.负 ...
- java初学者指南_Java初学者指南
java初学者指南 Java编程的第一步. 对于Java中的入门教程,请参阅Sun的官方帮助这里 除了核心语言外,还有几种技术和API 介绍. 我们建议首先阅读涵盖 基础知识,并继续其余的教程. 我们 ...
- mysql指南_MySQL入门指南
MySQL入门指南,希望对大家用处!! 一.SQL速成 以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册. 1.创建表 表是数据库的最基本元素之一,表与 ...
- mysql数据库权威指南_MySQL_MySQL权威指南读书笔记(三),第二章:MYSQL数据库里面的数 - phpStudy...
MySQL权威指南读书笔记(三) 第二章:MYSQL数据库里面的数据 用想用好MYSQL,就必须透彻理解MYSQL是如何看待和处理数据的.本章主要讨论了两个问题:一是SQL所能处理的数据值的类型:二是 ...
最新文章
- 程序猿小白应该注意什么
- linux wm虚拟机网络,复制多台虚拟机及简单的网络配置
- python常用函数-python常用魔法函数
- FPGA 之 VGA的IP核编写
- 【STM32】FreeRTOS列表和列表项详解
- HYSBZ - 2160 拉拉队排练(回文自动机)
- python打包工具报错_python打包生成exe报错
- Nutch1.2二次开发详细攻略(一)【图文】------Windows平台下Cygwin环境的搭建
- 梅花雨的日历控件在ASP.NET2.0下不可用的解决方法
- python访问字符串中的部分字符的操作_小白学Python-13(字符串基础与简单操作)...
- 搭建自己的病毒扫描系统clamav-原版教程
- 开机未发现nvidia控制面板_nvidia控制面板打不开如何解决_nvidia控制面板点了没反应...
- btsync 分享资源
- matlab卷积代码,卷积的Matlab代码实现
- 基于javaweb宠物领养平台管理系统设计和实现
- 一年级上册计算机教学计划,一年级上学期教学计划
- pygame UI 框架
- Mac 维修前的准备工作你都知道吗?
- 玻色量子与华夏、人行、龙盈智达联合发表量子金融研究成果
- Vue-实现商品放大镜效果
热门文章
- 基于Java+jsp+servlet的养老院管理系统设计和实现《收藏版》
- oracle10g支持数据泵么,Oracle 10g使用数据泵(EXPDP和IMPDP)。
- html如何创建关键帧动画旋转,[教程] 用 CSS3 Animations(动画) 和 Keyframes(关键帧) 创建简单的网页动画 – CSS3 实现弹跳球动画...
- 计算机虚拟现实技术论文好写吗,虚拟现实技术的论文
- 没有bug队——加贝——Python 练习实例 35,36
- linux vim 到底,真的有(很多)linux大牛用vim写项目吗?
- leetcode combinations java_[LeetCode][Java] Combinations
- php熊掌号怎么设置json-ld,dedecms织梦系统对接百度熊掌号并添加JSON_LD数据
- dsp实现快速傅里叶的C语言程序,DSP-快速傅立叶变换(FFT)算法实验
- 鸿蒙分布式通讯子系统,【鸿蒙】分布式通信子系统--让华为手机发现Hi3861开发板...