PHP--进行模块化设计

 更新时间:2016年11月25日 15:19  点击:1352
 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代码,从数据库或文件中提取并格式化数据,这些屏幕可根据其数量继续划分成各部分,这样比其他方法更有助于维护。第一屏的模块都与站点上可访问的页面相对应。根据页面在站点上出现的位置,可有相应的导航和布局。这样信息屏幕模块就成为选其余模块的关键。如网站的新闻发布系统。
  布局模块控制内容出现在页面的地方。内容的主要部分是屏幕模块的输出。当然也还会有其他内容如顶部导航和边部导航等,可能还在每页的页脚有著作权和一个基于文件的导航条。布局把所有这些全推出去。布局模块有两种变换方式。首先。可以在变换在什么地方放置元素以及选择那些东西来显示。索引页面一般与二级页面有不同的导航元素。同样第三极页面可能只有返回以前页面的链接。
 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"].

说明,同样适合于我们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"; //数据库用户
<HTML>
<HEAD>
<TITLE>有默认参数的函数</TITLE>
</HEAD>
<BODY>
<FONT SIZE=5>
<?
function printColored($Text, $Color="black")//定义function函数
{
print("<FONT COLOR="$Color">$Text</FONT>");//获取字符串的内容和颜色
}
printColored("这是黑颜色的字!");//调用function函数
print("<BR><BR> ");
printColored("这是蓝颜色的字!", "blue");//调用function函数
print("<BR> ");
?>
</SIZE>
</BODY>
</HTML>

[!--infotagslink--]

相关文章

  • photoshop设计一幅大鱼海棠动画片海报制作实例教程

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来说一说设计一幅大鱼海棠动画片海报制作的实例教程,各位想知道具体制作步骤的使用者们,那么各位就快来看看...2016-09-14
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • C语言程序设计第五版谭浩强课后答案(第二章答案)

    这篇文章主要介绍了C语言程序设计第五版谭浩强课后答案(第二章答案),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-04-02
  • Photoshop设计商务名片的5种常见思路分享

    今天小编在这里就来给Photoshop的这一款软件的使用者们来说下计商务名片的5种常见思路,各位想知道的使用者,那么下面就快来跟着小编一起看一看吧。 给各位Photosho...2016-09-14
  • WPF实现类似360安全卫士界面的程序源码分享

    最近在网上看到了新版的360安全卫士,感觉界面还不错,于是用WPF制作了一个,时间有限,一些具体的控件没有制作,用图片代替了。感兴趣的朋友一起跟着小编学习WPF实现类似360安全卫士界面的程序源码分享...2020-06-25
  • JavaScript模块化开发之SeaJS

    SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制,本文给大家介绍JavaScript模块化开发之SeaJS,需要的朋友参考下...2015-12-14
  • 浅谈JS前端模块化的几种规范

    这篇文章主要介绍了JS前端模块化的几种规范,对前端模块化感兴趣的同学,可以参考下...2021-05-04
  • Python运行提示缺少模块问题解决方案

    这篇文章主要介绍了Python运行提示缺少模块问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-10
  • photoshop安卓和苹果界面设计之尺寸规范详解

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来说下安卓和苹果的界面设计之尺寸规范,各位想知道的使用者们,那么下面就快来跟着小编一起看看吧。 给...2016-09-14
  • Perl模块编写说明

    这两天在用Perl编写一些监控脚本,其实写代码也是一件挺有意思的事情,就是挺废时间的。而且,由于语法不太熟,基本想到一个东西都要先Google一下看怎么实现。...2020-06-29
  • photoshop设计重影效果具体制作教程

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来说一说设计重影效果具体的制作教程,各位想知道具体制作方法的软件使用者们,那么大家就来看下小编带来的教...2016-09-14
  • Python PyPDF2模块安装使用解析

    这篇文章主要介绍了Python PyPDF2模块安装使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-04-22
  • Illustrator结合photoshop设计可爱的卡通女厨师头像制作教程

    今天小编在这里就来给Illustrator的这一款软件的使用者们来说一说结合photoshop设计可爱的卡通女厨师头像的制作教程,各位想知道具体制作步骤的使用者们,那么下面就快来...2016-09-14
  • PS怎么设计T恤 PS制作T恤教程

    PS怎么设计T恤?很多人都想要在T恤上有自己喜欢的图案,那么自己设计T恤的图案是方法之一,本次为大家带来了详细的ps设计T恤教程,有兴趣的同学快来看看吧。 1、打开PS,新...2016-12-31
  • photoshop设计一张节约用水环保主题海报制作教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来详细的说说设计一张节约用水环保主题海报的制作教程,各位想知道具体制作方法的使用者们,那么下面就快来跟着小...2016-09-14
  • c#通用登录模块分享

    这是一款简单的ASP.NETC#注册登录模块制作思路,非常简单实用,虽然没怎么考虑登陆的安全性,但作为C#的朋友学习交流使用。...2020-06-25
  • 如何通过Proxy实现JSBridge模块化封装

    这篇文章主要介绍了如何通过Proxy实现JSBridge模块化封装,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-23
  • c#实现51单片机频率计的代码分享(数字频率计设计)

    c#实现51单片机频率计的代码分享,大家参考使用吧...2020-06-25
  • Python xmltodict模块安装及代码实例

    这篇文章主要介绍了Python xmltodict模块安装及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-05
  • photoshop设计蜘蛛侠纹理文字效果制作教程

    今天小编在这里就来给给各位photoshop的这一款软件的使用者们来说一说设计蜘蛛侠纹理文字效果的制作教程,各位想知道具体制作步骤的使用者们,那么大家下面就来跟着小编...2016-09-14