2005年12月18日

Simple Place工作室

 通过前面几期的介绍,相信大家对ASP和PHP已经较熟悉了,不过谈到动态主页的制作,自然也少不了JSP,目前,JSP与ASP、PHP成为互联网上三大主流动态网页开发语言。JSP的英文全称为JavaServer Pages,它是Sun公司在Java推出不久后为了完善Java语言的应用层面而推出的,一经推出便风靡全球。那么,JSP如何安装与配置,它和ASP、PHP相比又有哪些优势与不足,我们该如何选择呢?要充分了解一种技术并不是件很容易的事情,不过,多多实践总会有收获,下面我们就从JSP的安装开始吧。
 
1.JSP的安装与配置

 如果你对PHP的安装比较熟悉,那么安装JSP就很简单了。以Windows 2000 Professional为例,首先我们登录网站http://java.sun.com的“Popular Downloads”栏目去下载最新的Java 2 SDK,Standard Edition 1.4.2,软件大小为48.2MB。

 上面还只是JSP的安装程序包,要让JSP正常运行,还需要下载JSP引擎。这里推荐使用目前最成熟的免费软件Tomcat,它可是有口皆碑啊,你可以直接从Tomcat的中国镜像站点下载,地址为http://apache.linuxforum.net/dist/jakarta/tomcat-5/v5.0.16/bin/jakarta-tomcat-5.0.16.zip,软件大小为11.5MB。

 好了,我们首先安装JDK,默认安装位置为C:\J2sdk1.4.2。安装完成之后,还需要对Java的环境变量进行设置。打开控制面板,选择“系统”功能,然后切换到“高级”页,打开“环境变量”设置窗口(图1)。在系统变量中我们新建一个名为CLASSPATH的变量,变量值为C:\J2sdk1.4.2\lib\tools.jar; C:\J2sdk1.4.2\lib\dt.jar,再新建一个名为JAVA_HOME的变量,变量值为C:\J2sdk1.4.2,接着编辑一个名为PATH的变量(如果你的系统中没有这个变量,那么还要按照上面的方法添加此变量),在变量值的最后面加上C:\J2sdk1.4.2\bin,记住要用半角分号把添加的值与原来的值隔开。

 接下来安装Tomcat。

 第一步:将Jakarta-tomcat-5.0.ta-tomcat目录下(当然你也可以选择其他目录)。

 第二步:进入D:\Jakarta-tomca\bin目录,使用记事本编辑Startup.bat批处理文件。在文件最开始的@echo off处加入以下两行,注意不要加入不可见字符:

 set CATALINA_HOME=D:\Jakarta-tomcat
 set JAVA_HOME=C:\J2sdk1.4.2

 同时也要记住把这两行加入到Shutdown.bat批处理文件中同样的位置中去。

 第三步:双击Startup.bat启动Tomcat服务器,这时会出现一个名为Tomcat的窗口,并有一些初始化信息,证明Tomcat运行成功(图2)。注意这个窗口不要关掉,关掉它Tomcat就停止运行了,另外我们还可随时在这个窗口中看到系统运行的状态及程序出错的信息,便于我们更好地调整服务器。如果我们想停止Tomcat服务,也不要直接关掉这个窗口,而应该运行Shutdown.bat批处理文件。

 第四步:在浏览器上输入http://localhost:8080,注意Tomcat默认使用端口8080作为它的服务端口,在浏览器里如果能看到Tomcat Version 5.0.16这一页就表示Tomcat安装成功了(图3)。上面有一些JSP和Servlet的例子,你也可直接通过这些例子进行学习,至此JSP环境搭建工作就已经完成了。
 
2.掌握JSP的基本语法

 其实JSP与Java语言同根同族,自然非常接近。如果你对Java很熟悉,那么使用JSP就会易如反掌了,如果你是菜鸟,也不要害怕,下面就为你介绍一下JSP中需要注意的一些基本语法。

 说起来,JSP中的特色主要就是编译器指引与指令组件,它有5种形态。JSP 1.0之后,大部分JSP是包含在以“<%”作为开始,“%>”作为结束的单一成对卷标里。新的JSP 1.1规格已经发表了,它同时也与XML兼容,下表列出了这几种卷标:
 
 编译器指示  <%@ 编译器指示 %>
 声明 <%! 声明 %>
 表达式 <%= 表达式 %>
 程序代码段/小型指令  <% 程序代码片段 %>
 注释 <%– 注释 –%>
 
 ①编译器指示

 JSP的编译器指示是针对JSP引擎的,它们并不会直接产生任何看得见的输出,相反,它们是在告诉引擎如何处理其它的JSP网页。JSP的编译器指示永远包含在<%@ %>卷标里,两个主要的指引是Page与Include,你几乎可以在所有的JSP网页最上面找到Page编译器指示。例如,<%@ page errorPage="errorP-age.jsp" %>表示当发生Java问题的事件时应该将信息传送到哪里。而Include编译器指示可让你将网页内容分成几个可管理的部分,就像那些有表头或脚注的网页,所包含的网页可以是固定格式的HTML或JSP内容的网页(比如一个数据库链接信息文件),例如<%@ include file="dbconnect.jsp" %>
 
 ②声明

 JSP声明让你定义网页中的变量,用来储存信息或定义支持的函数,让JSP网页的其余部分能够使用。记住要在变量声明的后面加上分号,就跟任何有效的Java叙述形式一样,例如<%! int i=0; %>。
 
 ③表达式

 JSP像其他语言一样有表达式,表达式的结果可以转换成字符串并直接使用在输出的网页上。<%= i %>(输出i的值),<%= "Hello" %>(输出Hello字符串)。
 
 ④程序代码段/小型指令文件

 JSP程序代码片段或小型指令文件包含在<% %>卷标里,当网络服务器接受这段请求时,这段Java程序代码就会被执行。小型指令文件可以是原始的HTML或XML,其内部程序代码片段可让你建立有条件的执行程序代码,或只是一些使用另一块程序代码的东西。举例来说,下列的程序代码结合了表达式与小型指令文件,在H1、H2、H3及H4标记里显示字符串“Hello”。

 <% for (int i=1; i<=4; i++) { %>
 <H<%=i%>>Hello</H<%=i%>>
 <% } %>
 
 ⑤注释

 最后一个重要的JSP组件是嵌入式注释。为了不让其他人看到你的批注,你可以将它放在<%– –%>卷标里,对程序做一个清楚的注释始终是一个好习惯。
 
3.JSP风暴设计

 语言不是问题,活学活用才是关键,下面我们就一起来体会一下JSP,来一次“风暴设计”。这次给大家介绍的本身就是一个名为“风暴设计”的留言簿,目前版本是v1.0,参考下载地址为:http://www.china-code.net/cc.asp?id=5834&cc=38fcc83b9ecca865644d 4e5ad821f765055c0d59&syzf=8787bd8f 617d97fef51695f3bfc030efd6a47852(680kB)。

 打开压缩文件,进入一级一级的目录,直到可以看到JSP程序文件为止,我们把这些程序文件以及Face和Images两个文件夹解压到D:\Jakarta-tomcat\webapps\ROOT\guestbook目录下(注意Tomcat默认webapps\ROOT是系统的根目录)。然后进入到刚刚解压出来的WEB-INF\classes目录中,可以看到一个名为MyJsp的目录,把这个目录整体复制到D:\Jakarta-tomcat\webapps\ROOT\WEB-INF\classes中(根目录中的WEB-INF\classes是存放JavaBean的,刚才的MyJsp目录存放的就是留言系统所使用的JavaBean)。

 接下来我们进行数据库设置,打开“控制面板”→“管理工具”→“数据源”,添加新的Access数据源,名为Guestbook,指向系统所在目录的Guestbook.mdb文件(图4),当然也可改用别的名字作数据源,但是要修改MyJsp\dbconn.java文件。

 到了这一步,我们打开浏览器输入地址http://localhost:8080/guestbook/,看看能不能出现如图5所示的页面呢?如果看到了,那么恭喜,你的留言簿系统已经安装完成了,以后网站访客就可以通过点击右面的“签写留言”图标来给你留言了,而你则可通过点击菜单栏上的“站长管理”进入管理界面来管理留言簿。记住登录管理界面的默认用户名是kuflash,密码是school。登录成功后在每条留言上都多了两个选项,一个是删除,一个是恢复,这就是交给你的两项管理任务,你可以及时回答访客提出的问题,可以通过删除对他们言论进行整理。
 
