PHP新手上路,从一个实例开始学习PHP

利用迄今为止我们所学到的PHP知识,建设一个简单交互的网站(一),一般一个个人站点包括一个欢迎页面、一个留言本页面、一个书签链接页面、一个计数器、联系信息,让我们从一个标题页面、一个联系信息页面和一个简历页面开始

建设一个简单交互的网站(一)

3 PHP实践
PHP的许多特点与其他软件或者工具有关。利用迄今为止我们所学到的PHP知识,我们可以试着建立一个简单交互的网站。利用这一过程我们又可以学到不少东西。好吧,我们现在开始专注于一个典型个人网站的建设。

  PHP的许多特点与其他软件或者工具有关。利用迄今为止我们所学到的PHP知识,我们可以试着建立一个简单交互的网站。利用这一过程我们又可以学到不少东西。好吧,我们现在开始专注于一个典型个人网站的建设。

3.1 计划一个站点
一般一个个人站点包括一个欢迎页面、一个留言本页面、一个书签链接页面、一个计数器、联系信息,甚至还有照片集和一些音乐文件等等。让我们从一个标题页面、一个联系信息页面和一个简历页面开始。我们同样需要标准的通用的页面头部和底部。

5.1 计划一个站点

标题页面–front.html

  一般一个个人站点包括一个欢迎页面、一个留言本页面、一个书签链接页面、一个计数器、联系信息,甚至还有照片集和一些音乐文件等等。  

这里我们有一个非常简单的html文件:
<HTML>
<HEAD>
<TITLE>
我的个人主页–欢迎
</TITLE>
</HEAD>
<BODY>
<H1>
我的个人主页
</H1>
<H2>
欢迎
</H2>
<HR>
<P>
欢迎来我的寒舍,虽然这里现在暂时还没有什么。
</P>
<P>
不过我希望马上就可以多起来。
</P>
<HR>
<P ALIGN=”CENTER”>
<SMALL> <I>
Copyright ? 我自己,1999
</I> </SMALL>
</P>
</BODY>
</HTML>

5.2 用include和require进行模块化

联系信息页面–count.html

  我们看一些用PHP构架的网站,几乎网站每一个页面的PHP文件里都会有include和require嵌入其间。这是因为使用include和require不但可增强代码的可读性,而且可将站点分成模块来管理。一般来说,对于一个网站上的每个页面肯定会有重复的内容。例如:页面头部的导航条、广告图标、或边部导航等。可能还在每页的页脚即页面的底部有著作权或一些基于文本的导航条。如果我们要修改一个包含成千上百个页面的大网站上的导航条或是徽标之类的内容,用我们以往的方法,我们只能遂一对每一页面进行更改。不用我说,大家也能想像到这是一件多么艰巨而痛苦的差事。那么,我们到底有没有更好的解决方法呢?答案是肯定的。我们可以将重复的内容都放到一个文件中,然后在每一个需要这些内容的页面上用PHP的include和require函数动态地调用该文件。这样,以后如果我们想对所有页面上的这些复用内容做修改时,就只需要更改包含了这些重复内容的文件。

同样我们又有了一个简单页面:
<HTML>
<HEAD>
<TITLE>
我的个人主页–联系信息
</TITLE>
</HEAD>
<BODY>
<H1>
我的个人主页
</H1>
<H2>
联系信息
</H2>
<HR>
<P>
你可以通过1-800-PHP-INFO联系我
</P>
<HR>
<P ALIGN=”CENTER”>
<SMALL> <I>
Copyright ? 我自己,1999
</I> </SMALL>
</P>
</BODY>
</HTML>

  为了便于大家理解,让我们先来看看include和require的一个简单应用:

3.2 HTML到PHP

HTML的页面开始,也许你会在站点的每页的头部包含它(head.htm)。
<HTML>
<HEAD>
<TITLE> 我的个人主页 </TITLE>
</HEAD>
<BODY>  

