首页 > 编程技术 > php

Cookie的作用

发布时间:2016-11-25 15:19

 1.记录访客的某些信息。例如可以利用Cookie纪录用户光临你的网页次数,
或者访客曾经输入过的信息,某些网站(如网易社区)可以自动纪录你上次登录
的用户名,用的就是Cookie。
  2.在页面之间传递变量。浏览器并不会保存当前页面上任何变量信息的,当
页面被关闭,页面上的任何变量信息将随之消失。如果你在一个页面有一个变量
a = 5,要把这个变量传递到另外一页,可以使用 http://url?a=5 方式传递变
量,或者在网页中插入一个表单,并在表单中插入一个隐含域(input hidden
field),以POST/GET方式传递到下一页。另外一种方式就是使用Cookie,把变
量以Cookie形式保存下来,然后在下一页通过读取该Cookie来获得变量的值。
注意:Cookie一定要在其他Header之前发送出去,否则出错!
下面一个纪录某访客来访次数的例子:
<?
$HTTP_COOKIE_VARS["VisitTimes"]?($VisitTimes ++):($VisitTimes = 1);
setcookie("VisitTimes",$VisitTimes,time()+31536000);
echo "<b>欢迎你第<font color="#FF0000"> ".$VisitTimes.
" </font>光临我的主页</b><br> ";
?>
程序运行的结果如本页最顶所示(刷新一下看看访问的次数是否变化)。
PHP的Cookie函数为:
int setcookie(string name, string value, int expire, string path,
string domain, int secure);
string name
cookie 的名字
string value
cookie 的值
int exprie
cookie 的有效期,标准的 Unix timestamp
string path,domain
cookie 的路径和域名
int serure
cookie 是否以安全的http方式传送
  其中,除了参数 string name是必须的,其他参数均为可选。int expire 是
1970年1月1日00:00到某个时间的之间的秒差值。它的默认值为0,也就是说浏览
器关闭了cookie 将自动被删除。上面例子中有效期为一年(365*24*3600=31536000)。
再次重申:cookie 一定要在网页的其他header之前被发送,否则出错!!
Cookie 被设置之后,要读取其值,有两个方法:
直接把 cookie 的名字作为变量名字,即$name。
使用$HTTP_COOKIE_VARS["name"].


