我们需要创建的第一页称为login.php,因为它向用户提供了登录系统的机会。该页面的代码如程序清单27-2所示。
程序清单27-2 login.php——PHPbookmark系统的首页
<?php
require_once('bookmark_fns.php');
do_html_header('');
display_site_info;
display_login_form;
do_html_footer;
?>
这段代码看起来非常简单,它大部分是调用我们将要为这个应用程序所创建的函数API。
稍后,我们就可看到这些函数的详细信息。从这些文件我们可以看出已经包含了一个文件(也就是包含了一些函数),调用一些函数绘制一个HTML标题,显示一些内容,然后再绘制一个HTML页脚。
以上脚本的输出如图27-3所示。
图 27-3 PHPbookmark系统的首页由login.php中的绘制HTML的函数创建系统中的函数都包含在bookmark_fns.php文件中,如程序清单27-3所示。
程序清单27-3 bookmark_fns.php——包含Bookmark应用程序函数的文件
<?php
//We can include this file in all our files
//this way,every file will contain all our functions and exceptions
require_once('data_valid_fns.php');
require_once('db_fns.php');
require_once('user_auth_fns.php');
require_once('output_fns.php');
require_once('url_fns.php');
?>
可以看到,该文件就是本应用程序中将要使用到的5个其他包含文件的“容器”。设计成这样的结构是因为函数在逻辑上可以分为几组。这些组中的一些函数可能对其他项目有用处,因此我们将每个函数组保存不同的文件,这样就可以在再需要它们的时候知道到哪里去查找。创建bookmark_fns.php文件是因为在大部分脚本里都要用到这5个函数文件。在每个脚本里包含这一个文件而不是使用5个require语句,这样会更容易一些。
在这个例子中,我们使用的函数来自output_fns.php文件。这些函数相当直观,它们的输出都是非常明了的HTML。该文件包含了我们在login.php中使用的4个函数,即do_html_header、display_site_info、display_login_form和do_html_footer等。
本书不再深入讨论所有这些函数,只举例说明其中一个函数。do_html_header函数源代码如程序清单27-4所示。
程序清单27-4 output_fns.php文件中的函数do_html_header——
该函数输出在本应用程序的每个页面中都将出现的标准标题
function do_html_header($title){
//print an HTML header
?>
<html>
<head>
<title><?php echo$title;?></title>
<style>
body{font-family:Arial,Helvetica,sans-serif;font-size:13px}
li,td{font-family:Arial,Helvetica,sans-serif;font-size:13px}
hr{color:#3333cc;width=300px;text-align:left}
a{color:#000000}
</style>
</head>
<body>
<img src="bookmark.gif"border="0"
v/>
<h1>PHPbookmark</h1>
<hr/>
<?php
if($title){
do_html_heading($title);
}
}
可以看到,函数中唯一的逻辑是在页面中添加适当的标题。login.php中使用的其他函数与该函数类似。display_site_info函数添加一些关于网站的文本;display_login_form显示如图27-3所示的灰色表单;do_html_footer为页面添加一个标准的HTML页脚。
关于从主逻辑流中分离或删除HTML的意义,我们已经在第25章“在大型项目中使用PHP和MySQL”详细讨论过。在本章中,我们将介绍使用函数API方法。
在图27-3中,可以看到该页面有3个选择——用户可以注册、登录(如果已经注册)和修改密码(如果忘记了密码)。要实现这些模块,必须先了解下一节的用户身份验证。