从上面你可以看出,每个页面有相同的头部和底部。像上面那样每个页面都写入相同的信息在工作量少的时候还可以,但是想象一下当有100多页面且你需要全部更改其头部或底部时你要花费多大精力?一页一页的手工更改是一件多么冗长无趣的事情啊!所以我们应该为这些页面编写PHP的头部和底部文件,之后我们只要在每个HTML页面中引用它们就行了。我们将把这些include文件放在一个叫include的子目录下。下面我们就把这些站点的通用内容写进文件中。

页面内容(content.htm)。  
<H1>
欢迎来我的寒舍,虽然这里现在暂时还没有什么。  
</H1>  

全站通用变量设定:common.inc
<?
// 全站通用变量
$MyEmail = “phptalk@tnc.org”;
$MyEmailLink = “<a
href=”mailto:$MyEmail”>$MyEmail</a>”;
$MyName = “PHP Talk”;
$MySiteName = $MyName.”‘s Home Page”;
?>

HTML的页面的结束(trail.htm)
</BODY>
</HTML>

通用页面头部:header.inc
<?
// 定义通用页面头部
?>
<HTML>
<HEAD>
<TITLE>
<? echo “$MySiteName – $title”; ?>
</TITLE>
</HEAD>
<BODY>
<H1>
<? echo “$MySiteName”; ?>
</H1>
<H2>
<? echo “$title”; ?>
</H2>
<HR>

用include和require函数把HTML从PHP中分离出来,将HTML和PHP分成模块:  
<?
/*
调用HTML页面的头部
*/
require(“head.htm”);
/*
调用HTML页面的内容
*/
require(“centent.htm”);
/*
调用HTML页面的尾部
*/
require(“trail.htm”);
?>

通用页面底部:footer.inc
<?
// 通用页面底部
?>
<HR>
<P ALIGN=”CENTER”>
<SMALL> <I>
Copyright ? by
<? echo “$MyName ($MyEmailLink)”; ?>
, 1999
</I> </SMALL>
</P>
</BODY>
</HTML>

5.3
让我们从一个标题页面、一个联系信息页面和一个简历页面开始。我们同样需要标准的、通用的页面头部和底部。  

新的页面front.php3:
<?
include(“include/common.inc”);
$title = “Welcome”;
include(“include/header.inc”);
?>
<P>
欢迎来我的寒舍,虽然这里现在暂时还没有什么。
</P>
<P>
不过我希望马上就可以多起来。
</P>
<?
include(“include/footer.inc”);
?>

标题页面–front.htm  
这里我们有一个非常简单的html文件:
<HTML>
<HEAD>
<TITLE>
我的个人主页–欢迎
</TITLE>
</HEAD>
<BODY>
<H1>
我的个人主页
</H1>
<H2>
欢迎
</H2>
<HR>
<P>
欢迎来我的寒舍,虽然这里现在暂时还没有什么。
</P>
<P>
不过我希望马上就可以多起来。
</P>
<HR>
<P ALIGN=”CENTER”>
<SMALL> <I>
Copyright ? 我自己,1999
</I> </SMALL>
</P>
</BODY>
</HTML>

新的cont.php3:
<?
include(“include/common.inc”);
$title = “Contact Information”;
include(“include/header.inc”);
?>
<P>
你可以通过1-800-PHP-INFO联系我
</P>
<?
include(“include/footer.inc”);
?>

联系信息页面–count.htm
同样我们又有了一个简单页面:
<HTML>
<HEAD>
<TITLE>
我的个人主页–联系信息
</TITLE>
</HEAD>
<BODY>
<H1>
我的个人主页
</H1>
<H2>
联系信息
</H2>
<HR>
<P>
你可以通过1-800-PHP-INFO联系我
</P>
<HR>
<P ALIGN=”CENTER”>
<SMALL> <I>
Copyright ? 我自己,1999
</I> </SMALL>
</P>
</BODY>
</HTML>

现在你就可以猜出这样安排的好处了。假如你想改动页面的头部或者底部,你只需要改动相应的文件就可以了。假如你要修改你的e-mail地址甚至你的名字,只要修改common.inc文件就行了。另外值得注重的是你可以把具有任何文件名或者文件扩展名的文件包含进你的文件中,你甚至可以包含其他站点上的文件。

5.4 从HTML到PHP