如何使用PHP获取网络上文件
<!-- generateindex.php -->
<?php
//设置我们将要使用的文件
$srcurl = "http://localhost/index.php";
$tempfilename = "tempindex.html";
$targetfilename = "index.html";
?>
<HTML>
<HEAD>
<TITLE>
Generating <?php echo("$targetfilename"); ?>
</TITLE>
</HEAD>
<BODY>
<P>Generating <?php echo("$targetfilename"); ?>...</P>
<?php
//首先删除上次操作可能遗留下来的临时文件。
//这个过程可能会提示错误,所以我们使用@以防止报错。
@unlink($tempfilename);
//通过一个URL的请求装入动态版本。
//在我们接收到相关内容之前,Web服务器会对PHP进行处理
//(因为本质上我们是在模拟一个Web浏览器),
//所以我们将获得的是一个静态的HTML页面。
//'r'指出我们只要求对这个“文件”进行读操作。
$dynpage = fopen($srcurl, 'r');
//处理错误
if (!$dynpage) {
echo("<P>Unable to load $srcurl. Static page ".
"update aborted!</P>");
exit();
}
//将这个URL的内容读入到一个PHP变量中。
//指定我们将读取1MB的数据(超过这个数据量一般是意味着出错了)。
$htmldata = fread($dynpage, 1024*1024);
//当我们完成工作后,关闭到源“文件”的连接。
fclose($dynpage);
//打开临时文件(同时在这个过程中建立)以用来写入(注意'w'的用法).
$tempfile = fopen($tempfilename, 'w');
//处理错误
if (!$tempfile) {
echo("<P>Unable to open temporary file ".
"($tempfilename) for writing. Static page ".
"update aborted!</P>");
exit();
}
//将静态页面的数据写入到临时文件中
fwrite($tempfile, $htmldata);
//完成写入后,关闭临时文件。
fclose($tempfile);
//如果到了这里,我们应该已经成功地写好了一个临时文件,
//现在我们可以用它来覆盖原来的静态页面了。
$ok = copy($tempfilename, $targetfilename);
//最后删除这个临时文件。
unlink($tempfilename);
?>
<P>Static page successfully updated!</P>
</BODY>
</HTML>

 PHP中的include和require中的两个函数,能在网站的设计中提高网站的建设效率与维护,现详细讲解如下:
  include 函数与C中同名的预处理命令是不同的,它是一个给出文件名(如:include("test.php")),PHP就把文件调用于include的位置,并方试图解释该文件,它与函数的差别在于,只有执行include语句时,代码才被解析,因此在设计中通常在if语句中包含调用来得用这一优点;而require H数则总是包含了指定的文件,即使它位于if 语句中不被执行的地方。大家可以在PHP邮件列表的讨论中可以看见到这个问题:即require比include要快,因为PHP可以在通读代码的前期就可将指定文件插入到脚本中。所以在程序设计中若将一个文件包含在一个控制块中(如:if,switch,while,for),则用include,而其它情况就使用requirc 函数。
  为什么我们应在PHP程序中使用include 和require呢?首先,首先是因为这样使代码可读性更好,其次是它可将站点分成 模块,这使得可以使在网站的设计中你只要编写了要复用的脚本,便可以在整个站点的建设及以后项目中复用,而不需要你重复工作,极大的提高了工作效率。许多web站点必须依赖一些重复的要素,如始终如一的导航条,它可以方便用户操作,但却给建设和维护站点D来很大问题。每一页都有必须重复的代码块贴在上面。把它做成模块并在每一个需要的页面中include or rquire 它,当需要修改时只需要修改一次即可,即只修改include的脚本模块即可。所以在一个网站的建设中,应该分析站点那部分是重复的?然后把重复的代码写成模块。如下是对站点模块划分的一种方式:
0、信息屏幕 1、数据库和文件动作 2、H数 3、布局 4、导航条。
现详细措述如下:
  网站的核心是它所含的信息页面,其它的东西都是点缀。屏幕上显示的可以是HTML,也可以是PHP代码,从数据库或文件中提取并格式化数据,这些屏幕可根据其数量继续划分成各部分,这样比其他方法更有助于维护。第一屏的模块都与站点上可访问的页面相对应。根据页面在站点上出现的位置,可有相应的导航和布局。这样信息屏幕模块就成为选其余模块的关键。如网站的新闻发布系统。
  布局模块控制内容出现在页面的地方。内容的主要部分是屏幕模块的输出。当然也还会有其他内容如顶部导航和边部导航等,可能还在每页的页脚有著作权和一个基于文件的导航条。布局把所有这些全推出去。布局模块有两种变换方式。首先。可以在变换在什么地方放置元素以及选择那些东西来显示。索引页面一般与二级页面有不同的导航元素。同样第三极页面可能只有返回以前页面的链接。