4.ASP、PHP和JSP的选择

 到目前为止,已经有ASP、PHP和JSP三种动态网页技术摆在我们的面前,但我们到底应该选择哪一种呢。其实这个问题一直也是各路网页高手不断争论的焦点,仁者见仁嘛。通过笔者长期使用积累的一些经验,在这里也谈一下个人的想法,希望能给你提供帮助。

 ①ASP

 由于是微软开发的产品,ASP到目前为止仍然是动态主页开发人群应用最广的技术。ASP更精确的说是一个中间件,这个中间件将Web上的请求转入到一个解释器中,在这个解释器中将所有ASP的Script进行分析后执行,这时可在这个中间件中创建一个新的COM对象,同时再通过这些COM组件完成更多的工作。所以说,ASP的强大并不在于它的VBScript,而在于它后台的COM组件,这些组件无限扩充了ASP的能力。 
 
 优势

 A.简单易学。ASP是建立在Basic语言基础上的一门脚本语言,在互联网上有大量的ASP源代码供大家学习,上手很快。

 B.与Windows操作系统无缝集成。在Windows操作系统上,你只要安装IIS就可直接使用ASP了,入门门槛低。

 C.扩展性好。ASP使用COM组件技术可无限扩充ASP的能力,实现各种意想不到的功能。
 
 软肋 

 A.Windows本身的问题都会一成不变地也加到它身上,安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来。 

 B.由于ASP还是一种Script语言,除了大量使用组件外,没有办法提高其工作效率。

 C.无法实现跨操作系统的应用。
 
 ②PHP

 PHP流行的一个很重要原因是因为有一个青梅竹马的伙伴——Apache。两个都是公开源代码的产品,大家可以使用它们的源代码将这两个产品用最完美的方式结合到一起,使用起来就如一个产品一样。PHP是一个纯粹的Script翻译器,所以它是将Script翻译成为需要执行的函数,再去执行它们。 
 
 优势

 A.能快速学习、跨平台、有良好的数据库交互能力。PHP几乎支持所有的操作系统和数据库系统,语法简单、书写容易,同时Internet上也有大量的代码可供学习。 

 B.与Apache及其它扩展库结合紧密,这种方式最大化利用了CPU和内存,同时极为有效地利用了Apache高性能的吞吐能力。

 C.良好的安全性。由于PHP本身的代码开放,所以其代码在许多工程师手中进行了检测,同时它与Apache编译在一起的方式也可以让它具有灵活的安全设定,它的安全性在业界有口皆碑。
 
 软肋

 A.安装复杂。成熟的PHP环境都是运行在FreeBSD/Linux/Unix下,而且需要安装大量的扩展库,对于普通用户来说,这样的安装过程本身就是一种负担。 

 B.缺少企业级的支持。没有组件的支持,同时难以将集群、应用服务器这样的特性加入到系统中去,而一个大型的站点或一个企业级的应用却一定需要这样的支持。

 C.缺少正规的商业支持。这也是自由软件一向的缺点,不过随着国内PHP开发人员的不断增加,相信在不久的将来,这样的支持能多起来。 

 D.无法实现商品化应用的开发。由于PHP所有的开发都是基于脚本技术来完成的,所以所有的源代码都无法编译,完成的应用只能是自己或内部使用,无法实现商品化。 
 
 ③JSP

 实际上JSP就是一个特别的Java语言,加入了一个特殊的引擎,这个引擎将HTTPServlet这个类的一些对象自动进行初始化好让用户使用,同时又引入了<jsp:*、<%@等一系列的特别语法。所以说,Java有什么功能JSP也有,与ASP一样,JSP的真正力量我们永远也看不到头! 
 
 优势

 A.一处编写随处运行。在这一点上Java已经给了我们最完美的答案,它做得要比PHP更出色,除了系统之外,你的代码不用做一点更改。 

 B.系统的多台平支持。系统可以让你在任意环境开发,在任意环境进行系统布署,在任意环境扩展,相比ASP/PHP的局限性,这个优点是显而易见的。 

 C.非解释性语言。与PHP、ASP最大的区别在于JSP不是一个简单的解释器,它需要编译执行,所以它在后期的运行效率上有明显优势。
 
 软肋

 A.与ASP一样,Java的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大增加了产品的复杂性。

 B.第一次编译、运行对于使用者来说真是一场噩梦,Java的慢速特点同样遗传给了JSP。 
  
 面对这3种技术,你的选择可不能简单比较一下它们的强势与弱势就决定了。如何选择一门动态网页技术取决于你学习的目标,如果你只是想做一个简单的应用,尽力想在短期内完成,那么ASP就已经足够,好学好用,不用犹豫,就是它了!如果你想做一个企业级别的应用,或就想靠制作主页谋生,那么最好考虑后两者,为什么?专业啊!现在大部分企业级的服务器都是基于Unix/Linux/Solaris等系统,很多时候系统最大的要求其实很简单:稳定、安全!而这两点只有PHP和JSP能做到。那么PHP与JSP之间该怎么选择呢?我觉得主要看你的语言关了,如果你天生是个编程高手,C语言玩得很转,此时当然选择PHP了,谁叫它跟C语言“长”得那么像呢?事实上,学好了C,到哪儿都能“混”得开,动态主页那不过是小菜一碟。话说回来,如果你一开始就在学Java,那为了节约资源起见,建议你就用JSP好了,也是很有前途的。
 
 本期推荐

 1.JSP天空网(http://www.jspsky.com/):比较专业的JSP学习网站,分为三大块:源码下载、教程下载与技术文章,无论你是菜鸟还是高手都能在此找到理想的学习资源。

 2.JSP技术之窗(http://www.51jsp.net/):一个比较理想的JSP学习网站,内容全面而且丰富,缺点是更新速度比较慢。

 连续25期的新鲜打造个人网站专题结束了,从2003年01期开始,她陪伴你走过了一年。在网站专题结束之前,我翻看了专题的全部内容,其中的每段话、每个字都记忆犹新。我的目标就是尽我所能为大家提供帮助,我一直认为,学习是一个过程,一种方法,重在实践。通过此专题如果你能成为一个主页设计高手,那对我就是莫大的鼓励;如果你只是了解了主页制作的一些基本问题,能按照文章中的实例实践成功,我也会感到由衷的高兴;或者,你收获甚微,但能从字里行间中读出我的真诚,我也心满意足。最后感谢美丽人生,感谢iCat,感谢ACJ!感谢所有的读者!



我们知道,很多中小企业面临的一个重要问题就是客户关系管理。如何管理成千上万的客户信息,并从中找到潜在的商业价值,对企业的发展非常关键,因此CRM(Customer Relation Management,客户关系管理)的理念应运而生。不过,CRM的含义远不只如此,我们也可以利用它来管理自己或朋友的个人档案甚至是家庭帐目。有了前几期的知识,我们就可轻松解决PHP的相关问题。这一期中我们将以一个专业案例,应用PHP来建设一个免费实用的CRM系统,助你快速掌握解决专业问题的一般方法。
 
一、软件包的下载与系统的准备

 在这里我们选择一个适合中国用户的免费CRM软件,名叫GuanxiCRM,官方网站是http://www.guanxicrm.com。它采用比较流行的PHP+MySQL的B/S软件模式,可让使用者在任何地方都能访问自己的CRM系统。它的下载地址是http://prdownloads.sourceforge.net/guanxicrm/guanxicrm_0.9.1.tar.gz?download,大小为1.60MB。

 我们把下载的压缩文件解压到Apache安装目录下,比如笔者解压到了D:\Apache Group\Apache2\htdocs\crm(这可能和你安装Apache的位置不同,具体请参看本刊2003年24期的Apache与PHP安装)。

 注意:

 1.因为软件上的一些问题,在使用IE浏览网页时对中文的支持不是很好,所以我们需要把Apache默认的输出字符集改为GB2312。打开Apache的安装目录,编辑conf/httpd.conf文件,然后查找字符串“AddDefaultCharset”,然后将它后面的赋值由“ISO-8859-1”改为“GB2312”,保存文件后重新启动Apache服务即可。

 2.GuanxiCRM使用MySQL数据库,因此我们要事先建立一个给系统使用的数据库,我给它起名CRM。使用PHPMyAdmin(大家可以参考2003年24期中的介绍),访问http://localhost/phpMyAdmin/index.php创建一个名为CRM的数据库(图1)。

 准备工作做好了,我们开始安装CRM系统。首先使用浏览器访问http://localhost/crm,在出现的提示界面中点击链接Setup进入安装界面。首先选择语言类型,当然是选择简体中文(Chinese Simplified)了,点击“OK”按钮进入系统配置页面,在这里要设置系统使用数据库的相关配置信息。首先选择数据库产品名称,点开下拉框,可以看到这个系统支持很多数据库。由于我们准备选用最经典流行的组合:Apache+PHP+MySQL,所以这里选择数据库产品的名称为MySQL,然后在数据库主机名/IP处填写Localhost,在数据库用户中填写Root,数据库密码可空着不填。数据库名称填写刚才我们使用PHPMyAdmin建立的数据库CRM。然后根据自己的系统配置,检查“到达主页的链接”和“系统路径”两项的填写是否正确。本例分别为“http://localhost/crm”和“D:/Apache Group/Apache2/htdocs/crm”。系统配色方案选择默认,注意验证方法要选择SQL(图2)。

 点击“Next”进入模块选择页面,基本模块总共有网站管理、行事历、关系管理等(图3)。

 小提示:什么是“行事历”呢?通过认真查找,我们可以找到一个汉英的对应文件,位置在D:\Apache Group\Apache2\h-tdocs\crm\modules\ general\lang\ _navi.zh_cn。里面是中文和英文的对照,你会发现“行事历”原来是Calendar,就是日历的意思。

 这里我们把所有的模块都选择上,然后点击“Next”按钮进入安装结束页面(图4),它会提示你再进行一些检查,并且告诉你默认的用户名和密码分别为admin和admin,同时它提出一个防止别人运行这个安装程序的安全问题。我们可以在安装成功后将D:\Apache Group\Apache2\htdocs\c-rm\setup目录进行删除或改名。

 点击进入系统的链接后出现一个登录页面,输入用户名admin和密码admin,语言再次选择简体中文,同时为了安全起见我们选择“限制IP地址”。点击“登入”按钮就可以进入系统了(图5)。
 
二、安全设置

 应用不是问题,安全问题才是关键。CRM环境搭建完成之后,我们就要对它进行安全设置了,最为关键的是修改默认的管理员密码。选择页面上方功能导航栏中的“网站管理”,然后在二级导航中选择“用户管理人”,用户管理人当然就是管理员了。进入用户管理后,可以看到系统默认的两个用户,一个是admin,另一个是user,点击介绍信息后面的编辑链接即可修改用户的描述信息和密码。
 
三、配置与使用

 首先熟悉一下“模组管理”,这里面显示了目前系统所具有的功能模块,其实这也正是本系统最具特色的地方。你可在使用过程中根据自己的需求,按照标准自己进行开发,然后添加到现有的系统中,对系统进行扩展升级。对每一个模组都可以进行编辑和删除,其中的“新增模组”可以帮你添加新的功能模块,点击进入可看到其模组名称、模组资料夹等属性。其中模组资料夹是一个关键属性,它指定了新扩展功能程序文件存放的位置。系统规定所有的模组程序文件都放在CRM系统下的Modules目录下,各自成一个目录。比如日历功能就存放在Modules/Calendar下,那么日历功能的模组资料夹属性就填写Calendar。

 “组别管理”定义了系统中所具有的组,可在每个组里添加属于这个组的用户,同时一个用户可以属于多个组。

 最后就是“权限管理”了,它实际上是组别、用户与模组的一种权限对应,包括读取、写入、删除等。第一部分是查看某个用户对某个模组的权限设置;第二部分是修改某个组别对某个模组的权限设置;第三部分是修改某个用户对某个模组的权限设置(图6)。这里举一个实例来说明,比如我们新加入一个名为Normal_user的用户,属于Default组,这是我们在权限管理的第一部分,选择用户Normal_user,模组Calendar,点击“显示权利”按钮会看到这个用户还没有针对Calendar模组的权限。如果我们想让这个用户使用Calendar模组,就在第三部分中选择用户Normal_user、模组Calendar,点击“修改用户权利”按钮。在出现的页面中,系统自动认定为新增用户权利,其中所有的选择都选“是”,这样Normal_user用户对模组Calendar就具有完全的使用权限。

 熟悉了整个系统的管理功能后,我们应该关注一下系统的业务功能。CRM系统说到底是一个为企业管理客户信息、提高商业关系和办公效率的软件,只是我们使用PHP来实现了网络化。文中介绍的这个CRM系统中主要包括日历、关系管理、商务机会管理等默认功能,其中最核心的就是关系管理和商务机会管理,这里就着重讲解这两个功能。

 首先我们来看关系管理,进入关系管理页面可以看到它下面还分为联络人、公司客户、关系等几个子功能(图7),下面按照一个通常的使用流程来进行介绍。一般来说,我们首先要定义公司群组,也就是客户公司类别,系统默认的有3个“Customer(客户)”、“Supplier(供应)”、“Partner(伙伴)”群组,我们还可根据自己公司的实际情况新增群组,然后录入并管理公司客户的信息。

 在新增公司名称时,要选择这个公司所属的群组及公司的各种联系方式。公司信息建立好后,可以维护联系人信息,新增联系人时要注意选择联系人所属信息,如果在下拉框中没有找到所属公司的名称,那么需要到公司客户功能中去添加。这样我们就可以把公司客户的基础数据建立完毕,将来在使用这些客户信息时,即可通过使用系统提供的强大查找、排序功能来访问。

 这时大家可能注意到了,关系管理里还有一个“关系”功能我们没有讲到,其实这正是关系管理中最重要的功能,不过它比较复杂,我们先看一下商务机会管理功能,回头再看“关系”功能就会比较清楚了。

 在商务机会管理中分有商务机会总览、业务追踪、定义销售里程等几个子功能。其中商务机会总览就是对企业目前所面临的各种商业机会进行管理,通过对这个信息的管理,企业可以更有效地利用现有资源。在添加新的商业机会时,需要填写客户名、预计收入、销售主管等关键信息。其中客户名、销售里程、联络人和销售主管的信息都可从目前系统管理的相关信息中直接选取(图8),而销售里程可自行定义。业务追踪功能则主要是针对某个商务机会进行跟踪式记录,对业务的现状进行监控。

 现在我们可以返回关系管理看“关系”这个功能了。添加新的关系时需要填写关系人、对应商机等(图9),其中对应商机就是我们刚才在商务机会管理中进行管理的各种商业机会。一个关系被添加以后并不是简单地放在那里被大家查看,更具中国特色的一个地方是,它可根据与关系人的关系变化而动态调整“面子状况”(图10)。企业就可以根据目前的面子状况来监控、调整企业对外关系,保持企业良好的声誉。

 好了,到此为止GuanxiCRM就全部介绍完了。如果你觉得它的功能还达不到要求,也先别着急,GuanxiCRM是按照模块化的开发思想进行开发的,随时可以添加新的功能模块,而且它还是一个开放源代码的工程,你可以遵循GPL协议自己进行修改。其实基于PHP语言的开放源码工程非常多,可以说这是我们学习PHP的一个好途径。也许你以为CRM过于专业,其实,作为PHP的一个专业案例,它在实际应用中还是大有作为的,而其中的关键就是活学活用。

精彩网站推荐

 1.PHP专栏(http://www.vcfan.com/php/):包含各类PHP技术文章、PHP程序源代码、PHP图书推荐及问题论坛等栏目,更新不是很快,但人气较高,是一个比较理想的PHP学习网站。

 2.PHP之家(http://trail.51.net/):包括的栏目较多,而且内容全面丰富,新手和老鸟都可以在此找到合适的资源。

 3.PHP下载(http://www.phpdiy.com/):专门提供PHP源码下载的专题网站,它的一个最大特点就是更新速度快。对动态网站的制作人员来说,有个这样的网站,勤学多练才不会仅仅停留在嘴边。



置身于张扬个性、显露自我的网络时代,如何有效地自我推销已变得越来越重要,那么,作为新新人类的你在这方面又有哪些高招呢?数码时代的到来,让我们有机会尽显个人风采,也许你已经拥有了个人网站,将自己的个人资料尽数上网,但在过去对树立一个“立体形象”而必不可少的照片,你能做的也许仅仅是使用FrontPage等工具将照片简单地添加到网页中,其凌乱不堪且不好控制的布局定会大煞风景。如今,利用PHP我们即可轻松打造出一个绚丽的个人网上画廊,让自己的“光辉”形象走向世界!
 
1.画廊程序的下载与环境准备

 本文为你推荐的网上画廊是目前风靡全球的一个源代码程序——Gallery,它的官方网站是http://gallery.sourceforge.net/。有了上一章PHP安装的预备知识,这里的基本设置也就轻车熟路了。首先下载画廊程序,它的参考下载点为http://prdownloads.sourceforge.net/gallery/gallery-1.4-RC3.tar.gz?use_default=easynews,整个压缩文件大小为1.62MB,我们将它解压到Apache的安装目录下(例如D:\Apache Group\Apache2\htdocs\gallery)。

 接下来要安装一个图形支持软件ImageMagick,它的下载地址为ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-5.5.7-Q8-windows-dll.exe(6.01MB),这个按默认安装即可。

 接下来我们修改C:\Windows\php.ini(参照上一期中php.ini的安装位置,Win2000系统下是C:\Winnt\php.ini)。查找Session.save_path,然后把它的值改为系统临时文件的目录,如下:

 Session.save_path    = C:\Windows\temp(Win2000系统下是C:\Winnt\temp)

 查找Session.bug_compat_42,把它的值由1改为0,如下:

 Session.bug_compat_42 = 0

 查找Magic_quotes_gpc,把它的值由On改为Off,如下:

 Magic_quotes_gpc = Off

 另外还需要修改Apache安装目录下Conf/httpd.conf中DirectoryIndex一行,将Index.php添加到后面,注意每个文件名之间用空格隔开。

 最后重新启动Apache服务,这样我们的准备工作就结束了。访问http://localhost/gallery/,如果能看到系统的安装提示界面(图1),那么恭喜你,搭建画廊的前期准备工作已经搞定!
 
2.画廊的安装

 第一步:按照屏幕上的提示让画廊进入安装设定模式。如下:

 C:\>cd 你的画廊路径

 C:\>configure.bat

 然后点击设置向导,进入画廊的安装设置页面(图2)。

 仔细查看屏幕上的提示,判断系统准备是否还有问题。一般来说,“警告”代表那些不是必须进行更正的设置,本文忽略这些警告。

 第二步:确定没有问题之后,点击“下一步”,对画廊进行基本的设置(图3)。

 在这里填写画廊的标题,然后设置管理者口令,将来需要这个口令来对整个系统进行管理。

 在选择使用哪种图形套件中,本文选择ImageMa-gick,因为它的功能更加强大,安装也更简单,因此在后面我们将忽略所有关于NetPBM的设置。

 ImageMagick的路径是指定系统中存放ImageMagick程序的目录,大家可以根据自己不同的安装位置进行修改。

 照片缩略图是设定照片缩略图的所在路径,系统默认会填写一个地址,但通常这个地址会有问题,这里修改为gallery安装目录下的“images\movie.thumb.jpg”。

 相册目录是指定在硬盘中储存照片的目录,这个目录一开始应该是空的,画廊将会用文件塞满它,需要注意的是目录所有者要有写入的权限。默认的路径为D:\Apache Group\Apache2\htdocs\albums,大家可根据需要修改,在这里用的是默认目录,但你别忘了在D:\Apache Group\Apache2\htdocs\下把Albums建立出来,否则系统会提示找不到Albums目录。

 暂存目录可以设定用来储存暂存文件的目录,本文使用C:\Windows\temp。

 在是否使用Flock()选项处,注意一定要选择“否”,因为这是一个针对Linux的选项。

 最后注意选择语言种类为简体中文,这个系统支持大概20多种语言,够厉害吧。

 第三步:点击页面底部的“相册预设”按钮进入下一步,对整个系统进行个性化定制(图4),通过它的设定将会使我们的相册看起来更加与众不同。这里为了方便起见全部使用默认设置。

 第四步:点击页面底部的“储存设定”按钮,就可以看到一个系统设置确认的页面(图5),屏幕上会显示出刚才所有的设置。如果是致命的错误,系统会用红色字体进行提示,并且当发现有红色信息时,系统会提示返回前面进行修改,必须修改正确才能进行下一步操作。

 确认所有信息都正确无误后,选择“储存设定”按钮完成画廊的安装(图6)。不过还有一步没有完成,注意看它红色字体“注意”两字下面的提示,这是一个安全方面的设置,如果你不进行这个设置就不能进入系统。

 第五步:进行系统的安全设置。点击“开始”→“运行”,在命令输入栏输入命令CMD,然后确定,我们使用CD命令进入画廊安装的目录,这里是D:\Apache Group\Apache2\htdo-cs\gallery,然后输入命令Secure.bat,如果屏幕上显示如下提示信息,则标明你的安全设置已经成功了:

 Your Gallery is now secure and cannot be configured. If you wish to reconfigure it, run the configure.bat script

 如果将来需要重新设定,可按照刚才的步骤在画廊的目录下运行Configure.bat,然后按照上面讲到的步骤进行即可。至此,点击“进入Gallery”链接就可以进入已经安装好的系统了,是不是如释重负啊!
 
3.画廊的配置与使用

 进入画廊的首页后,点击页面右上侧的“登录”链接,这时候会弹出一个登录系统的页面。输入管理员的用户名admin,以及在安装时设置的密码(图7)。登录成功后,可以在页面的右上侧看到系统管理菜单,包括“说明文件”、“添加相册”、“用户管理”、“个人设定”、“退出”等(图8)。其中“添加相册”是这个系统最核心的功能部分,点击进入,可以看到它下面还有“加入多个文件”、“更改名称”、“添加相册”等多个相册管理功能。

 这些功能中对我们来说最有用的可能就是“加入多个文件”了,我们可以用它上传照片,建立自己的相册。点击该链接,一次最多可以上传10个文件(图9),文件类型可以是JPG、JPEG、GIF、PNG、AVI、MPG、MPEG、WMV、MOV、SWF、MP4中的任意一种。选择上传文件后在说明框内填写该文件的说明。都选择完了之后,点击“上传图片”按钮即可完成文件的上传。上传完成,系统就会自动刷新页面,我们马上就可看到刚刚上传上去的图片缩略图(图10),怎么样,效果不错吧?

 在每一幅图片的下面都可以看到一个下拉框,里面有针对这幅图片的一些功能选项,包括修改文字、修改缩略图、旋转图片、删除图片、封面图片等。“封面图片”的功能就是把相册里某一幅图片设置为该相册的封面图片,另外关于相册的其他描述信息也可以在相册所有者登录后进行相应的修改,这里有一个已经修改好的相册,大家可以看一下(图11)。

 下面我们回到相册的管理功能部分,再来简单介绍一下“播放”功能。其实这不是一个管理功能,而是一个浏览功能,它可以像我们看幻灯片一样自动播放,并且可以通过点击“停止”链接随时暂停播放,也可以指定播放的顺序、尺寸大小、延迟时间、循环播放等,功能十分强大。

 相册内的管理功能非常丰富,这里只是介绍它的一小部分,更多功能还有待大家在使用时慢慢体会,接下来我们来看看整个系统的管理功能。“用户管理”可以管理多个用户,指定某个用户为某个相册的所有者,设定其对该相册的管理权限,这样我们就可以把这个相册系统做成一个个人的小画廊了,关于用户的管理,我们先来看看这幅图(图12),所有的功能都在底下的几个按钮上标明了。在相册管理中的“权限设定”功能里,将特定的用户与特定的相册联系起来,这样你的朋友就可以管理属于他自己的相册了。最后一个系统功能是“个人设定”。在这里我们可以修改自己的用户名(必须是由数字与英文所组成)、密码、全名、电子邮件地址和所使用的语言(图13)。

 进行到这一步,一个极具实用特色的精美个人网络画廊算是搭建完成了。
 
本期推荐

 1.Zend技术(http://www.zend.com,英文网站):Zend是PHP的商业用加速器,因此包括Zend本身,该网站完全为PHP服务。它具有丰富的资料和源代码资源,其论坛内容也相当丰富,是全球PHP爱好者求医问药的好去处。如果你有什么疑难杂症,不妨来此一试。

 2.PConline的PHP技术专栏(http://www.pconline.com.cn/pcedu/empolder/wz/php/):更新速度快,内容丰富全面。

 3.PHP开放代码(http://2002.buyionline.net/2002/index.php):面向高级用户的PHP学习网站,提供比较专业的学习资料和各种源代码下载。
 
 下期预告:PHP功能太强大,既然它面向专业级,那么自然有专业的用途了。在下期中,我们将介绍一套面向小型企业用户的简单CRM(客户关系管理)系统,完成一次小小的进阶,千万别以为很难,只要按照文章中的介绍一步一步走下去即可快速上手,也许你离一个高手已经不远了!



通过前几期的介绍,相信你一定对ASP环境下的动态主页制作有了较深刻认识。ASP功能比较强大,学习起来又相对简单,对初学者尤其实用。但你知道吗?很多大型网站甚至是门户级网站的论坛或新闻系统使用的都是PHP,例如搜狐、网易等。PHP向来以专业著称,让无数的主页制作者为之倾倒,那么什么是PHP,它到底有什么迷人之处,又该如何进行配置和使用呢?在本期中,就随我一起迈向专业,一同走进PHP精彩的互动世界吧!
 
一、PHP的精彩之处

 PHP最早是在1995年发布的,是Personal Home Pages(个人主页)的缩写,作为Perl脚本的一个子集。随着PHP的不断发展,它的功能日渐强大,从3.0版本以后,PHP的正式名称已变成“PHP:Hypertext Preprocessor”(超文本预处理语言)。天哪,好奇怪的名字,怎么全称的第一个词还是一个叫“PHP”的缩写啊?其实这就是所谓的递归缩写,题外话就不多说了。PHP之所以受到众多大型网站的青睐,主要源于它如下的非常之处。
 
 1.PHP最大的特点就是免费,你可以从PHP官方网站上自由下载(http://www.php.net),使用PHP的用户无需支付任何版权费。源代码完全公开,所有PHP代码都可以自由交流。这使得PHP的版本更新速度非常快,功能也越来越强大,目前PHP的最新稳定版本为PHP 4.3.4。
 
 2.代码执行效率高。与其他解释语言相比,PHP消耗更少的系统资源,尤其当PHP作为Apache服务器的内嵌模块运行时表现最为出色。PHP 4的脚本引擎——Zend,使用了一种更高效的“编译执行”模式,比起PHP 3的“解析执行”模式来有较大不同。
 
 3.强大的数据库支持。PHP几乎支持所有主流和非主流的数据库,像MySQL、Microsoft SQL Server、Informix、Sybase、Oracle等。这样一来,PHP就可以被各种不同类型的用户所使用。
 
 4.语法结构简单。PHP结合了大量C语言和Perl语言的特色,编写方便而且易懂。尤其对于广大使用C语言的用户来说,几乎无需重新学习PHP语言,只需了解PHP的基本语法即可进入程序设计。也许你对C语言知之甚少,但不要灰心,从基础学起,活学活用,一定会在短期内取得立竿见影的效果。为了加强概念的理解,首先就让我们来看一个简单例子,了解一下PHP的结构。
 
 ①  <html>
 ②  <head>
 ③  <title>大众软件——偶的最爱</title>
 ④  </head>
 ⑤  <body>
 ⑥  <?php
 ⑦   printf("显示一句话:献给大软——我的第一个php程序\n");
 ⑧  ?>
 ⑨  </body>
 ⑩  </html>
 
 实际上这个程序中只有⑥、⑦、⑧三行是PHP的代码,其它都是标准的HTML,这一点和ASP很相似。本例使用的是PHP首选的标注方法,即开始标注是“<?php”,而结束标注为“?>”。另外还可以使用“<?……?>”标注。当然通过修改PHP的配置文件(Php.ini)的方法,还可以使用ASP的格式“<%……%>”等,有关PHP环境的配置稍后再作讲解。这个例子的输出想必大家能够猜出来,就是调用Printf函数“显示一句话:献给大软——我的第一个php程序”。等大家跟我们一起配置好服务器以后,把这段代码存成PHP文件,就可以看到效果了。
 
二、PHP工作环境的配置

 对PHP有一个基本的了解之后,我们就来对PHP的工作环境进行配置。相信具备了ASP的基本知识,你也可以按部就班地对PHP工作环境进行设置了。据Apache称,全球64%的主页服务器都在使用Apache,它稳定可靠而且安全。一般来说,Apache+PHP+MySQL这三者的组合被誉为黄金搭档,也是众多PHP网站的首选搭配。那么本文就以它们为例进行讲解。
 
 首先你得下载PHP、Apache和MySQL这三款软件。PHP可以从http://cn.php.net/get/php-4.3.4-Win32.zip/from/this/mirror下载,这是一个ZIP格式的发行包(注意:非安装文件),6.98MB;Apache可以从http://apache.linuxforum.net/dist/httpd/binaries/win32/apache_2.0.48-win32-x86-no_ssl.msi下载到今年11月才刚刚发布的2.0.28版,5.72MB,MSI是一种Windows支持的安装程序;而MySQL可从http://www.mysql.com/get/Downloads/MySQL-4.0/mysql-4.0.16-win.zip/from/http://mysql.linuxforum.net/下载到,22.7MB。
 
 1.Apache的安装与调试

 Apache的安装非常简单,执行Apache的安装程序进入安装向导,在接受了许可协议后,就会看到如图1所示的界面。从上到下分别填写域名、服务器名和管理员E-mail,然后单击“Next”逐步完成安装。在Apache安装完成之后,它可以作为WinNT/2000/XP/Server 2003的服务来运行,也可以作为单独的程序来运行。接下来我们测试一下Apache是否被正确安装,启动Apache,在浏览器中输入http://127.0.0.1/或http://localhost/,如果能正确显示如图2所示的页面,则表明一切正常。当然,我们也可以修改C:\Program Files\Apache Group\Apache2\conf中的Httpd.conf文件来对Apache进行配置,其中DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs"这一句表明了站点主目录的默认位置,大家可以根据自己的情况修改此路径。Apache的其它设置这里就不具体介绍了,大家有兴趣就自己慢慢摸索吧。
 
 2.让PHP和Apache一起协同工作

 安装完Apache之后,就可以把PHP安装为Apache的一个SAPI模块了。安装前要先停止Apache服务,可以左键单击系统托盘中的Apache图标,选择“Apache2”→“Stop”。也可以选择“开始”→“程序”→“Apache HTTP Server 2.0.48”→“Control Apache Server”→“Stop”。然后将刚才载的Php-4.3.4-Win32.zip解压缩到你准备放置PHP的目录中,例如C:\Php,可以看到当前PHP目录中有很多目录和小文件(如图3)。将其中的Php.ini-dist文件拷贝到系统目录中,例如C:\Winnt,并改名为Php.ini,接着复制Php4ts.dll文件到系统目录下的System子目录中,然后在C:\Program Files\Apache Group\Apache2\conf中找到Httpd.conf文件,用记事本编辑它,添加如下4个语句,实际上添加在任何位置都可以,但为了简单起见,我们添加到文件最底部。
 
 ScriptAlias /php/ "C:/php/"
 AddType application/x-httpd-php .php
 AddType application/x-httpd-php .phtml
 Action application/x-httpd-php "/php/php.exe"
 
 这是什么意思呢?第一行是指明PHP所在的目录,第二行与第三行则是让Apache能够识别PHP的网页文件扩展名,例如“php”和“phtml”,第四行是指明PHP执行程序所在的目录。
 
 接下来启动Apache,我们测试一下PHP和Apache能否一起工作。新建一个名为Test.php的文件,输入如下代码并且将其放到站点的主目录下(默认为C:\Program Files\Apache Group\Apache2\htdocs)。
 
 <html>
 <head>
 <title>php测试脚本</title>
 </head>
 <body>
 <?php
 phpinfo();
 ?>
 </html>
 
 为了让Apache默认支持中文,我们还要做一些小修改,选择“开始”→“程序”→“Apache HTTP Server 2.0.48”→“Configure Apache Server”→“Edit the Apache httpd.conf Configuration File”,替换“AddDefaultCharset ISO-8859-1”为“AddDefaultCharset GB2312”,重启服务后,此修改才会生效。然后用浏览器打开http://127.0.0.1/test.php,如果能看到如图4所示页面,那么恭喜,这表明你的PHP和Apache已经配置成功了。还记得前面第一部分讲解的代码吗?现在如法炮制一番就会得到如图5所示页面了。
 
 3.安装MySQL

 MySQL的安装也很简单,首先解压缩,然后执行Setup.exe,按照默认设置一路Next即可。启动C:\mysql\bin\winmysqladmin.exe配置程序,首先会弹出用户名和口令的设置窗口,按照自己的需要设置之后,即可弹出如图6所示的设置窗口。在实际使用中,由于MySQL数据库的管理操作比较复杂,从而给开发和使用带来不便。所以我们给大家介绍一款功能强大的使用Web界面的MySQL管理工具——phpMyAdmin。phpMyAdmin是一款用PHP编写的,可通过因特网控制和操作MySQL的管理软件。它可以对数据库进行一些常规的操作,例如建立、复制和删除数据等,适合初学者使用。而且它还能显示MySQL的运行信息、系统变量、显示进程、重启数据库等,也是MySQL管理员的好帮手。下载地址为:http://www.skycn.com/soft/10687.html,1.92MB,目前最新版本为2.5.4。
 
 phpMyAdmin的安装很简单,将其解压到网站主目录下(默认为C:\Program Files\Apache Group\Apache2\htdocs),然后通过浏览器访问http://localhost/phpMyAdmin-2.5.4/index.php即可。phpMyAdmin的主界面如图7所示,初始页面应该是英文的,只要在右侧的“Language”下拉框中选择简体中文即可。默认情况下phpMyAdmin只允许本地机访问,要想从外网访问,可以修改配置文件Config.php。通过phpMyAdmin对MySQL进行配置比较简单,这里不作详细说明,希望大家自己多试试。
 
 为了在PHP中加入MySQL模块。我们还要配置上文曾提到的拷贝至系统目录并改名为Php.ini的文件(位置在C:\Winnt\Php.ini),用记事本打开它,找到Dynamic Extensions字段,其中的Windows Extensions处可以看到如下诸行文字:
 
 ;extension=php_bz2.dll
 ;extension=php_cpdf.dll
 ……
 ;extension=php_mssql.dll
 ;extension=php_msql.dll
 ;extension=php_oci8.dll
 ;extension=php_openssl.dll
 ;extension=php_oracle.dll
 ……
 
 由于我们需要MySQL的支持,这里必须将Php_mssql.dll这一行的注释去掉,即删掉“;extension=php_mssql.dll”这行中“;”,如果不幸没有找到这一行,那么就需要加上extension=mydll.dll字样,这样PHP就配置好了。Apache+PHP+MySQL也就可以联合起来工作了。
 
三、PHP语法轻松入门

 PHP的语法和C语言非常相似,可以说是从C语言演变过来的,如果你学过C语言,就会发现PHP非常容易上手。事实上,任何动态主页的制作都不可避免地要用到相关的语法知识,而PHP由于跟普通的C语言非常接近,学习起来也相对较为容易。下面就从常用的语法结构入手,为你讲解PHP的基本语法知识,旨在抛砖引玉。
 
 1.程序注释

 在PHP的程序中,加入注释的方法很灵活,可以使用C语言、C++语言或UNIX的Shell语言的注释方式,而且也可以混合使用。例如:
 
 <?php
   echo "这是第一种例子。\n"; // 本例是C++语法的注释
   echo "这是第二种例子。\n"; /* 本例采用多行的
                                 注释方式 */
   echo "这是第三种例子。\n"; # 本例使用UNIX Shell语法注释
 ?>
 
 也就是说,可以使用“//”、“#”和“/*……*/”的形式来进行注释,在学习和阅读PHP程序时尤其需要将注释与主程序分开,但在使用多行注释时要注意,不能让注释陷入递归循环当中,否则会引起错误,例如下面的例子。
 
 <?php
   /* 
   echo "这是错误的示范。\n"; /* 递归注释会引起问题 */
   */
 ?>
 
 2.引用文件

 PHP最吸引人的特色之一就是它的引用文件功能。用这种方法可将常用的功能写成一个函数放在文件之中,然后引用时就可调用这个函数了。
 
 引用文件的方法有两种:Require和Include。使用Require引用时的书写格式类似“Require("MyRequireFile.php");”。这个函数通常放在PHP程序的最前面,PHP程序在执行前,就会先读入Require所指定的文件,并将它变成PHP网页的一部份,常用的函数亦可用这个方法将它引入网页中。
 
 使用Include引用时的书写格式类似“Include("MyIncludeFile.php");”。这个函数一般是放在流程控制的处理部分中。PHP网页在读到Include指定的文件时才将它读进来,用这种方式可以把程序执行时的流程简化。 
 
 3.变量和数据类型

 ①数据类型:PHP是一种类型化要求较弱的语言,这一点大概是它与C语言间的主要差别。在PHP中声明一个变量时不必指出其数据类型,而该数据类型取决于使用该变量的上下文。例如在C语言中,“int i=100;”定义了一个整型变量,而在PHP里,可使用“$i=100;”,而且以后要让$i变成一个串也无需作任何说明。这就是弱类型化,即变量的数据类型强制是弱的,这使得初学者学习PHP编程变得更加容易。
 
 PHP支持如下数据类型,4种标量型:布尔、整数、浮点数(双精度)、串;2种复合型:数组、对象;2种特殊类型:资源、空间。
  
 其中的4种标量数据类型与C语言等其它语言中的定义相同,在此不多讲解。不同的是像“True”等PHP的保留字也可以作为变量名,但不建议这样使用,容易引起混淆。而复合数据类型是超出简单标量值范围的数据类型,数组就是最明显和应用最广泛的复合数据类型之一。它们允许大量数据的表示,并且有许多实用函数可帮助你轻松操作这些数据。简单说,数组只是一个元素系列,而其中的元素又是键与值对应的。下列例子是PHP中一个顺序编号的数组:
 
 $color_array=array(); //创建一个数组变量
 $color_array[0]="red"; //分别定义该数组前3个元素所定义的值
 $color_array[1]="blue";
 $color_array[2]="black";
 
 PHP数组还可以用关联数组表示法,这意味着串字符值也可以用作索引,数组键也可以是串。这一点很有用,请看下面的例子:
 
 $pc_part=array();
 $pc_part["CPU"]="2.2GHz Athlon XP";
 $pc_part["Memory"]="512MB DDR";
 $pc_part["Hard Drive"]="Segate 80GB";
 $pc_part["Video Card"]="Random 9700 pro";
 
 这样定义的数组各元素含义明了,得到很多程序员的偏爱。而对象的概念是从面向对象的语言中提取出来的,其定义和使用方法也基本相同。对象不仅是一种数据类型,还是一种程序设计的完整方法而不仅仅是数据存储。这部分相对较难掌握,大家别忘了多多参考推荐的资源类网站,多看、多学、多实践就能快速掌握它的精髓。
 
 ②变量:变量的概念十分简单:变量存储数据,而被存储的数据又是可变化的。实际上变量在任何一种编程语言中都可以看到(还记得ASP中的VBScript语言吗?),大家对这个应该不会陌生。PHP中的变量标示符是区分大小写的,必须以一个美元符号“$”开头,后面跟字母、数字、下划线或扩展的ASCII码字符,例如:
 
 $a="90";
 $c=$a+$b;
 $name="Allen";
 $email="someone@some.com";
 $time_start="1995";
 
 虽然变量的命名没什么限制,但优秀的程序员一般都会遵循正确的命名约定,这里也建议大家遵守规范,如下所述:
 
 A.变量名要有一定的含义,能描述变量的内容,像以上变量中的“$name”和“$email”等,别人看到时,立即就能想到变量内容很可能是名字和E-mail地址,便于阅读和维护代码;
 
 B.变量名不能太长,应尽量在变量名保持精确的前提下缩短它,比如从含义明显的单词成分中取开头几个字母。例如,把“NumbersOfCharacters”变量名缩短成“CharNum”;
 
 C.变量名要便于阅读。标示符中有多个单词时,可以用下划线来分隔,或者把每个字母的首个字母大写。例如“$time_start”或$TimeSatrt;
 
 D.选择一种格式并坚持使用它,这可以统一你的编程风格,便于阅读和维护,这也是高质量代码的基本要求。
 
四、运算符和表达式

 PHP中的运算符和表达式与C语言也非常接近,主要有以下几类:
 
 1.算术运算符号:

 +:加法运算;-:减法运算;*:乘法运算;/:除法运算;%:取余数;++:累加;–:递减。
 
 2.字符串运算符:只有一个,就是英文句号“.”,它可以将字符串连接起来,变成合并的新字符串。
 
 3.赋值运算符,如表所示: 
 
 =:将右边的值连到左边
 +=:将右边的值加到左边
 -=:将右边的值减到左边
 *=:将左边的值乘以右边
 /=:将左边的值除以右边
 %=:将左边的值对右边取余数
 .=:将右边的字符串加到左边
 
 赋值运算有时会让人一头雾水,举个例子解释如下:
 
 <?php
 $a = 5;
 $a += 3;  // 即 $a = $a + 3;
 echo $a."<br>\n";  //输出结果是8
 $b = "大";
 $b .= "家";  // $b = "大家";
 $b .= "好";  // $b = "大家好";
 echo "$b<br>\n";  //输出结果是大家好;
 ?>
 
 4.位运算符:这部分内容也跟C语言比较接近,有少量不同之处,主要包括有:
 
 &:且(And)
 |:或(Or)
 ^:异或(Xor)
 <<:向左移位
 >>:向右移位
 ~:取1的补数
 
 5.逻辑运算符包括:<、>、<=、>=、==、!=、&&、and、||、or、xor、!等。
 
 6.其他运算符号,如下表所示。
 
 $:变量
 &:变量的地址(加在变量前)
 @:不显示错误信息(加在函数前)
 ->:类的方法或者属性
 =>:数组的元素值
 ?::三元运算子
 
 其中比较特殊的是三元运算子“?:”,理解起来相对比较困难,举例来解释一下:
 
 (expr1) ? (expr2) : (expr3);
 
 若Expr1的运算结果为True,则执行Expr2;否则执行Expr3。实际上它有点类似If……Else循环,但可以让程序较精简有效率。
 
五、流程控制

 PHP的流程控制也与C语言极类似,有常见的If……Else循环、Do……While循环、For循环和Switch循环4种循环,还有Break及Continue两个流程控制指令。
 
六、函数和类

 在PHP中,用户可以自行组合函数或类,而且函数名不区分大小写。PHP中的函数和C语言一样,包括有返回值和无返回值两种。
 
 PHP作为一种高效的网络编程语言,由于它具有编写灵活、运行快速等优点,而迅速成为Web程序员的首选。实际上,由于Linux系统具有强大的服务器功能,PHP更多时是运用在Linux系统上,如果你想成为专业级的网页制作高手,一定要熟悉Linux环境才行哦!当然,在Windows环境下,PHP的大部分功能也能得以发挥,关键要看你如何使用了。另外,如果你觉得Apache不好用,也可以使用IIS或PWS等网页服务器来配置PHP,无论如何,适合自己的才最重要。
 
 
本期推荐
 
 资源类网站:

 1.中国PHP在线(http://phpzx.51.net/,如图7):名字叫得很大,内容确实也不错,非常值得推荐。它的更新比较迅速,而且主要以实例操作为主,无论是初学者还是编程高手,都能在此找到适合自己的学习资源。
 
 2.中国PHP联盟(http://www.phpx.com/,如图8):从国内较早的PHP技术网演变而来,并由几位PHP技术高手支持。由于PHP发展过于迅速,现在该网站仅仅保留了论坛部分,上面各路PHP高手云集,让不少PHP爱好者趋之若骛。
 
 3.PHP官方网站(http://www.php.net,英文):这是PHP的大本营,在这里你可以找到关于PHP的最新消息和软件版本,就连那些PHP高手也常常造访这里以获取最新信息。你能在这里找到几乎关于PHP的一切,包括中文等语言版本的手册、批注、软件源代码甚至已经发现的Bug等,不过它是英文网页,阅读起来相对较难一些。
 
 下期预告:语言不是问题,活学活用才是关键。在下一期中我们将会为你倾心打造一个又酷又炫的网络相册,同时也要进一步熟悉和了解PHP,下期见!



半个月一晃而逝,在这段时间中你有没有将前两期讲到的新闻与论坛管理系统付诸实践,从而吸引更多的访问者呢?ASP功能强大,需要我们开动脑筋去不断探索。在前几期的文章中,我们介绍了动态网站应该具有的基本功能,也许读完前面几个部分之后你会觉得缺少点什么,本期将继续从动态网站中的计数器、投票系统和网站广告等常用功能入手,为大家做一个综合演练,旨在抛砖引玉,让你的动态网站日臻完善。
 
一、访问计数器

 当个人网站推出后,你一定非常希望了解到底有多少访问者曾经访问过自己的网站,他们来自何方,浏览页面时又有什么规律等。一个好的网站设计者会根据访问信息来及时更正网页的内容与结构,以便吸引更多的眼球,扩大网站的影响力,而访问计数器就可以轻松实现这个功能。
 
 计数器虽然很好实现,但要做得界面美观且功能强大就不那么简单了。这里给大家介绍的是来自“爱情故事”网站的访问计数器:ASPCount 2.0,它是我所见到的国产计数器中最出色的一个。其主要特点是:①统计全面:每年、每月、每星期、每天、每小时均以柱状图、百分比统计,便于查看。②具有最值、平均值统计:包括年、月、日最高访问量和年、月、日平均访问量,本年、月、日甚至是本世纪最高记录等。③配置灵活、自动化程度高:具有网页样式选择、柱状图渐变色、柱状图大小配置、密码修改、数据库修复等。
 
 别看它功能很强大,但安装和使用都非常简单。首先下载到它的程序压缩包(http://www.love-evol.com:8080/count_down/AspCount2.0.rar,147kB),解压在任意临时目录中,然后将其中的Count目录拷贝至默认安装目录C:\Inetpub\wwwroot\中即可。然后再将访问计数器放置在需要进行访问统计的页面中,假设默认首页为Default.asp,且在C:\Inetpub\wwwroot\目录下,那么就需要将下面这行代码复制到首页显示访问统计的地方。注意Default.asp与Code.js的相对路径。
 
 <Script Language=JavaScript Src="count/inc/code.js"></Script>
 
 此时访问网站首页,可以看到插入脚本的地方出现“计数系统”字样,说明你的计数器已经开始正常工作了。“计数系统”4个字实际上是一个小图片,位置是C:\Inetpub\wwwroot\count\img\count.gif,你如果不喜欢可以自行更换。
 
 点击“计数系统”就会进入访问统计的首页(图1),访问者可在这里看到各种统计信息。本机访问计数器首页的地址为http://localhost/count/index.asp。页面左上角的“计数系统”图片同样位于img目录下,文件名为Logo.gif,也可自行替换。现在请点击页面最下方“管理入口”链接,进入计数器的配置界面,默认登录密码为“admin”(进入后请务必修改),共有六大项设置:
 
 1.样式选择:挑一种你喜欢的配色方案,你可以经常换换颜色(图2),让人访问时总有一种新感觉,很酷吧!只可惜不能随机更换。

 2.柱状图渐变色选择:提供5种颜色,注意可不要挑同一种颜色哦(图3)!

 3.柱状图大小配置:这个就得根据网站访问量来配置了,当网站访问量提高时慢慢把数字改小,直到长度适中为止,如果调整不好,柱状图可能会比较难看(图4)。

 4.密码修改:为了安全起见,务必修改初始密码“admin”。

 5.修复数据库:因服务器断电等不确定因素的影响,计数器的数据可能出现诸如每日访问量总和不等于当月总和的情况,这时就必须进行修复。

 6.链接:可配置计数器首页左边的链接,默认只有两个链接:“新浪”和“爱情故事”,你可以在这里添加一些自己喜欢或常用的网站链接(图5)。
 
 需要注意的是,这个计数器原来是不支持刷新的,超过20分钟的访问才会被计数,后来该计数器的原作者考虑到大多数个人网站访问量很小,将刷新功能又加上了,因此适合所有的网页计数。不过我倒是希望大家能从网站内容入手,努力“经营”好自己的网站,不要通过这种方式给自己心理安慰:)。
 
二、投票管理系统

 有了访问计数器,根据这些访问信息你就可以开始大刀阔斧地对网站进行全面改版了,但“访问者是上帝”,怎样才能让他们满意呢?最好是准备几个改版的候选方案,然后让大家来投票,这就需要投票系统的帮助了。
 
 我们选择的投票系统还具备调查评论的功能,用起来更加得心应手,这就是碧波投票系统v2.0。该系统不仅功能完善,可支持多个调查表单及评论,而且还授权给使用者自行修改首页代码,以满足各种需求。
 
 首先下载它的程序压缩包(http://www.chinaz.com/download/software.asp?SOFTWAREID=1421,60kB),然后在IIS默认主目录中创建Vote目录并将程序解压至其中。我们先要用文本编辑器修改lib目录中Conn1.asp和Conn5.asp文件中的数据库路径“/pqcomvote2E/vote/vote.mdb”和“/pqcomvote2E/passcheck/pwd.mdb”,将它们分别替换为自己网站的数据库路径。比如投票系统放在Vote目录中,那么就可以把这两个路径改为“/vote/vote/vote.mdb”和“/vote/passcheck/pwd.mdb”。不要忘了,为了安全起见将数据库名分别修改为Vote.asp和Pwd.asp,然后相应修改Conn1.asp和Conn5.asp(还记得21期上的介绍吗)。
 
 接下来我们要修改程序目录中Default.asp文件(其实就是去掉一些没用的信息,把网页的结构改一下,其它不用动,还记得“<%”和“%>”之间是ASP程序吧?),并且将它放置在你需要设置投票的网页上。记住其中几个参数的含义如下:send——调查编号;items——调查选项数;name——调查问题,而且以上3个参数均是必须的。
 
 现在就要添加调查项目了,首先通过http://localhost/vote/manage/main.asp进入管理界面,默认的登录名和密码都是sa(图6)。点击“添加新用户”进入“用户管理”页面,可以看到系统内置了3个等级的6个用户,3个等级分别为:系统管理员、数据管理员和数据添加员,他们分别具有不同的权限。让我们看其中的一个用户“sysAdmin”,“sysAdmin”和“sysadmin”分别为用户名和密码;用户等级为系统管理员;01-1-27 16:34:12为用户最近一次登录时间;127.0.0.1为用户最近一次登录IP地址;而删除操作只有以系统管理员身份登录后才可使用。还有一点要记住,为了安全,我们要修改内置用户的默认密码,也可以把没用的用户删掉,然后我们就可自行添加需要的用户了。还要注意,系统要求用户名要大于4位、密码要大于5位且用户名与密码不同(区分大小写)。系统不允许添加比当前登录用户等级高的用户,数据添加员不能修改用户(图7)。
 
 在添加新调查时先要选择任意一个已有的调查项目,然后在相应栏目中输入新调查内容,点击“Add”按钮即可添加新的调查。而修改已有的调查过程和添加一样,只是应点击“Fix”按钮。删除操作很简单,但只有系统管理员才有权限进行。
 
 小提示:在添加完新的调查项目后注意点击项目列表边上的一个刷新按钮,这样才可以看到新的调查项目(图8)。
 
 在这个添加页面中,我们已经可以看到每个项目当前的投票情况了,在页面底部还有“翻阅评论”和“发表看法”两个链接,它们分别用来查看访问者关于这个调查项目的意见和你作为站长的回复,确实非常方便,如图9,为“翻阅评论”页面。
 
 一切都设置好了,我们即可返回添加了投票调查项目的页面,此时可以看到已经设置好的调查项目(图10)。每个项目分别有3个按钮“投票”、“结果”和“评论”,“投票”用来投出你关键的一票,“结果”用来查看当前的统计结果,“评论”可以查看、填写相应的建议,注意添加时姓名、留言标题、留言内容是必须填写的。
 
三、网站广告管理系统

 当自己的网站已经万事俱备,有了很好的影响力和众多访问者之后,我们或许可以利用这些难得的资源为自己挣上第一桶金。网络广告至今也是互联网上重要的一项收入,也许我们还不能依靠自己的网站成为数字英雄,但推出动态广告也是证明自己的一个好机会。下面我们就定制一个动态网站的广告管理系统,让自己的网站也加入到创收的行列中去。
 
 这里为大家选择的是在“中国站长站”广告系统类下载排行第一的“51DNS广告管理系统”,它由蓝芒科技开发,当前版本为2.0,可以管理多层次、各状态下的广告,而且设置起来非常简单。
 
 程序压缩包下载地址:http://www.chinaz.com/download/software.asp?SOFTWAREID=4607,68kB。同样将解压后的ad目录拷贝至“C:\Inetpub\wwwroot”。通过地址http://localhost/ad/index.asp进入广告管理系统,默认登录名为“admin”,密码是“51dns”,管理后台界面如图11所示。管理系统内的广告分3类:①正在网站上正常播放的广告;②已满足某种限制条件(如开始设置的显示数已满,或最后播放时间已到等),而被系统自动停止播放的失效广告;③由于其它原因,虽未失效,但被人为停止播放的广告。我们可以分别通过页面上方的“正常广告”、“暂停列表”和“失效列表”链接来分别查看这三类广告。
 
 而在正常广告中根据广告的重要性和放置位置还可以分为3类:首要页面、次要页面和三级页面,同样可以通过页面上方的菜单“正常广告、暂停列表、失效列表”来分别查看。一般来说,网站首页、栏目首页可以摆放重要广告,而一般的内容页面,或页面下方等非广告黄金位置,则放置次要广告。
 
 现在我们来一起添加一个新广告。首先填写中文站名、站点URL和图标URL,需要注意的是,系统内管理的所有广告图片尺寸均为480×60,因为在网络调查中发现此类尺寸的广告图片占总数的88%,所以选择广告图片时一定要注意。接下来选择图标摆放位置是首页、一般页面还是三级页面,还可以指定广告的打开方式,可以在本页面打开,也可以在新开窗口打开。在设置广告播放条件时,该系统提供了多种设置,除了设置单一的点击数、显示数、最后日期等限制,还可以将上述条件综合设置,比如设置点击数小于500、显示数大于5000、最后日期为2005年2月1日,则只要其中任一条件满足,该广告便会成为失效广告而不再播放,自动进入休眠状态,但你还可以修改限制条件并激活它(图12)。设置完以后按“提交”,你就已经在后台添加完需要管理的广告了,接下来你需要到放置广告页面的指定位置添加如下代码:
 
 网站首页、栏目首页或黄金广告位置的代码为:

 <script language=javascript src=”/ad/ads.asp?place=1”></script>
 
 网站一般内容页面或非黄金广告位置的代码为:

 <script language=javascript src=”/ad/ads.asp?place=0”></script>
 
 网站三级内容页面或非黄金广告位置的代码为:

 <script language=javascript src=”/ad/ads.asp?place=2”></script>
 
 此时,在网站页面上就已可看到我们添加的广告了,如果在同一位置添加多个同级别广告,系统就会自动循环播放这些处于正常状态的广告,怎么样,智能化程度还蛮高吧(图13)。
 
 当广告系统运行一段时间后,如果需要查看一下广告的效果,可以再次来到广告系统管理后台,通过页面上方的菜单“点击最高”和“点击最低”来查看网站所有广告排行。同时在这个广告管理系统里还有简单的IP跟踪器,可以方便你查看广告图片观看者和点击者的IP地址。在每条广告的显示次数和点击次数后面括号内都有详细的访问记录,我们可以查看广告访问的具体情况,或分析是否存在广告诈骗现象(图14)。
 
 接下来就可以根据访问分析结果来调整相应的广告设置了,比如暂停或激活某些广告的播放,这些都可以在管理页面里完成。每次都需先找到你要修改的广告,然后点击暂停就可以暂停任意正常广告,点击激活来激活被暂停广告,点击修改详细设置可以修改正常、失效广告的相关信息和限制条件并激活失效广告,还可以删除任意一条广告,但需要注意的是,当你删除一条广告时,这条广告的显示和点击记录也将被删除。
 
 到这里为止我们所有的ASP实例都已经讲完了,不知道你是否满意,不过纸上谈兵永远都不够,只有多实践才会得到更多的锻炼,逐步提高自己的网站制作水平。这几期的内容都是以生动的实例为主,很少牵涉到具体的程序设计,一个真正的ASP动态网站设计高手应对ASP源码有较高的分析能力,希望大家在这方面也有意识地提高自己,再加上不断的探索和思考,相信你一定能成为一个动态网站的制作高手。
 
本期推荐
 
 资源类:

 1.西部ASP联盟(http://www.xbasp.net/,如图15):以ASP为主的综合学习类网站,主要栏目分为ASP教程、ASP技巧、ASP实例与ASP文摘等,内容相对而言比较陈旧,更新也不是很及时,但对初学者来说仍不失为一个较为理想的学习场所。

 2.ASP技术频道(http://www.6to23.com/s11/):内容全面且深入,包含ASP技术、ASP组件、ASP资料、ASP下载和ASP精彩问答等栏目,如果你希望提高自己的ASP设计水平,这里一定是个好去处。
 
 欣赏类:

 1.《X-MEN 2》的电影预览(http://x2-movie.com/,如图16):完美纯粹的Flash精品网站。模拟3D的场景、震撼的声效加上亦真亦幻的灯光设计,让你耳目一新。好的网站给人启迪、给人想象的空间,登录该网站就会明白其中的道理。
 
 2.JPEG设计工作室(http://hammer.prohosting.com/~jpeg/move.html):节奏舒缓,创意新颖,品位高雅,网站整体设计功力非常深厚。
 
 下期预告:ASP易学易懂,深受大家的喜爱。目前,与ASP一样活跃甚至有可能赶超ASP的另外一种高级动态网页技术PHP也越来越火,几乎成为一个动态网站高手的必修课。那么,到底什么是PHP,它与ASP相比有哪些优点,又该如何使用呢?欲知详情,请听下期分解!



利用ASP可以在网站上实现很多强大的动态功能。在上一期中我们已经搭建了一个可以实时更新的动态新闻管理系统,但互联网的魅力还在于它强大的互动性。也许你在自己网站上已经开通了FTP、动态新闻系统、点歌台等栏目,但你有没有想过添加一个个性化的论坛系统,让大家通过你的网站激扬文字、畅所欲言,而你则在幕后享受一下做管理员的乐趣呢?本期就以生动的实例帮你搭建一个精彩互动的论坛系统,让你的网站人气旺盛、更加富有吸引力!
 
一、论坛的下载与安装

 我们选择使用目前国内使用最广泛、功能最强大的ASP论坛系统——动网论坛。可能读完本文你会发现这个论坛好像很熟悉,那是因为它在网络中已经非常流行。动网论坛是一个经过精心设计、适用于NT系统环境的高效论坛解决方案,它具有人性化的界面设计功能和十余种可选界面,而且通过简单的CSS模板编辑功能即可改变论坛界面,使我们轻松拥有一个个性十足的论坛。
 
 动网论坛目前最新的版本是6.0,共分为MSSQL和Access两个版本,主要区别在于使用不同的数据库,并针对它们进行了相应的优化。考虑到易用性,我们决定选择Access版本,其实它足以满足我们的应用,即开设支持几百人同时在线的论坛。
 
 首先我们从网上下载它的程序压缩包(http://www.dvbbs.net/download/dvbbs6.0.0.exe,1.41MB),同时为了让系统更完善、稳定,我们还可以下载最新升级包SP1(http://www.dvbbs.net/download/dvbbs6.0.0_Q0107.exe,234kB)。在IIS的安装目录中(默认为C:\inetpub\wwwroot)新建目录“dvbbs”,然后执行刚刚下载的文件,将其解压到新建目录中。接下来安装论坛的升级包SP1,将它解压到任意一个目录中,然后用其中的文件覆盖当前的论坛文件。至此,论坛的默认安装就结束了,打开浏览器,输入http://localhost/dvbbs/,如果可以看到如图1所示的界面,就说明我们的安装已经成功了。
 
二、安全设置

 和上期一样,我们首先要考虑安全问题,否则管理员权限就可能成了摆设。一般而言,根据使用者在论坛中身份的不同,分别需要注意如下几点。
 
 1.对于论坛安装者

 ①必须经常查看http://www.dvbbs.cn,以便获得最新版本的信息,新版本往往都会有更好的安全性,所以别忘了及时更新自己的论坛系统。

 ②上传程序前修改数据库名称,并修改Conn.asp文件,防止非法下载。将网站论坛数据库(默认为C:\inetpub\wwwroot\dvbbs\data\dvbbs6.mdb),改为.asp的扩展名,如Dvbbs6.asp,接着修改Conn.asp文件中的数据库链接地址,改好后保存即可正常使用。关于其中的修改细节,大家可以参照上一期中的讲解,不要告诉我你没看过哦。

 ③备份的数据库名称也必须更改,很多朋友都没修改默认的备份数据库目录和文件名(C:\inetpub\wwwroot\dvbbs\databackup\dvbbs6.mdb),因此,在执行备份前后一定要注意备份目录中是否用了默认数据库名的文件。

 ④安装后及时修改默认的论坛管理密码。
 
 2.对于论坛管理员

 ①定期更改数据库的名字并备份数据,提高论坛安全系数。

 ②如果论坛做过备份,当下载了备份文件后注意及时删除主机上的备份文件。

 ③定期修改自己的管理员密码,不要在任何公共场所使用该密码进入论坛。

 ④在管理论坛时,或用管理员身份登录时,尽量不要去访问其他任何站点,以防止“cookie”泄密。

 ⑤不要使用少于8位的密码,而且务必由数字和字母共同组成,提高安全系数。对于坛主,我们认为密码不应该少于12位,必须是数字与字母(混合大小写)组合。

 ⑥定期维护论坛,初始化用户资料,查看是否有异常的账号,及时处理多余的坛主和总版主。
 
 3.对于论坛版主和论坛使用者

 ①定期修改自己的密码,不要在任何公共场所使用自己的密码进入论坛。同样,密码要设置得复杂一些。

 ②如果用自己的用户名和密码登录过论坛,当离开论坛时,务必点“退出”,而不要仅仅关闭浏览器。

 ③发现密码被盗,应该立即通知坛主以便解决。
 
三、系统的使用

 系统安装成功、安全设置完毕之后,我们就可以开始搭建整个论坛框架了。首先我们进入论坛,用默认的管理员用户名“admin”和密码“admin888”登录,然后在上面的菜单中选择“管理”(图2)。为了安全起见,系统还会让你再次输入用户名和密码以及附加码(按照页面提示来输入,当前附加码如图显示为“1384”,图3)。这样我们就进入了整个论坛最核心的部位——管理后台(图4),在这里可以控制所有的论坛设置。在此页面左侧,可以看到很多的管理功能项,够我们熟悉一阵子的:(,现在只能带着大家熟悉一下最经常使用的几个功能。

 1.常规设置信息
 
 在这里可以设置论坛使用的风格模板、论坛的名称、论坛首页Logo的地址、版权信息等论坛的所有常规信息,包括总论坛和分论坛设置,在这里你可以设置几套不同的方案以供各个不同的分论坛使用。
 
 2.建立论坛版面

 也就是将论坛按照讨论主题分成一个个的区域。论坛版面的建立就像目录一样成树形结构,最上层的是论坛系统,其中可以设置多个一级论坛,一级论坛下又可以设置子论坛或版面,每个一级论坛或子论坛都可使用不同的界面和相关参数。在每个论坛下面可以添加相应的版面,版面下面还可以添加子版面,一层接一层,最多可以建立多少层呢?据说是数量无限,如果你有兴趣也可以试一下。这部分操作有两点需要注意:
 
 ①删除子论坛会同时删除该论坛下所有的帖子,删除一级论坛的同时将删除下属子论坛和其中的帖子,一定要慎重啊!

 ②如果选择复位所有版面,则所有版面都将变为一级论坛(分类),这时你需要重新对各个版面进行归属的基本设置,所以不要轻易使用该功能,仅在做出了错误的设置而无法复原版面之间的关系和排序时才使用。
 
 现在我来做一个示范,首先我们建立一个一级论坛,名为“我的论坛”(图6)。注意所属类别要选择“作为论坛分类”,同时可以给这个子论坛设置不同于整个论坛的模板风格。然后我们在这个子论坛下面建立一个名为“版务管理”的版面(图7),注意所属类别要选择刚刚建立的子论坛。在这里同时还可以添加管理该版面的版主,如果你输入的ID是系统内没有的用户名,那么将会自动建立这个用户,密码由系统自动生成并显示给你。
 
 在“论坛管理”页面中还可以删除版面、清空数据、版面排序并进行版面的基本设置和高级设置(图8)。具体的设置方法我们就不讲了,大家可以根据自己的需要自行调整论坛的属性。版面建好了,现在回到首页就可以看到我们建成的论坛和版面了(图9)。怎么样,用起来是不是很简单呢?
 
 3.做好用户管理

 这里面包括各种用户对论坛操作的权限,在动网论坛中,对用户权限的控制是通过“组”的方式实现的,和Windows里的组很相似。论坛系统的管理员,也就是创建论坛的人,可以事先定义若干个组,每个组分别有不同的操作权限,以后属于某一个组的用户就会继承该组的全部权限。我们可以在用户组管理功能里面添加新的用户组、编辑现有的用户组、查看相应用户组下的全部用户(图10)。权限分为阅读权限、发帖权限、编辑权限、管理权限、短信权限、其他权限几个大类,下面还含有丰富的细项,完全可以满足我们的日常需要(图11)。
 
 当然,我们不仅可以定义用户所属组的权限,还可以分别定义每个用户的不同操作权限,我们一起看看如何做到这一点。首先进入用户信息管理功能,它会提示选择条件来找出要修改的用户,这里我们选择列出所有的用户(图12)。先说说我们可以对符合条件的用户做哪些操作:
 
 ①点“删除”按钮将删除所选定的用户,此操作不可逆。

 ②批量移动用户到相应的组。

 ③点用户名进行相应的资料查看、修改操作。

 ④点用户最后登录IP,然后可进行封锁其IP的操作。

 ⑤点用户E-mail可给该用户发E-mail。
 
 这些操作都很简单,大家一看就明白了。下面就来讲讲权限编辑的功能,这就是我们定义单个用户权限的地方(图13)。这里会列出该用户需要定义权限的版面,如果已经定义过了,该版面将会用红色显示,如果是黑色就说明在这个版面中,该用户将继承所属组的权限。进入具体版面的权限设置,我们会看到它和组的定义非常相似,相信你自己可以搞定。
 
 好了,到此为止,你的个人论坛应该已经可以正常使用了,赶紧告诉你的朋友们吧,让他们来一起和你分享这份快乐!
 
四、定制插件

 上面所讲的都是论坛自身所具备的基本功能,而动网论坛最大的特点就是它强大的扩展性,我们可以通过安装插件的方式随时扩展论坛的功能。下面就一起来看看吧:
 
 想使用插件,就要先安装插件管理器,下载地址是http://plus.dvbbs.net/upload/03091110368651.rar,文件大小为38.5kB,解压开后总共有2个目录和5个ASP文件,将它们拷贝并覆盖论坛根目录下的相应目录。
 
 接下来给插件分组,进入论坛的管理后台,你会发现左边的功能栏里增加了两个功能项——“插件后台管理”和“插件访问统计”。选择前者,然后在第二行选择“增加新的组”,点击弹出新窗口,提示你输入一个组名,比如可以输入“社区设施”,然后选择添加,回到前一页面中,在最后一行就会多出一个叫“社区设施”的新组。如果想调整组的排序方式,只需点击“分类排序”,然后选择你要做的操作,再点击修改即可(图14)。这就是插件管理器的安装与使用。
 
 管理器不能只是“光杆司令”,还需要有插件才行,而插件的安装也非常简单。在插件管理器界面上点击增加插件,就会进入增加新插件的窗口,在其中可以指定使用插件的时间、插件使用权限等,后面的那些选项就视你的具体情况而定了。
 
 下面开始安装插件,选择一个“下载中心”的功能插件,有了它,论坛就可以有下载功能了。该插件的下载地址是http://plus.dvbbs.net/upload/03090818296938.rar,文件尺寸116kB。解压后可以看到有1个目录和62个ASP文件,Data目录内包含一个下载管理数据库文件Z_download.mdb。还是把所有目录及文件直接拷贝到你论坛根目录下,然后在插件管理中选择“添加”即可(图15)。添加完成后就可以在插件列表的相应项目后面看到一个“管理”选项,里面包括的管理项目有:添加上传软件、添加连接软件、修改删除、栏目管理、辅助功能、管理员、查看事件和付费管理等功能(图16)。这里要特别说明的是,有些插件是自带管理功能的,那么你只要在新增插件时选择“本插件提供后台管理”的选项,并在其“后台管理页面连接”中输入相应的文件名即可。安装好后,在插件列表相应的“编辑”和“删除”选项后面就会多出一个管理选项,点击这个管理选项就能进入该插件的后台管理页面了。
 
 回到前台,我们已经可以看到论坛新增的“下载中心”功能了(图17),如图18所示,这就是下载中心的用户界面。我们还可以添加插件访问统计的功能,这个功能可以让你了解论坛用户对哪些插件比较喜爱。要实现这个功能,你只需对插件中的主ASP文件做个小小的修改。
 
 以刚刚安装的下载中心为例,我们说明一下具体的修改方法:
 
 下载中心的主ASP文件为Z_down_default.asp,用记事本将其打开,一般在所有插件的主ASP文件中,其前两行代码均为:
 
 <!–#include file="CONN.ASP"–>
 <!– #include file="inc/const.asp" –>
 
 只要在它们下面加入一行代码即可:
 
 <!– #include file="z_pluscheck.asp" –>
 
 如此一来,就能在管理后台中了解到“下载中心”的访问次数了。
 
 怎么样,是不是对自己的网站更加充满信心了?我们相信只有想不到,没有做不到!如果真的想到一个很好的功能,但在网上又找不到合适的插件,那么也可以自己编写。当然,这需要我们深入学习ASP编程,如果将来你自己也可以编写插件,然后共享给大家使用,是不是很有成就感呢?就让我们大家一起努力吧!
 
本期推荐:

 资源类:

 1.ASP基础教材(http://www.kinfe.com/jiaoc/bcjc/aspphp/aspjc/index.html):一个非常基础的ASP学习网站,由浅入深,由简到繁,内容虽然不是很多,但也够用,可以让你在不知不觉中打好ASP基础。

 2.动态网站制作指南之ASP学习教程(http://www.knowsky.com/asp.asp):比较专业的ASP综合学习网站,内容相对较深,让你在学习中逐渐得到提高,无论是老鸟还是新手一定都会受益匪浅。

 3.ASP China(http://www.2yup.com/asp/):一个比较专业的ASP学习网站,内容包括源代码下载、经典技术文章荟萃等等。每日都有一定数量而且比较固定的访问群体,论坛比较出色,更新速度快,是一个ASP等动态网站学习的理想之地。
 
 欣赏类:

 1.http://www.summalp.com/flash/cur/2fmxcurstuff/flash.htm:一个强大的报表系统,是Flash中的ActionScript与后台数据库的结合体,实现了以往大型报表系统的复杂功能(图19)。这里包含了多少行程序代码可想而知……

 2.http://gskinner.com/site1/default.asp:Flash OS,顾名思义,就是Flash制作的操作系统(图20)。首先,的确比Windows漂亮!然后嘛,功能就不敢和Windows比了。但是就Web应用来说,它的功能是绰绰有余了,而它独特的导航系统也让人耳目一新。
 
下期预告:

 个性化的论坛安装及使用我们已经讲完了,而动网论坛其他的强大功能还有待我们去探索,你也可以自己动手做一定的修改,让论坛更加迷人。在下一期中,我们将继续介绍ASP动态网站的其他主要功能,想知道它们是什么吗?千万别忘了下期继续关注哦!



看完上期关于ASP功能、安装和配置等介绍,你是否有点心动呢?网页还是“动”起来才好哦!不过,“动”也一定要“鲜活灵动”,让所有变化都在掌握之中。可能你对自己还心存疑虑:我能做一个类似于http://news.cic.tsinghua.edu.cn/(图1)这样的综合动态网站吗?事实上,做动态网站的确要具备一定的编程能力,本文将通过介绍一些实例,尽量避开那些繁琐的程序代码,让你轻松制作一个完整的ASP动态网站,迅速成就自己的梦想!
 
 在制作动态网站之前,首先要规划一下自己的网站需要什么功能?通常制作个人网站的目的是为了介绍和宣传自己,将感兴趣的事物与大家分享、讨论,在互联网上结交更多的朋友等。如此说来,网站需要用到的动态功能可能包括:网站新闻、留言板、论坛、网上商店、访问计数器、文件下载、网站广告、投票等。网站最重要的功能之一就是发布消息,通过它能让访问者随时了解网站的最新动态,人们说内容是网站的灵魂,而新闻就是网站内容中的核心,一个功能完善、使用方便的新闻系统就是确保“灵魂”生动的必要条件。
 
1.软件包的下载与安装

 我们选择青创新闻管理系统为大家进行介绍。首先下载程序(http://www.qcsky.com/download/down.asp?Unid=302&down=1,152kB),然后在IIS的安装目录(默认为“C:\Inetpub\Wwwroot\”)中建“News”目录,最后将程序解压至新建目录中。这时可通过地址http://localhost/news/访问刚安装的新闻管理系统(图2)。不过现在只是一个默认状态,还要根据具体需要进行修改。
 
2.安全设置

 首先要考虑安全问题,因为任何人都能下载、使用这个新闻管理系统,如果使用默认配置很可能会存在安全隐患,所以我们对其要进行相应的修改。
 
 在“News”目录下有个叫“Article.mdb”的文件,它是整个新闻系统的数据库文件,所有配置信息和新闻都会储存在这里。它基于微软的Access数据库,所以有一个默认的安全问题:如果有人通过浏览器访问http://localhost/news/article.mdb,系统将会提示进行下载,这样访问者就可以轻易获取新闻系统的数据库文件,而该文件存储了新闻系统后台管理密码以及所有的新闻内容,后果便可想而知了。因此这里必须对数据库进行修改:可把数据库文件名由“Article.mdb”改为“Article.asp”,这样,当有人访问Article.asp时,服务器会将这个请求转换为对ASP页面的请求,也就不会下载了。但修改了数据库扩展名后,如何让新闻系统认出它呢?这里就有个ASP编程的关键问题,也是一个使用技巧:即数据库连接文件Conn.asp。
 
 每次对数据库进行操作时,都会在最开始的位置建立一个数据库连接对象,我们可以使用ASP中Server对象的“CreateObject”方法建立Connection对象,语法为:Set 对象实例名称=Server.CreateObject("ActiveX 控件")。这里我们的语句为:
 
 Set Conn=Server.CreateObject("ADODB.Connection")。
 
 然后我们使用Connection对象的Open方法来建立与Access数据库之间的连接:
 
 db="article.mdb"
 connstr="driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(""&db&"")
 conn.Open connstr
 
 “db”是数据库文件的文件名,“connstr”是我们连接Access数据库的连接字符串。“Conn.Open connstr”就按照connstr连接字符串的规定建立了连接。同样我们可以使用如下的连接字符串建立与SQL Server之间的连接:
 
 connstr="driver={SQL Server};server=localhost;UID=sa;PWD=;database=news"
 
 “server=”后面填写服务器名,“UID”是登录ID,“PWD”是登录密码,“database”是默认数据库。
 
 我们还可以通过在控制面板中使用ODBC Administrator来建立DSN数据源的方式,建立ASP与任意数据库之间的连接。这样可以不修改数据库连接程序而使用各种各样的数据库。操作方法如下:打开“控制面板”→“管理工具”→“数据源(ODBC)”→“系统DSN”,出现如图所示的界面(图3)。我们可以选择“添加”来增加数据库的新数据源(图4),而在程序中我们可使用如下的连接字符串:
 
 connstr="dsn=news"
 
 这里的“news”就是我们设置的数据源名,如果连接建立成功,就可以对数据库进行我们所需要的操作了。在使用中可能在很多地方都需要用到数据库,这就需要在每个ASP文件里书写相关的数据库连接程序,但在实际使用中通常不会这样做,而是根据模块化编程的思想,将数据库连接部分单独设置,然后在各个ASP文件中包括这个连接文件。如果要修改数据库连接的相关内容,则只需修改连接文件就可在每个ASP文件中得到体现。在ASP文件中,包括数据库连接文件的语句为:
 
 <!–#include file="conn.asp"–>
 
 OK,回到我们刚才所说的问题,修改数据库文件的名称之后,就需要给Conn.asp中的db重新赋值。打开Conn.asp文件,将db="article.mdb"改为db="article.asp",这样,新闻管理系统就可以使用新扩展名的数据库文件了。
 
 下一个需要修改的默认安全设置就是新闻管理系统的后台密码,默认的管理员用户名和密码都是“admin”。我们可以使用地址http://localhost/news/gl/来访问后台管理(图5),输入默认的用户名和密码即可进入青创新闻系统后台管理。可以看到,页面左边是一系列的管理功能菜单,右边则显示相对应的管理功能(图6)。在刚刚安装完新闻系统后,首先要进入用户管理里面修改默认的管理员用户名和密码。这是一个多用户的后台管理系统,你可以给不同的新闻管理员以不同的用户名和密码。(图7)
 
3.系统的使用

 主要的安全问题已经解决之后,我们来看看如何使用这套管理系统,并将其合理地整合到我们的网站中去。青创新闻管理系统是一个功能比较完善的系统,它不仅仅局限于网站新闻的管理,还可以进行整个网站的文章管理。我们从它的管理后台就可以看出来,它还具有栏目管理功能,如果我们仅仅使用这套系统管理网站新闻,只需要在这里建立一个名叫“网站新闻”的栏目(图8)即可。当然了,我们也可以建立多个栏目,把收集到的奇文妙语放到不同的栏目中与大家共享。这样一来,一个内容丰富的个人动态网站基本上就搭建好了。
 
 接下来,我们选择“添加文章”来动态更新网站上的新闻。这里要选择新闻所属的类别,然后在一个文章内容框内进行编辑(图9),我们还可以添加多种格式的媒体及效果使文章变得更加美观。新闻写完之后,点击添加按钮,刷新页面之后就可以看到刚刚添加的新闻了(图10),是不是很方便呢?如果希望别的网站也来引用这些新闻,扩大网站的影响力。此时就可以使用“JS 生成”的功能了(图11)。先选择生成的条件,这里可以选择引用最新的文章,也可以选择引用浏览人数最多的文章,然后点击开始生成按钮。这样就在GL目录下生成了新的News.js文件。而引用我们新闻的网站只需要简单的一行代码就可以将我们的新闻加入到他们的网站中去,如下:
 
 <script language="JavaScript" src="http://MyHost/news/gl/news.js"></script>
 
4.程序的修改

 在系统发布成功之后,我们会发现,访问到的新闻和文章有很多还是系统默认的界面,还是青创网络的内容。那么我们如何才能把这套新闻系统的功能整合借鉴到我们自己的网站中呢?这就需要用到前面所学的ASP知识了,首先要对现有的系统进行分析,然后通过移植、修改ASP程序来达到我们的目的。
 
 首先来看看默认的新闻系统是如何显示的。在前台新闻的显示上,总共有3个大的功能,分别是:栏目分类导航、近期热门文章和最新文章。对我们来说,通常只使用最新文章的功能,下面我们就来看看这项功能是如何实现的。
 
 打开默认的首页文件Default.asp,根据网页的显示结构,我们可以找到显示最新文章的相关代码,如下:
 
 <%
 if classid <> "" then
  sql = "SELECT top 10 [article].[articleid], [article].[title], [article].[dateandtime], [article].[hits], [article].[classid], [article].[Nclassid], [ANclass].[Nclass] FROM ANclass INNER JOIN article ON [ANclass].[Nclassid]=[article].[Nclassid] where article.classid = " & Classid & " ORDER BY [article].[articleid] DESC"
 else
  sql = "SELECT top 10 [article].[articleid], [article].[title], [article].[dateandtime], [article].[hits], [article].[classid], [article].[Nclassid], [ANclass].[Nclass] FROM ANclass INNER JOIN article ON [ANclass].[Nclassid]=[article].[Nclassid] WHERE [article].[Nclassid]=[ANclass].[Nclassid] ORDER BY [article].[articleid] DESC"
 end if
 Set rs=conn.execute (sql)
 if rs.eof and rs.bof then 
 %> 
 
 或没有找到任何文章的代码:
 
 <%else%> 
 <%do while not rs.eof%> 
 [<a href='index.asp?classid=<%=rs("classid")%>&Nclassid=<%=rs("Nclassid")%>'>
 <%=rs("Nclass")%></a>] 
 <a href="javascript:popwin2(‘list.asp?id=<%=rs("articleid")%>’)" 
 onmouseover="showPopupText" title="<%=rs("title")%>"><%=rs("title")%></a> 
 (<%if rs("dateandtime")=date() then%><font color=red><%=month(rs("dateandtime"))%>月
 <%=day(rs("dateandtime"))%>日</font>
 <%else%><font color=’#999999′><%=month(rs("dateandtime"))%>月
 <%=day(rs("dateandtime"))%>日</font><%end if%>,
 <font color=green><%=rs("hits")%></font>) <br> 
 <% 
  rs.movenext 
  loop 
  end if 
  rs.close 
 %>
 
 这里面有实现新闻显示功能的几个关键语句,下面我们作一个简单的介绍:
 
 set rs=conn.execute (sql):这是连接对象conn调用它的execute方法执行一个SQL语句,然后将执行的结果返回到一个名为rs的记录集对象中。
 
 if rs.eof and rs.bof then:记录集对象rs的eof属性表示记录的结尾,bof属性表示记录的开始,所以上面的这个语句是说如果返回的记录集对象rs的当前游标既是记录的开始又是记录的结尾,那么说明返回的记录集为空。
 
 <%do while not rs.eof%> 
 ……
 rs.movenext 
 loop 
 
 可能很多人都知道这是一个循环,循环条件是只要没有达到最后一个记录就继续执行循环体,循环体内会用rs的方法movenext将记录集的游标移动到下一个位置上。通过这样一个循环就可以显示出所有符合条件的新闻。
 
 在掌握上面这些关键的语句之后,我们就可以自己修改代码来完成新闻的显示功能了,根据页面布局将新闻放到合适的地方,并加以美化。将下面这段代码嵌入到我们的页面中(图12):
 
 <%
 sql = "SELECT top 10 * FROM [article] ORDER BY [article].[articleid] DESC"
 Set rs=conn.execute (sql)
 if rs.eof and rs.bof then 
 %> 
 
 或没有找到任何文章的代码:
 
 <%else%> 
 <%do while not rs.eof%> 
 <a href="javascript:popwin2(‘list.asp?id=<%=rs("articleid")%>’)"><%=rs("title")%></a> 
 (<%if rs("dateandtime")=date() then%><font color=red><%=month(rs("dateandtime"))%>月
 <%=day(rs("dateandtime"))%>日</font>
 <%else%><font color=’#999999′><%=month(rs("dateandtime"))%>月
 <%=day(rs("dateandtime"))%>日</font><%end if%>,
 <font color=green><%=rs("hits")%></font>) <br> 
 <% 
         rs.movenext 
         loop 
         end if
         rs.close 
 %>
 
 明白了这个道理,我们可以用同样的方法修改其它任何一个页面。怎么样,定制一套自己的新闻系统很简单吧?当然,这都要建立在多看多学的基础上。我认为最重要的就是掌握思路,知道该如何实现一个功能,而具体的语法细节我们可以自己慢慢查阅工具手册或请教他人。这样就会逐步积累经验,慢慢实现各种功能,将网站做得越来越有吸引力。
 
 另外,这套青创新闻管理系统还有很多其它功能,比如初始化、备份数据、恢复数据、数据压缩、批量处理等,随着对ASP认识的逐步深入,我们还可以自己摸索如何使用、开发类似的功能。
 
本期推荐:

 资源类网站:

 1.ASP/JSP资源网(http://www.aspjsp.net/h7.asp,图13):内含300多篇ASP技术文章,无论是初学者还是ASP高手都能轻松找到适合自己的内容。

 2.ASP解疑(http://city.6to23.com/35/):ASP虽然上手比较容易,但使用技巧花样繁多,也许你在应用过程中会碰到不少疑问,那么该网站将是一个好去处。
 
 欣赏类网站:

 1.Base Concept/Vbase(http://www.baseconcept.com/index.html ,图14):一个极富动感的网站,对人物动作和音乐的处理相当细致,信息量不大,却能让人过目不忘。

 2.Playground@upliftmofo(http://www.upliftmofo.com/):一流的设计加一流的美工,自然造就一流的美感。
 
下期预告:

 看完了这一期所讲的新闻管理系统,我们已经可以建立一个内容丰富的个人动态网站了。不过,互联网的魅力还在于它强大的互动性,有关它的介绍我们将留在下一期,千万别忘了下期的约定哦!



在前几章介绍的内容中,无论是HTML、CSS、JavaScript,还是Flash动画,它们都只是静态网页的形式,我们称其为“前台”制作,大家通过浏览器就能看到具体内容,但前台虽然美观漂亮,却没有动态交互性。作为网站的主人,一定很想知道当前页面上有哪些人正在访问,他们对自己的网站有什么想法建议等,而这就需要“后台”制作来实现,后台制作也称为动态网页制作。如果说“前台”是网站的形象,那么“后台”就是网站的灵魂。后台设计是网站制作的主要内容,一个大型网站都会有功能强大、程序复杂的后台程序。
 
 那么什么是动态网站呢?所谓“动态”,并不是指网页上简单的GIF动态图片或是Flash动画,动态网站的概念现在还没有统一标准,但都具备以下几个基本特征:

 1.交互性:网页会根据用户的要求和选择而动态地改变和响应,浏览器作为客户端,成为一个动态交流的桥梁,动态网页的交互性也是今后Web发展的潮流。
 
 2.自动更新:即无须手动更新HTML文档,便会自动生成新页面,可以大大节省工作量。
 
 3.因时因人而变:即当不同时间、不同用户访问同一网址时会出现不同页面,听起来是不是很酷?
 
 如今,各大论坛、聊天室人满为患,说明网络发展强调更多的交互性。也许你也想拥有一个私人论坛——听听别人对你主页的建议和看法;拥有一个聊天室——志趣相投的朋友在一起自由讨论……其实,只要跟我们一起了解动态主页的制作技巧,在自己的网站中轻松搭建个人社区就再也不是梦想了!那么,从本期开始,别忘了关注我们为你推出的动态网页制作技术教程。

 提起动态主页的制作,就不能不说到ASP动态网页技术。细心的读者会发现很多网站的文件是以*.asp结尾,那么这个ASP到底是什么,它与HTML有什么关系,又是如何工作的呢?不妨一起来看一看。
 
一、细说ASP

 ASP是Active Server Pages的简称,是微软开发的服务器端脚本环境,它内含于IIS或PWS中(相关内容参看2002年15期中《一步一步教你打造自己的个人服务器》一文),提供一个用于服务器端脚本执行的环境,以此来实现动态交互的目的,这也是许多动态网页技术的共同特征。本章内容均围绕IIS来进行讲解,PWS的内容与此大致相同。
 
 ASP的兴起似乎是“一夜之间”,到底它有什么“魔力“呢?

 1.无须编译或链接即可执行,可集成于HTML代码中,有了它,可省去许多繁琐重复的劳动。

 2.与浏览器无关:用户端只要使用可执行HTML代码的任何浏览器(例如IE、Netscape等),即可浏览由ASP所设计的主页内容。所有代码都是在服务器端执行,只要写好代码,工作服务器就能搞定一切。

 3.可通过ActiveX Server Components(ActiveX服务器组件)来扩充功能,而ActiveX Server Component可使用Visual Basic、Java、Visual C++、COBOL等语言来实现,有了它就可随意扩展功能。更令人兴奋的是,现在网上有很多第三方组件可以随意下载,想要什么尽可去Search、去Download,然后放在你的ASP代码中调用就OK啦。

 4.ASP与任何ActiveX Scripting语言兼容。除了可使用VBScript或JavaScript语言来设计之外,还可通过Plug-in的方式,使用由第三方提供的例如REXX、Perl、Tcl等脚本语言,学过动态主页制作的人都知道它们的重要性。

 5.ASP源程序代码不会在浏览过程中被下载到用户的浏览器中,也就是说它对你的代码进行了保密。太棒了,花了九牛二虎之力做好的东东可不能让别人轻轻点一下鼠标就拿走了。
 
 ASP作为一种动态网页制作技术易学易用,很是让人心动。接下来我们就来看看ASP是如何工作的,一般来说,ASP文件由3个部分组成:

 1.普通的HTML文本(也就是基本网页的内容)。

 2.客户端的脚本代码(<script>与</script>之间的程序代码)。

 3.服务端执行的程序代码(<%……%>之间的程序代码)。
 
 我们先来看一个简单的例子:

 hello.asp

 <% @language=VBScript%>
 <html>
 <head>
 <title>每天不同时刻的问候语</title>
 </head>
 <body>
 <%
 dim says
 if hour(now)<12 then
   says="早上好!"
 else
   if hour(now)<18 then
     says="下午好!"
   else
     says="晚上好!"
   end if
 end if
 %>
 <h1><% =says %></h1><body>
 </html>
 
 结果怎么样呢?如果浏览者是早晨10点打开这个网页,将会看见“早上好!”的问侯语(图1),如果是下午14点进入,页面中则会出现“下午好!”。上面<%……%>之间的程序由服务器来执行,而我们常用的脚本则是由客户端来执行。这个简单的例子包含了ASP的典型结构,并且强调了ASP的服务端执行,对于我们初学ASP有一定的参考意义。
 
 ASP动态网页与普通的静态网页在显示上有很大不同,它整个的运行过程可分成以下几步:

 第1步:用户在浏览器的网址栏中输入.asp文件名称,并回车触发这个ASP的请求。

 第2步:浏览器将这个Active Server Pages的请求发送给IIS。

 第3步:IIS接收这个请求并根据其.asp的后缀,意识到这是个ASP请求。

 第4步:IIS从硬盘或内存中接收正确的ASP文件。

 第5步:IIS将这个文件发送到一个叫ASP.dll的特定文件中。

 第6步:ASP文件将会从头至尾被执行,并根据命令要求生成相应的静态页面,生成HTML主页。

 第7步:HTML主页将被送回浏览器。

 第8步:HTML主页将会被用户浏览器解释执行并显示在用户浏览器上。
 
 为了清晰地说明问题,以上步骤已经进行了很大简化。事实上,一个ASP并不一定每次都会重新编译解释,如果第二次接受以前的请求,而该请求没有任何变化,ASP会从数据缓存中提取出以前的结果,而不是再次运行ASP程序,这样可以大大提高运算速度。

 对于服务器来说,ASP与HTML有着本质的区别,HTML是不经任何处理就被送回给浏览器,而ASP的每一条命令都首先被用来生成HTML文件,这也正是ASP允许生成动态内容的原因之一,也是动态网页复杂之所在。

 另一方面,对于浏览器来说,ASP和HTML几乎没有区别,仅仅是后缀为*.asp和*.htm(或*.html)的不同,当客户端提出ASP请求后,浏览器接受的其实是HTML格式的文件。通过以上一个简单的ASP例子,有两点必须记住:有些代码是在服务器端执行,有些是在客户端浏览器端执行,而在浏览器端看到的是经过服务器解释之后输出的代码。
 
二、ASP的基本语法

 VBScript是ASP的缺省语言,当然也可在ASP网页中使用其它脚本语言,如JavaScript、Perl等。这里所有的ASP都使用VBScript,我们将要介绍的也主要是VBScript的语法知识。相信通过前些期JavaScipt专题的学习,你一定对VBScript驾轻就熟了,其实VBScript跟JavaScript很类似,它是从Visual Basic中简化出来的版本,作为一种解释语言,也非常容易学习和使用。

 1.将VBScript的脚本集成到ASP中

 方法主要有3种:最简单且最常用的方法是使用两个特殊字符“<%”和“%>”,只要在使用的VBScipt脚本语句前后加上它们即可,例如:<% Response.write"VBScipt脚本" %>。

 第二种方法是在特定的主页中指定主要的脚本语言,要将这种语言名称直接放在ASP程序的第一行,例如:

 <% @language=VBScript %>
 <html>
 <body>…
 </body></html>

 第三种是方法是利用微软的HTML<Script>拓展对象,这样就可以在一个单独的主页中混合使用多种Script脚本。例如下面的例子:

 <% @language="VBScript" %>
 <html>
 <head><title>ASP Script示例</title></head>
 <body>
 <script language="JScript" RUNAT="server">
 function sayhello()
 {
 response.write(“混合使用多种script脚本”)
 }</script>
 <% for I=1 to 10
 sayhello()
 next
 %>
 </body>
 </html>

 需要注意的是,使用<script>包含的脚本会立即执行,无论它放在ASP的任何位置。此外,上面提到的第二和第三种方法,可以在ASP中灵活使用其他的脚本语言,而不只是局限于VBScript。

 2.注释VBScript脚本

 程序员一定要养成加入注释的好习惯(学好了动态网页技术就是程序员啦!),那么在VBScript脚本中如何做到这一点呢?跟大多数程序一样,VBScript可以用撇号(’)来建立注释,注释在这一行的末尾结束,也就是说这种注释只能用来注释一行。例如:
 
 <%
 FOR i=1 TO 100 ’循环的开始
 myvar=myvar+1 ’给myvar变量加1
 NEXT ’循环结束 %>
  
 3.VBScript中的变量和常量

 变量是VBScript中一种最基本的数据类型,在VBScript中,严格来讲,变量是不用声明的,如:

 <% Mystring="This is my string" %>

 尽管如此,我们也应养成在编程时声明变量的良好习惯,因为这样有助于防止错误发生。在VBScript中声明一个变量可以使用“Dim”语句,还可以一次声明多个变量,只要用逗号隔开。如:
 
 <% 
 Dim Mystring 
 Mystring="This is my string"
 Dim Top,Bottom,Left,Right
 %>
 
 变量的作用也有范围,在过程内部声明的变量是局部变量,具有局部作用域。每执行一次过程,变量就被创建然后消亡,而过程外部的任何命令都不能访问它。在过程外部声明的变量是全局变量,具有全局作用域,其值能被ASP页上的任何脚本命令访问和修改。声明变量时,局部变量和全局变量可以有相同名称,但为了防止混淆,还是建议使用多种不同的名字。而常量是用来放置一些不会改变的文字或数值,它在整个脚本中保持不变。在VBScript中使用Const语句来创建用户自定义的常量,可以创建名称具有一定含义的字符串型或数值型常数,并给它们赋值。例如:

 <% Const mystring=" 这是一个常量" %> 
 <% Const myage=100 %>
    
 需要注意的是,字符串文字包含在两个小写引号(")之间。这是区分字符串型常数和数值型常数最明显的方法,日期文字和时间文字包含在两个井号(#)之间。例如: 

 <% Const CutoffDate = #9-1-03# %>
 
三、想制作出ASP技术的动态网页,首先得要有ASP的运行环境才行,运行ASP可以有多种配置供你选择:  

 1.NT Server(Win2000、WinXP等)+IIS(这是作为真正的服务平台而使用的配置)

 2.Win9X+PWS(这是作为调试编程的很好组合)

 3.其它带有ASP解析器的Web服务器(不推荐)
 
 绝大多数ASP都运行于Windows操作系统上,下面就以在Win2000上安装IIS为例来说明ASP运行环境的配置(WinXP也与此类似)。

 1.安装IIS:进入控制面板之后,点击“添加/删除程序”→“添加/删除Windows组件”按钮,接着从组件列表中选中Internet信息服务(图2),单击下一步,这时安装程序会提示将Win2000的安装盘放进光驱,接着点击“下一步”,即可成功安装IIS。安装完成之后,它会在系统上建立其主页发布的路径,例如C:\Inetpub\wwwroot,重启之后,每次开机之后都会自动运行。
 
 2.测试你的配置

 下面我们用一个简单的ASP程序来验证你是否配置正确。

 <html>
 <head><TITLE>ASP运行环境测试</title></head>
 <body>
 <%
 Response.Write("Hello ASP!")
 %>
 </body>
 </html>

 用任何一种文本编辑工具(例如记事本,当然也可以利用可视化的编辑器,如Frontpage或者Visual Interdev等),输入以上代码,并另存为Hello.asp。将该文件复制到C:\Inetpub\wwwroot下,并确保你的IIS正在运行。然后打开浏览器并在地址栏中输入http://127.0.0.1/Hello.asp。如果浏览器上显示的效果如图3所示,则表明你的ASP环境已经配置好了。任何一个ASP程序,以后只要将它们复制到C:\Inetpub\wwwroot下即可运行。如果使用的是Win9X系统,那么需安装Personal Web Server(PWS),它在Win98安装盘的Tools\PWS下。安装好后,PWS会在Windows所在的硬盘分区上建立其主页发布路径Inetpub\wwwroot,PWS也会在机器启动后自动执行,其测试方法同IIS一致。
 
 3.对IIS进行设置

 在安装完IIS之后,仍需对IIS进行设置,设置一个可执行的目录来执行ASP文件,具体步骤如下。

 ①点击“开始”菜单中的“管理工具”→“Internet服务管理器”。

 ②在Internet信息服务左边的窗口中点开默认的Web站点,如图4所示。 

 ③选择要存放并且执行ASP的目录,右键点击该目录名称后选择“属性”,在出现的窗口中点击“目录”→“主目录”或“虚拟目录”(命名依据这个目录的性质)的标签,在执行许可项中,选择“脚本或者可执行程序”项即可(如图5)。

 ④现在已创建了一个可以执行ASP的目录,将所有ASP的文件放在这个允许执行的目录下即可。
 
 注意:如果用浏览器直接打开ASP文件,这时IIS以及ASP是不会执行的,看到的将是ASP脚本内容,而不是希望得到的执行结果。因为ASP要经过服务器解释才能执行,ASP文件应该放在IIS的Web目录下,这样才能保证ASP经过服务器解释。访问时,应该在浏览器地址栏中输入服务器的IP地址或域名,以及该ASP文件相对Web目录的路径。例如,IP是127.0.0.1,同时该网站的根目录下运行一个叫Mypage.asp的文件,那么在地址栏中输入http://127.0.0.1/Mypage.asp,才能保证得到希望的运行结果。
 
本期推荐:

 资源类网站:

 1.ASP精品站(http://www.asp999.com/,图6):一个比较经典的ASP学习与交流网站。主要栏目有精品论坛、精品下载、技术文章等栏目,上面提供的很多文章对初学者入门来说都大有裨益。

 2.动网先锋(http://www.aspsky.net/,图7):一个非常专业的动态网站在线学习站点。提供各种源码程序下载,几乎不用编写程序即可快速打造一个个性化的动态网站。更新十分迅速,是一个非常理想的学习站点,而它开办的论坛人气也比较旺盛,可以让你在交流中不断提高。

 3.情创网络(http://www.qcsky.com/):以ASP学习资源为主,还兼有其它电脑操作技巧的学习网站,内容比较全面详实。

 4.PConline ASP专题(http://www.pconline.com.cn/pcedu/empolder/wz/asp/index.html):笔者最初学习ASP还是在这个网站上呢,内容比较多,你不妨一看。
 
下期预告:

 通过本章的学习,相信你对ASP的基本概念、语法知识都有了一定的了解,还搭建了一个ASP的运行环境。实践永远是问题的解决之道,那么下一章我们将会打造一个个性化的新闻系统,向综合性动态网站进军!



经过3个月对Flash的磨练,我们终于走到了终极一步:Flash与后台的整合。做网站,就肯定需要动态效果,过去,我们用ASP、PHP来实现,如今有了Flash,我们同样可以将它与动态ASP、PHP结合起来,让内容在闪动的Flash中呈现!Flash同后台结合有很多种办法,可以和ASP、PHP等多种Web开发语言结合,开发功能强大的应用程序,也可以用Flash MX的同门兄弟ColdFusion MX来整合,这里我们以后者为例进行介绍。
 
 1.ColdFusion MX

 很多开发者都用过ASP、PHP、JSP、CGI等语言,但遇到很多让人头疼的问题,比如跨平台:在Windows平台上开发的程序移植到Linux等其它系统上就不能正常工作,需要大段大段修改程序才能运行;还有语言学习的问题,要学JSP就必须对JAVA有所了解,而JAVA语言的复杂性让人望而生畏……而Macromedia ColdFusion MX不但简单易学、功能强大,并且实现了跨平台移植和开发。按照Macromedia的战略,ColdFusion MX是一套面向企业的应用服务体系,它不仅仅是一种语言,更是基于J2EE基础架构的有自己独特开发方式的产品,可以轻松构建强大功能的企业级应用程序。它既然这么强,那么做个小小的个人网站就更没问题了。那么,怎么样才能用ColdFusion MX来开发Flash应用程序呢?

 首先我们需要一个Web服务器,就是ColdFusion MX自带的Web server(可以去http://www.macromedia.com下载一个试用版),我们用它来处理后台数据。同时还需要一个数据库,例如Access;最后我们编写一些CFM文件,就可以自由开发Flash应用程序了。

 整个结构运作的基本原理是首先利用CFM文件(即ColdFusion MX编程语言编写的动态网页程序)连接Access数据库,接着利用CFM文件向Flash发送数据或从Flash中获取数据并存入数据库。在Flash中我们利用AS(Action Script)读取CFM文件,来获得CFM数据库中的数据,然后再把它赋予给相应的变量。整个过程比较复杂,但不难理解,举个形象的例子,Flash要和数据库做生意,但由于一些问题:语言不通或没有过业务联系,只能找一个代理人——ColdFusion来促使它们之间进行沟通。ColdFusion在这方面显然是个好手,与各种“商家”都有联系,懂得多国语言,轻轻松松就让Flash和数据库两个人做成了买卖。
 
 咱们下面就以制作一个留言板来开始我们的实际演练。留言板需要有读和写的功能,所以我们需要两个Movie:一个Read.swf和一个Write.swf。

 第一步:安装ColdFusion MX,它的安装很简单,按部就班即可。输入以下地址来进入ColdFusion MX:http://localhost:8500/cfide/administrator/index.cfm,或点击开始,选择程序组的Macromedia ColdFusion MX里Administrator选项来打开管理界面(如图1),输入管理密码,这个密码是你在安装过程中设定的(如图2)。ColdFusion管理界面和它的其它同门兄弟相比,最大的不同就是它基于Web页面,且全部是由CFM编写成的,它的界面风格也和Flash、Dreamweawer等类似。

 先来设置一个站点,在ColdFusion MX的安装文件夹里可以找到一个Wwwroot文件夹,这个就是Web的根目录。在下面新建一个目录“BBS”,然后在管理界面中的Mapping中建立一个虚拟目录的映射/bbs(图3),这样就建立了一个http://localhost:8500/bbs的站点(图4)。

 第二步:建立数据库。打开Access(Office组件之一),建立一个名叫BBS的表,包含ID、Name、E-mail、Content这4个字段,其中ID为自动编号型、Content为备注型、Name和E-mail为文本型(图5),接着保存在BBS目录中,名字为BBS.mdb。

 第三步、建立ODBC数据源,将数据库同网站连接起来。ColdFusion支持SQL Server、MySQL、Access以及ODBC等多种类型的数据库连接,这其中最简单的是Access数据库,只需把数据源指向刚才建立的BBS.mdb。但笔者在实验过程中发现有时这种方法会导致错误,为了稳定起见,我们决定用ODBC数据源来导入Access数据库:打开“控制面板”→“ODBC数据源”,选择系统DSN标签下的添加按钮(图6),然后选择数据库指向BBS.mdb,添加名字和说明,其他默认(图7)。

 第四步:在ColdFusion MX引入刚才建立的数据源,随意起个名字,选择ODBC Socket(如图8),点击Add按钮,在ODBC DSN下拉菜单中选择BBS,点击Submit,如果页面显示“Datasource updated successfully”就说明添加成功,接下来就可以在动态页面中使用了。

 第五步:建立一个Wirte_msg.cfm,用来向数据库中写入数据,它的内容如下:

 <cfquery name="tobbs" datasource="bbs">
 INSERT INTO tobbs(
 name,
 email,
 content
 )
 VALUES(
 ’#name#’,
 ’#email#’,
 ’#content#’
 )
 </cfquery>

 简单解释一下,<cfquery>这个标签是用来建立查询的,它指向刚建好的那个数据源:BBS,即Datasource="bbs"。下面就是简单的SQL语句,把’#name#’文本框内的值插入到数据库中的Name字段中。简单的3行语句,就可以把Flash中写好的留言发送到数据库中,是不是很简单?

 第六步:在Flash中建立一个新文件Write.swf,在第一帧添加:

 stop();

 然后加入3个Input文本框,分别设置VAR属性为Name、E-mail和Content。接着加一个Send按钮,给按钮绑定如下的AS:

 on (release) {
 // 向Write_msg.cfm发送数据
 _root.loadVariables("http://localhost:8500/bbs/write_msg.cfm", "POST");
 }
 on (release) {
 gotoAndPlay(2);
 }

 在第二帧中写上“添加留言成功!”几个字,并在AS中加入:

 stop();

 下面我们添加一个查看留言按钮,用来打开显示留言的Read.swf文件(这个文件我们会在后面建立),按钮的AS如下:

 on (release) {
 _root.loadMovie("read.swf",0);
 }

 测试一下,在文本框中输入数据,然后点击Send按钮,这时数据已经添加到数据库中了。但我们还无法看到,下面我们就通过Read.swf来显示留言。

 第七步:建立一个Read_msg.cfm文件,从数据库中读取留言,它的内容如下:

 <!—解决汉字显示问题,CFM和Access连接的时候会出现中文乱码的问题—>
 <cfcontent type="text/html">
 <!—建立查询—>>
 <cfquery name="frombbs" datasource="bbs">
 SELECT * FROM frombbs 
 </cfquery>
 <!—向Flash中的MSG文本框输出数据—>
 <cfoutput>&msg=</cfoutput>
 <cfoutput query="frombbs">#frombbs.name#<br>#frombbs.email#<br>#frombbs.content#<br></cfoutput>
 <!—读取完毕—>
 <cfoutput>&loaded=ok</cfoutput>

 这个文件的主要用途是建立一个Cfquery查询,然后把BBS表中数据的Name、E-mail和Content的内容输出给Flash中的MSG动态文本框,最后一个Loaded=1是判断数据是否读取完毕。

 第八步:在Flash中建立一个Read.swf,在第一帧添加:

 //解决Flas中显示中文乱码的问题
 System.useCodePage = true;
 _root.loadVariables("http://localhost:8500/bbs/read_msg.cfm","POST");
 点击第二帧加一个关键帧,加入一个文本框“正在读取信息,请稍后”;第三帧加一个关键帧,写入如下代码:
 if(loaded==1){
 gotoAndPlay(4);
 }
 else{
 gotoAndPlay(2);
 }

 这里用了一个判断语句来读取Read_msg.cfm中的Loaded变量值来判断数据是否读取完毕,如果读取完就显示留言,如果没有就转到第二帧。接下来在第四帧加一个关键帧,添加一个Multiline的动态文本框,因为传递过来的数据包含<br>这一HTML标签,所以设置为兼容HTML格式的文本框。然后设置VAR属性为MSG(如图11)。

 第九步:输出测试。这时数据库中的全部数据在Flash中显示出来,可以加入一个滚动条来上下滚动查看内容(图12)。

 这个留言板很简单,功能还不完善。大家可以尝试去添加一些其它功能,比如翻页、回复等。由此还可以开发论坛、用户添加、注册、登录系统,原理都是类似的,只不过要在CFM的编写上多做做文章。
 
 2.Shared Objects

 也许你会想:只要存储数据,就必须要有数据库。那可不一定,接下来我们介绍一下Flash MX一个很新颖的东东Shared Objects,它存储数据就不需要数据库。Shared Object翻译过来也就是分享对象的意思,它的原理和Cookie很相似,让Flash Player在客户机上存储一些数据,比如你最常访问的页面、E-mail地址等,这也是Flash Player在客户机上存储数据的唯一办法。这些数据只能让存储它的网站读取,用来了解你的偏好、你玩Flash游戏的得分等。不过,这些数据必须都是你愿意提供的,否则网站就是侵犯你的隐私权哦!那么可能你会问,这些数据会占多大的空间?我们可以通过在Flash Player中单击右键然后选择“设置”来设置占用空间的大小,就是这个网站能在你的电脑上存储多少数据(图13)。

 这些数据即使在关掉Flash Player、甚至重启电脑的情况下也不会消失,因此我们可以利用Shared Objects来制做一个每周备忘录,让你把每天的备忘录、账目、流水账等乱七八糟的东西记录起来,然后把这些数据存储到Shared Objects中,以后随时可以读取查看。这样我们即使不用数据库也可以实现读写功能,可以说非常吸引人。下面我们就开始实际操作。

 第一步:建立一个新文件。为了保密起见,我们添加一个用户验证功能。新建一个场景:Login,在第一帧中用“stop();”函数让动画停止,等待验证。在场景里面添加两个文本框和一个按钮,文本框分别起名为Name和Pass,按钮上的文字为Login;第二帧中添加文字:“密码错误!”以及回到第一帧的按钮。然后在Login按钮上添加下面的脚本:

 on (release) {
 if(user==flash && pass==letmein){
 gotoAndStop("Main",1)
 }else{
 gotoAndStop(2)
 }

 如果密码和用户名正确,就进入Main场景。

 第二步:建立第二个场景Main,用来放置备忘录。在场景里面添加一个Mydate文本框,用来显示日期;然后添加7个单选框,代表周一到周末,分别起名为:RadioMonday、RadioTuesday……RadioSunday,这样点击其中一个单选框就会显示当天的备忘录,注意要使它们属于同一个Group(如图14);再添加一个MC起名为BOX,放置输入文本框MainText和两个按钮:重置和关闭,名字分别为ResetButton和CloseButton,布局如图15所示。

 第三步,加入计算日期的AS。在第一帧中加入下面的脚本:

 stop();
 //得到当前日期
 var today = new Date(); 
 var currentDay = today.getDay(); 
 var currentMonth = today.getMonth(); 
 var currentDate = today.getDate(); 
 var currentYear = today.getFullYear(); 
 mydate = (currentMonth + 1) + "/" + currentDate + "/" + currentYear;
 
 第四步,首先我们希望进入备忘录时文本框不可见,那么_root.box._visible=false;。

 然后来定义Shared Objects。因为一周有7天,所以可定义一个函数来读写,用某天来作为一个参数,比如:createNewLocal(weekday)。还需要一个实例MyLocalSO来放置这些Shared Objects,这个实例会记录下被录入的文本,然后把它传递给BOX中的MainText储存起来。

 function createNewLocal(weekDay){
 myLocalSO = sharedobject.getLocal(weekDay);
 //如果Shared Objects不为空,就传递给BOX中的mainText
 if (myLocalSO.data.myText != null) {
 _root.box.mainText.text = myLocalSO.data.myText;
 } else {
 //如果Shared Objects为空,就提示撰写备忘录
 _root.box.mainText.text = "请撰写"+eval("weekDay")+"的备忘录";
 }//当mainText的文字改变时调用函数把文字存储起来
 _root.box.mainText.onChanged = function() {
 myLocalSO.data.myText = _root.box.mainText.text;
 }
 }
 
 第五步:按钮的脚本可以直接绑定到按钮上,也可通过帧的脚本来控制。下面我们用帧脚本来为“重置”按钮添加动作。接着上面的AS,继续添加:

 _root.box.resetButton.onRelease = function () {
 //重置文本框
 myLocalSO.data.myText = null;
 //显示提示信息
 _root.box.mainText.text = "请撰写"+eval("weekDay")+"的备忘录";
 }
 “关闭”按钮:
 _root.box.closeButton.onRelease = function () {
 _root.unloadMovie();
 }
 
 第六步:为单选框添加动作,构思如下:点击代表某一天的单选框时,就在文本框中显示那天的备忘录。首先,为单选框设置标签:

 _root.radioMonday.setLabel("Monday");
 _root.radioTuesday.setLabel("Tuesday");
 _root.radioWednesday.setLabel("Wednesday");
 _root.radioThursday.setLabel("Thursday");
 _root.radioFriday.setLabel("Friday");
 _root.radioSaturday.setLabel("Saturday");
 _root.radioSunday.setLabel("Sunday");

 然后为整个RadioGroup添加动作,确保每当我们点击一个单选框时就会产生事件来调用相关函数:

 radioGroup.setChangeHandler("onChange");

 上面我们定义的函数为onChange,下面我们就来定义这个函数:

  function onChange(component){  
    //如果Monday单选框被选中
      if (_root.radioGroup.getValue()=="Monday"){
      //则显示BOX
      _root.box._visible = true;
      //并且建立一个新的名为Monday的Shared Objects
      createNewLocal("Monday");
      }else if (_root.radioGroup.getValue()=="Tuesday"){
      _root.box._visible = true;
      createNewLocal("Tuesday");
      }else if (_root.radioGroup.getValue()=="Wednesday"){
      _root.box._visible = true;
      createNewLocal("Wednesday");
      }else if (_root.radioGroup.getValue()=="Thursday"){
      _root.box._visible = true;
      createNewLocal("Thursday");
         }else if (_root.radioGroup.getValue()=="Friday"){
      _root.box._visible = true;
      createNewLocal("Friday");
      }else if (_root.radioGroup.getValue()=="Saturday"){
      _root.box._visible = true;
      createNewLocal("Saturday");
      }else if (_root.radioGroup.getValue()=="Sunday"){
      _root.box._visible = true;
      createNewLocal("Sunday");
      }
 
 第七步:大功告成,输出测试吧。首先看到的只有7个单选框,文本框不可见,当然,日期工作正常(图16);然后点击Monday,文本框出现,并提示“请撰写Monday的备忘录”,点击其它的也都类似(图17);分别在不同日期的文本框内输入自己的备忘录,关闭Flash Player退出,再打开Memopad.swf时,就会看到我们上次输入的备忘录(图18);除非被重置,否则它就不会消失。怎么样?当个自己的小流水账本,还是蛮不错的吧?
 
 本期我们主要以Flash怎样动态存储、读取文件为主题,结合ColdFusion MX和Shared Objects进行了一些小演练。这些实践都很简单,但却很有趣,也有一定的实用性,希望能够引起大家的兴趣,去扩展、开拓,打开Flash之门,进入一个全新的领域!
 
 酷站赏析:

 1.http://www.summalp.com/flash/cur/2fmxcurstuff/flash.htm:一个强大的报表系统,用ActionScript和后台数据库的结合使用,实现了以往大型报表系统的复杂功能(图20)。这里面包含着多少行程序代码?可想而知了……

 2.http://gskinner.com/site1/default.asp:Flash OS,顾名思义,就是Flash制作的操作系统(图21)。首先,的确比Windows漂亮,但功能就不能和Windows比了,就Web应用来说,它的功能是绰绰有余。独特的导航系统,肯定会让你对XML的理解加深一层。
 
 下期预告:我们这份Flash大餐烹饪完毕了,不知道你是否满意,如果“色、香、味”不够全别忘了来信告诉我们哦!看到本期介绍的动态效果,你有没有想过全新打造一个具有特色的动态网站呢?那么就让我们一起来期待即将到来的精彩吧!


任何一个Flash动画都是由各种素材集合而成,优秀的Flash作品除了在动画设计上标新立异之外,往往都会有令人耳目一新的素材。如果你是一个Flash制作的初学者,在素材设计与选取过程中可能会时常感到头疼。如今,网上各类精美的Flash动画应有尽有,因此各种素材也可谓取之不尽、用之不竭,那么我们何不奉行“拿来主义”呢?不仅将这些素材重新利用,而且还可对原有的Flash作品解剖,分析其结构并进行再创作。模仿也是一种学习,相信经过“移花接木”,你就会实现从“超级菜鸟”到“高级闪客”的快速转变了!要对网上各种精彩的Flash动画进行再创作,就必须要经历Flash动画的下载、素材的还原、Flash动画的再创作等几步。实际上,利用一些已有的软件我们就能轻松实现这一切,下面就一起来看看。
    
一、Flash动画的下载

 很多精彩的Flash动画往往都会嵌入在网页中,它们炫目的效果让人流连忘返,但每当你满怀希望去下载时却发现利用普通方法无从下手。其实,Flash动画的下载与普通文件的下载方法不尽相同,我们可以尝试使用如下两种办法:

 1.查看网页的源文件

 网页是由HTML语言来组织和描述的,Falsh动画作为网页中的一种媒体文件,自然也要在网页源文件中留下自己的行踪。我们如果能找到它们的藏身之地,就可轻松将其下载。具体的操作方法如下:在出现某个Flash动画的网页上,点击鼠标右键,在出现的菜单上选择“查看源文件”命令,网页源代码就通过记事本显示出来,接着在记事本上按下快捷键“Ctrl+F”,在弹出的对话框中输入“swf”,就能找到Flash动画的文件链接,将该链接复制粘贴到下载工具(例如Flashget、Netants和吸血鬼等)的下载框中(如图1所示),点击下载即可轻松将其占为己有了。不过需要注意的是,这里的文件链接可能是相对路径或绝对路径,如果是相对路径,还需要将其转换成绝对路径,方法是在相对路径的前面加上该网页的URL地址即可。

 2.利用专用的软件

 模仿创作需要大量的Flash动画,如果按照上面介绍的方法下载Flash动画,每次按部就班操作一番,未免有些麻烦。下面为你介绍一款功能强大的Flash动画下载工具——Flash Jester Woof(以下简称Woof),它可在本地路径、IE浏览器的临时文件夹里检索并预览SWF文件,是一款共享软件,在没有注册的情况下试用期为30天。它的参考下载地址为:http://www.flashflag.com/administrator/resource/file/woofv10_evaluation.exe(1.0版,英文界面,978kB)。

 Woof的使用非常简单,点击Search Path右面的文件夹图标,就可以选择本机上的驱动器或文件夹,然后在Media Type(媒体格式)里选择想检索的媒体文件类型,点击查找按钮,即可检索到想要的媒体文件了(如图2所示)。Woof支持3种媒体类型的文件格式,包括Flash、RM和JPEG等。Woof还提供Flash预览窗口,通过它就可轻松找到自己所需要的Flash动画。

 另一款非常优秀的Flash动画下载工具是IEPlus Pro,它是IE上的插件,能在浏览网页过程中直接点击右键保存相应的Flash文件,很方便,它的参考下载地址为:http://www.shuttlesoft.com/chs/iepluspro1.4.chs.exe(中文界面,520kB),未注册情况下只能免费使用20天。程序安装完成后在IE的工具条上点击鼠标右键,选择IEPlus Pro,就会发现工具条上多了个按钮,点击该按钮并选择“快速保存”,就可浏览当前窗口包含的所有Flash文件和各种图片了(如图3),选择某个你想要保存的Flash动画,点击“保存为”,即可将它们保存在你指定的位置。
 
二、Flash动画剖析与素材还原

 看到别人精美的Flash动画,你一定会有所心动,而美妙的动画设计总是与素材的选取分不开。因此在制作Flash动画过程中,有效合理地利用其它Flash动画中的素材将会达到事半功倍的效果。如果能下载到FLA格式的Flash源文件,只要使用复制、粘贴命令就能将其引入素材导出。但网页上出现的大部分Flash动画一般都是以SWF或EXE格式存在,它们不能转换成为FLA格式。因此,要得到这些Flash动画中的素材就需要一些专门软件来完成。

 1.SWF格式

 ①查看声音、图片等基本素材

 SWF Browser(http://www.skycn.com/soft/2710.html,版本号为2.93,中/英文界面都有,1200kB):它可以轻松将Flash动画中的素材还原出来。启动SWF Browser后(如图4),在界面的左上角“目录”处选择存放SWF文件的目录,在“文件”处就会显示当前目录中的所有SWF文件,选择并点击某个Flash文件,在主窗口中就会播放当前动画,还可用中部竖直排列的一排播放按钮对播放过程进行控制。要剖析选中的这个SWF文件,单击预览窗口上方的“SWF分析状态”即可,稍等片刻,SWF Browser就会自动帮你分解出当前SWF中的声音事件、声音流、图片、影片剪辑以及SWF文件的内部结构(如图5),并且可以预览,如果碰到喜爱的就双击将它们保存下来,供以后学习和使用。如此这般,SWF的Flash动画素材就被轻松还原出来。因为某些原因,可能一些SWF格式的Flash动画是加密过的,我们可以点击菜单中的“工具”→“解锁SWF文件”命令,即可将其另存为解密之后的SWF文件。解密过的SWF文件不能直接进行编辑,必须使用Flash 5.0以上版本新建一个空白影片文件,使用“文件”→“导入”命令,将其导入再进行编辑。

 SWF Scanner(http://www.skycn.com/soft/66.html,版本号为2.6.3,1025kB,如图6):它犹如一把手术刀,能将Flash中所有素材彻底剥离干净,它不仅能得到SWF文件中的图片、声音等基本素材,还能让Flash中的Action Script也一览无余,无论对“菜鸟”还是“老鸟”来说,都是一大福音。它的使用非常简单,打开某个Flash动画文件,窗口左边就会列出当前Flash动画文件中所有的元素,包括Action Script代码、声音、图像和动作等等。单击展开这些项目,Flash中的结构就会历历在目(如图7),当看到满意的素材时,点击“工具”→“提取该对象”就可以将它们保存起来。在中间窗口会列出当前打开Flash动画的影片属性,包括文件大小、文件长宽、图像数量、声音数量和帧数等,方便你从整体上对Flash动画有个清晰的认识。如果提取Action Script代码,根据左栏显示帧数并结合对应代码,就能摸索到当前Flash动画中的精妙之处。还能直接在该软件上“移花接木”,将当前Flash中的图片一一换成自己的。具体的操作办法如下:在左边窗口处选中要替换的图片,然后点选菜单上的“工具”→“替换图像”,选择好你自己的图片,点“替换并保存”就大功告成了。

 ②查看脚本

 优秀的Flash作品都会对Action Script脚本有着很精妙的运用,因此,深入了解并学习别人的脚本是提高Flash制作水平的一个捷径。下面介绍一个专用的脚本查看器——Action Script Viewer(ASV,http://www8.pconline.com.cn/download/download.phtml?id=97863,735kB,英文界面),它可将Flash 4.0、Flash 5.0和Flash MX编译的动作脚本进行反编译并转换为文本格式,能把脚本拷贝到剪贴板、保存为文本文件或直接拷贝到Flash动作脚本编辑器中。ASV输出的动作脚本语法与源代码基本一样,因此使用起来更加方便。ASV是绿色软件,解压后直接运行可执行程序即可(如图8),它包括一个脚本阅读窗口和一个预览窗口。在脚本阅读窗口中有5个标签选项,分别是“Timeline(时间线)”、“Frames(帧)”、“Instance Names(事件名称)”、“Library(库)”和“Action Scripts(脚本)”,在“Action Scripts”标签处,可以浏览到每一帧中所包含的脚本(如图9所示)。点击菜单上的“Utility”→“Copy ActionScript(as text)”或“Save ActionScript(as text)”,即可将解剖得到的脚本拷贝或保存到TXT文本文件中去,不过遗憾的是,Action Script Viewer在没有注册的情况下只能读出SWF文件前5帧中的脚本,并且最多只能显示25行脚本程序。
 
 2.EXE格式

 上面介绍的3款软件主要是针对SWF格式的Flash动画。那么,要是碰到EXE格式的Flash是不是无计可施了呢?其实,只要将这些EXE格式的Flash转换成SWF格式,这个问题就迎刃而解了。目前这样的转换工具很多,这里为大家推荐的是一款名为“Exe2Swf转换器”的软件,它的下载点为:http://www.yiroom.com/soft/down3/exe2swf.zip(100kB)。Exe2Swf转换器是完全免费的绿色软件,功能单一,使用起来也非常简单。启动程序之后,打开要转换的Flash动画文件,选择保存目录之后单击“转换”按钮,稍等片刻,转换工作就已经完成(如图10所示)。如果要批量转换,单击“添加”按钮将批量动画添加,然后点击“全选”和“转换”按钮,转换工作就会自动完成。
 
三、Flash制作与设计的辅助工具

 对精彩的Flash作品全面剖析后,就可以利用得到的一些素材随心所欲进行Flash再创作了,经过前几期学习,相信你已经熟练掌握Flash制作技术了。主要制作工具当然得依靠Flash MX,不过为了得到更酷更绚的效果,还可以利用其它一些功能强大、易于操作的辅助工具。

 1.SWISH

 Flash动画总是离不开五彩缤纷的文字特效,但很多炫目的文字效果却经常需要几十层甚至上百层才能完成,不过如今有了SWF文字特效制作利器SWISH,一切就变得简单了。SWISH作为一款非常方便的Flash字体特效制作工具,能结合许多细节来达到绚丽的效果,直接预览并导出为SWF格式。它参考的下载点为http://www.skycn.com/soft/2545.html(v2.01 Build2003.03.03,3.96MB,英文界面,共享软件)。SWISH的安装很简单,无需Flash支持也能稳定运行(如图11)。SWISH是通过编辑场景属性和对象属性来制作完成Flash动画的,属性标签栏中比较重要的几个选项其功能如下:

 Timeline:时间线选项。它与Flash MX的时间线有异曲同工之妙,是最重要的控制部分,可以在这里增加、删除特殊效果,还能仔细设置每个特效的具体参数,添加后的特效也可用鼠标拖动到合适位置,当和其它特效冲突时会自动调整位置,十分方便。

 Scene:场景选项。这是活动选项,选择场景时可定义场景之间的链接,下面的目标选择框类似于Flash中的Geturl命令,比如可以选择在本窗口还是新窗口里打开链接;当选择文本时,在这里就可定义文本大小、字体、颜色、对齐方式等。

 Action:行为选项。支持鼠标事件和简单Action创建交互,与Flash中的Action非常相似,只不过不能编辑Action Script。

 在具体创作时,可在场景列表中通过单击选定场景和文本对象,具体操作与Windows画图程序基本操作非常相似,我们要做的就是选择所需特技效果和出场位置、顺序。
 
 2.Mix-FX

 另外一款非常值得推荐的Flash特效文字制作软件是Mix-FX,它可以十分方便地制作数量众多的特效文字。Mix-FX声称可支持百余种文字特效,制作过程虽然简单,但其效果却十分专业。

 Mix-FX参考的下载点为http://www8.pconline.com.cn/download/download.phtml?id=109248(英文界面,865kB)。程序启动后,可看到它由一个预览显示窗口和3个属性栏组成(如图12),只需设置这3个属性栏即可得到各种复杂、绚丽的文字特效。首先设置文本属性(Text Properties),在这里输入文本、选择字体和动画效果,然后设置文本效果和背景效果(Text Effects和Background Effects),最后按照自己的需要设置影片属性(Movie Properties),包括电影的文件长度、宽度和颜色等,设置完成点击“Update”按钮即可预览到最后的显示效果。
 
 上面介绍的几款辅助工具,无论是Flash动画的下载、素材的获取与分析还是Flash再创作以及各种辅助工具,对我们扎实地打好Flash基本功都大有好处,取人之长、补己之短就是不断创新的源泉。不过分析别人的作品只是一个手段而已,实际操作中更应该多思考、多动手,只有这样,才能做出优秀的Flash作品来。
 
 下期预告:下一期我们将会给大家带来Flash最新的发展方向,Flash与后台的结合。别忘了到时候与我们一起体味精彩!