3.3 计数器

  从上面你可以看出,每个页面有相同的头部和底部。像上面那样每个页面都写入相同的信息在工作量少的时候还可以,但是想象一下当有100多页面且你需要全部更改其头部或底部时你要花费多大精力?一页一页的手工更改是一件多么冗长无趣的事情啊!所以我们应该为这些页面编写PHP的头部和底部文件,之后我们只要在每个HTML页面中引用它们就行了。在include和require函数中都包含一个PHP代码的文件,不管该文件的扩展名是什么,它都被当作是PHP文件。我们将把这些include文件放在一个叫include的子目录下,并取成以.inc为后缀的文件。下面我们就把这些站点的通用内容写进文件中。

让我们在首页上加上一个计数器。这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数。counter.inc包含以下代码:
<?
/*
|| 一个简单的计数器
*/
function get_hitcount($counter_file)
{
/* 将计数器归零
这样假如计数器还未被使用,初始值将是1
你当然也可以把初始值设成20000来骗人咯
*/
$count=0;
// 假如存放计数器文件已经存在,读取其中的内容
if ( file_exists($counter_file) )
{
$fp=fopen($counter_file,”r”);
// 我们只取了前20位,希望你的站点不要太受欢迎啊
$count=0 fgets($fp,20);
// 由于函数fgets()返回字符串,我们可以通过加0的方法将其自动转换为整数
fclose($fp);
// 对文件操作完毕
}
// 增加一次计数值
$count ;
// 将新的计数值写入文件
$fp=fopen($counter_file,”w”);
fputs($fp,$count);
fclose($fp);
# 返回计数值
return ($count);
}
?>
然后我们更改front.php3文件以显示这个计数器:
<?
include(“include/counter.inc”);
// 我把计数值放在文件counter.txt中,读出并输出
printf (“<CENTER><B> d</B></CENTER> <BR>
“,
get_hitcount(“counter.txt”));
include(“include/footer.inc”);
?>
看看我们的新front.php3

全站通用变量设定:common.inc
<?
// 全站通用变量
$MyEmail = “phptalk@tnc.org”;
$MyEmailLink = “<a href=”mailto:$MyEmail”>$MyEmail</a>”;
$MyName = “PHP Talk”;
$MySiteName = $MyName.”‘s Home Page”;
?>

3.4 反馈表单

通用页面头部:header.inc
<?
// 定义通用页面头部
?>
<HTML>
<HEAD>
<TITLE>
<? echo “$MySiteName – $title”; ?>
</TITLE>
</HEAD>
<BODY>
<H1>
<? echo “$MySiteName”; ?>
</H1>
<H2>
<? echo “$title”; ?>
</H2>
<HR>

让我们再添加一个反馈表单以便你的浏览者填写并e-mail给你。举例来说我们用一种很简单的方法实现它,我们只需要两个页面:一个为浏览者提供输入表单;一个获得表单数据并处理、mail给你。

通用页面底部:footer.inc
<?
// 通用页面底部
?>
<HR>
<P ALIGN=”CENTER”>
<SMALL> <I>
Copyright ? by  
<? echo “$MyName ($MyEmailLink)”; ?>
, 1999
</I> </SMALL>
</P>
</BODY>
</HTML>

新的页面front.php3:
<?
include(“include/common.inc”);
$title = “Welcome”;
include(“include/header.inc”);
?>
<P>
欢迎来我的寒舍,虽然这里现在暂时还没有什么。
</P>
<P>
不过我希望马上就可以多起来。
</P>
<?
include(“include/footer.inc”);
?>

新的count.php3:
<?
include(“include/common.inc”);
$title = “Contact Information”;
include(“include/header.inc”);
?>
<P>
你可以通过1-800-PHP-INFO联系我
</P>
<?
include(“include/footer.inc”);
?>

  现在你可以体会一下这样安排的好处了。如果你想改动页面的头部或者底部,你只需要改动相应的文件就可以了。如果你要修改你的e-mail地址甚至你的名字,只要修改common.inc文件就行了。另外值得注意的是你可以把具有任何文件名或者文件扩展名的文件包含进你的文件中,你甚至可以包含其他站点上的文件。