说明,同样适合于我们PHPer啊!
首先声明,
1 本人不是什么asp高手,本人只是菜鸟
2 本文不是给程序员和高手看的,是给喜欢asp的业余爱好者共同探讨的
3 本人的学习方法并不一定正确,请自行斟酌
本人毕业于山东医科大学,五年的临床医学,出来以后干了医生,后来学习asp,想起学习的时候,那些日子是比较苦,但是挺有意思。
开始的时候学习程序只是爱好,学习asp已经将近两年了,这两年里,没有老师,只有一本从书店里买的书,可是因为没有电脑程序基础,看来看去什么也看不懂。最后一咬牙,从网上当了几个asp程序,然后从头硬着头皮一点一点的读。最早当的是 动站的fso文章更新系统,因为之前,我就对静态网页htm有一定了解,发现有一部分能看懂,有一部分看不懂,看不懂的地方就经常对照,研究,看看这个界面,这个看不懂的部分到底能实现什么功能,然后和其他界面比较。开始是死记硬背,后来慢慢竟然懂了一点,后来就可以自行修改,再往后,自己编写一点小程序也是没有问题了。
我的感觉
1 asp需要程序基础,但是因为asp相对比较单纯,很多东西都比较局限,所以没有程序基础的人学习asp也是可能的(当然能不能成为高手就很难讲了)
2 学习需要毅力和爱好,没有这两点,也是不可能学好程序的
3 学习asp能自己解决的东西,不要轻易去问别人,从网上去当其他的程序,他们是最好的老师,在学习过程中,我没有认识什么高手(主要是没有这个福分,高手都不理我这种菜鸟),问题都是自己解决。自己解决的问题,印象最深刻
4 不要总想着去问别人要程序来自己用,要是要程序的话,也是修改修改再修改,在修改中学习,一旦一个程序被你修改了50%以上(我是指内容,不是htm界面)这个程序的思路和里边的语法你一定会基本掌握了。
5 试着搞一点自己的原创的东西:比如说留言本,一开始可以用一个简单的留言本做框架,然后慢慢的增加自己想到的功能,慢慢升级,在升级中学习。
6 如果想学好程序,要有如下打算:
被女友或者老婆骂(当然,我是假设你是男朋友),要做好装聋作哑的准备
上班打盹
你的asp技术也会不断的提高...
当然,这个社会光是有asp技术也是不一定有用的,很多文盲可能比我们挣钱更多...

域名转向系统的关键技术在于:实现Web页面的重定向(Redirctory)。在本质上,域名转向系统和虚拟机系统完全不同。虚拟机的虚拟域名和IP是存在一一对应关系的。而域名转向系统不需要将域名和IP做一一映射。也就是说,它根本不需要复杂的域名解析机制和虚拟机来完成,它所做的事情就是当你在请求*.yourdomain时,将你的浏览器重新定向到你存放Html页面的实际地址。
下面我们一步一步实现域名转向系统:
(假设你的域名是www.mydomain.com 主机地址是 196.0.0.1)。
首先我们要设置DNS把 *.mydomain.com 指向我们的主机地址 196.0.0.1。(如果你没有自己的DNS服务器你可以跳过这步分并与您的域名服务商联系请他们帮你把*.mydomain.com指向196.0.0.1)
win2000的DNS管理工具不允许把主机名称直接填写为*也就是说我们在win2000DNS管理工具里无法直接把*.mydomain.com指向同一个IP地址。但我们可以通过更改winntsystem32dnsmydomain.dns这个文件来实现。此文件以文本格式保存,我们可以通过写字板将其打开。
我们需要在末尾处加入一条 * A 196.0.0.1 的记录。
我们在WIN2000的DNS管理工具里更新服务器数据文件。你会发现mydomain.com域里多出了我们本来无法直接添加的主机“*”。(注意:几小时后您所做的DNS设置才会生效。)
为了这个域名转向系统可以运行在多平台下我们选择php+mysql制作程序部分,请检查你的web服务器是否安装了php和mysql:
我们用index.htm读出浏览器送出的HTTP头信息送给dns.php,dns.php查询数据库得到转向地址并返回给客户端。
建立mysql数据库mydomain
CREATE TABLE dns (
main char(60),
link char(255)
)
main用来保存*.mydomain.com的*部分
link用来保存域名对应的转向地址。
建立index.htm:
<script>
this.location ="dns.php?url="+this.location.href;
</script>
有的朋友会问为什么不用php的GetAllHeader()函数取得浏览器送出的HTTP头信息。因为函数GetAllHeader()只支持Apache的web服务器,相信大多数win2000用户使用iis服务器。考虑到兼容性的问题我们选择使用JavaScript读出浏览器送出的HTTP头信息。
建立dns.php文件:
<?
$domain="mydomain.com"; //域名
$database="mydomain" //数据库
$datauser="root"; //数据库用户
标签:[!--infotagslink--]

您可能感兴趣的文章: