3PHP实践PHP的许多特点与其他软件或者工具有关。利用迄今为止我们所学到的PHP知识,我们可以试着建立一个简单交互的网站。利用这一过程我们又可以学到不少东西。好吧,我们现在开始专注于一个典型个人网站的建设。3.1计划一个站点一般一个个人站点包括一个欢迎页面、一个留言本页面、一个书签链接页面、一个计数器、联系信息,甚至还有照片集和一些音乐文件等等。让我们从一个标题页面、一个联系信息页面和一个简历页面开始。我们同样需要标准的通用的页面头部和底部。标题页面–front.html这里我们有一个非常简单的html文件:

我的个人主页–欢迎

我的个人主页

欢迎


欢迎来我的寒舍,虽然这里现在暂时还没有什么。

不过我希望马上就可以多起来。


Copyright?我自己,1999联系信息页面–count.html同样我们又有了一个简单页面:

我的个人主页–联系信息

我的个人主页

联系信息


你可以通过1-800-PHP-INFO联系我


Copyright?我自己,19993.2HTML到PHP从上面你可以看出,每个页面有相同的头部和底部。像上面那样每个页面都写入相同的信息在工作量少的时候还可以,但是想象一下当有100多页面且你需要全部更改其头部或底部时你要花费多大精力?一页一页的手工更改是一件多么冗长无趣的事情啊!所以我们应该为这些页面编写PHP的头部和底部文件,之后我们只要在每个HTML页面中引用它们就行了。我们将把这些include文件放在一个叫include的子目录下。下面我们就把这些站点的通用内容写进文件中。全站通用变量设定:common.inc//全站通用变量$MyEmail=”phptalk@tnc.org”;$MyEmailLink=”$MyEmail”;$MyName=”PHPTalk”;$MySiteName=$MyName.”‘sHomePage”;?>通用页面头部:header.inc//定义通用页面头部?>


通用页面底部:footer.inc//通用页面底部?>


Copyright?by

,1999新的页面front.php3:

欢迎来我的寒舍,虽然这里现在暂时还没有什么。

不过我希望马上就可以多起来。

新的cont.php3:

你可以通过1-800-PHP-INFO联系我

现在你就可以猜出这样安排的好处了。如果你想改动页面的头部或者底部,你只需要改动相应的文件就可以了。如果你要修改你的e-mail地址甚至你的名字,只要修改common.inc文件就行了。另外值得注意的是你可以把具有任何文件名或者文件扩展名的文件包含进你的文件中,你甚至可以包含其他站点上的文件。3.3计数器让我们在首页上加上一个计数器。这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数。counter.inc包含以下代码:/*一个简单的计数器*/functionget_hitcount{/*将计数器归零这样如果计数器还未被使用,初始值将是1你当然也可以把初始值设成20000来骗人咯*/$count=0;//如果存放计数器文件已经存在,读取其中的内容if(file_exists{$fp=fopen;//我们只取了前20位,希望你的站点不要太受欢迎啊$count=0+fgets返回字符串,我们可以通过加0的方法将其自动转换为整数fclose;//对文件操作完毕}//增加一次计数值$count++;//将新的计数值写入文件$fp=fopen;fputs;fclose;#返回计数值return;}?>然后我们更改front.php3文件以显示这个计数器:

%06d
n”,get_hitcount;include;?>看看我们的新front.php33.4反馈表单让我们再添加一个反馈表单以便你的浏览者填写并e-mail给你。举例来说我们用一种很简单的方法实现它,我们只需要两个页面:一个为浏览者提供输入表单;一个获得表单数据并处理、mail给你。PHP中获取表单数据是很简单的。当一个表单被发送后,表单中所包含的各个元素被赋上了相应的值,而这样就可以像引用一般变量一样使用了。在process_form.php3中,变量$mytext就被赋予了输入的值–非常简单!同样的,你可以从列表框、多选框、单选框、按钮等表单元素中取得变量值。你唯一要做的就是为表单中的每一个元素取名以便将来可以引用。根据这个方法,我们可以生成一个简单的包含三个元素的表单:姓名、e-mail地址和留言。当浏览者发送表单后,处理该表单的PHP页面读取数据,检查姓名是否为空,最后将数据mail给你。表单:form.php3

Yourfeedbackonmyhomepage.

处理表单:sendfdbk.php3

Yournameissupposedtobereplacedwithyouractualname!”;}else{//输出一段礼貌的感谢语echo”Hello,$name.
Thankyouforyourfeedback.Itisgreatlyappreciated.
Thankingyou
$MyName
$MyEmailLink”;//最后mail出去mail($MyEmail,”Feedback.”,”Name:$nameE-mail:$emailComment:$comment”);}include;?>3.5简单的站内搜索引擎PHP可以调用外部程序。在Unix环境下我们可以利用程序grep实现一个简单的搜索引擎。我们可以做的稍微复杂一些:使用一个页面既输出一个表单供用户输入搜索字串又输出查询结果。

“METHOD=”POST”>”SIZE=”20″MAXLENGTH=”30″>

n”;//调用grep对所有文件进行大小写非敏感模式的查询$cmdstr=”grep-i$searchstr*”;$fp=popen;//执行命令并输出管道$myresult=array();//存储查询结果while($buffer=fgetss{//grep返回这样格式:文件名:匹配字串出现行数//因此我们利用函数split()分离处理数据list=split;//我们只输出第一次匹配的结果if(!defined$myresult[$fname]=$fline;}//现在我们将结果存储在数组中,下面就可以处理并输出了if{echo”

  1. $fname:$fline

n”;}else{//如果没有查询结果echo”Sorry.Searchon$searchstrreturnednoresults.
n”;}pclose;}?>

注释:PHP_SELF是PHP内建的变量。包含当前文件名。fgets字符长度。fgetss相似,只是解析输出的HTML标记。split()有一个参数是2,因为我们只需要把输出分成两部分。另外需要省略”:”。each()是一个数组操作函数,用来更方便的遍历整个数组。popen、fclose()的功能很相似,只是增加了管道处理。请注意以上的代码并不是实现一个搜索引擎的好办法。这只是有助于我们更好学习PHP而举出的一个例子而已。理想的情况是你应该建立一个包含关键字的数据库然后进行搜索。

发表评论

电子邮件地址不会被公开。 必填项已用*标注