1、摘要基于 PHP 技术的个人网站设计【摘要】 随着互联网的高速发展,传统的 WEB 应用已经显得力不从心,而WEB2.0 的出现极大改善了这一局面。所谓 WEB2.0 其核心就是用户不再只是被动的网页浏览者,他们既是网站浏览者,也是网站内容的制造者。未来的互联网趋势必然是 WEB2.0。因此,以虚拟社区为主题,突出 WEB2.0 思想,构建一个由用户提供主要的网站内容,管理员只负责整理,发布用户提供的话题,然后供用户参与讨论的网站,比起传统的由管理员单一提供资源相比,有着提供资源更多,更全,网站与用户交互性更强等优势。本课题使用 PHP 技术设计一个具有 WEB2.0特点的个人网站及其相应的功
2、能模块。 开发环境结合了 PHP,Mysql 和 Apache,利用这三种开源工具,来实现一个以虚拟社区为主的个人网站。【关键词】 WEB2.0 网站,个人网站,PHP 技术 浙江大学城市学院毕业论文 AbstractIPersonal web site design based on PHPphp+mysql+apache develop and application【Abstract】 The plan of the thesis is to design a personal web site and function modules whitch has the characteri
3、stic of WEB2.0. The development enveriment combines PHP,Mysql,Apache,using the three open sourse tools to bring about a personal web based on virtual community.With the Internet developing faster and faster the tradition web site was strength fall short of wishes. And the WEB2.0s appear changed the
4、situation extraordinary. The nucleus of WEB2.0 is that the user is no longer just viewing the page passively. The user is both viewer and creater. The future of the Internet is WEB2.0. So using WEB2.0 ideology and based on virtual community to create a web site whitch user create the contents and th
5、e administator just operate the web site and publish the contents whitch created by the user. To compared with the tradition web site was more abundant,safer,and has more user exchange.The purpose of the web site:protrude the WEB2.0 ideology,increase user exchange. For the users they are also viewer
6、 and creater that can increase the visit numbers and ease the work of the administrator.【Key Words】 personal web site,php technology,WEB2.0,user exchange,virtual community浙江大学城市学院毕业论文 目录II目录第 1 章 绪论 11.1 WEB 2.0 时代的互联网 .11.1.1 关于 WEB 2.011.1.2 关于 PHP .21.2 个人网站和虚拟社区 .2第 2 章 可行性分析 32.1 技术可行性分析 .32.2
7、网站功能分析 .3第 3 章 开发环境和开发方法 43.1 开发环境 .43.1.1 关于 PHPnow 43.1.2 其他开发工具 43.2 开发方法 .5第 4 章 基于 PHP 的个人网站设计总体设计 64.1 主要页面 64.1.1 主界面 64.1.2 个人日记 64.1.3 管理员界面 64.1.4 论坛界面 64.2 论坛功能设计 .74.2.1 论坛运行流程图 84.2.2 用户级别设计 9第 5 章 详细设计 105.1 数据库设计 .105.1.1 博客文章表 105.1.2 博客评论表 105.1.3 用户表 115.1.4 用户文章表 115.1.5 用户文章评论表 1
8、25.1.6 置顶文章表 135.1.7 短消息表 135.1.8 注册码表 14浙江大学城市学院毕业论文 目录III5.2 具体功能实现 .145.2.1 用户注册登录 145.2.2 用户个人信息管理 185.2.3 管理员登录 215.2.4 管理员功能 215.2.5 博客 225.2.6 论坛 255.2.7 站内短消息 285.2.8 系统配置与公共头文件 .285.2.9 javascript 和 Ajax .29第 6 章 测试 316.1 测试环境 .316.2 测试内容 .31结论 32参考文献 33致谢 34浙江大学城市学院毕业论文 图目录IV图目录图 4.1 网站功能流
9、程图 8图 5.1 登陆界面 18图 5.2 查看注册码 20图 5.3 个人控制面板 21图 5.4 管理员论坛用户管理界面 24图 5.5 管理员论坛管理界面 24图 5.6 博客文章列表 25图 5.7 论坛主界面 28图 5.8 站内短消息界面 30浙江大学城市学院毕业论文 表目录V表目录表 4.1 用户权限表 .9表 5.1 admintextform10表 5.2 diaryreplyform11表 5.3 userform .11表 5.4 usertextform .12表 5.5 userreplyform .13表 5.6 hottextform.13表 5.7 messa
10、geform 14表 5.8 keyform 14浙江大学城市学院毕业论文 第 1 章 绪论0第 1 章 绪论1.1 WEB 2.0 时代的互联网在当今 IT 技术快速发展的今天,网页已经从 WEB1.0 时代发展到了WEB2.0,WEB2.0 是一种更先进的理念,能更大程度的满足当下用户所谓需求。WEB2.0 的大趋势不可逆转,互联网正经历一次新秩序的建立1。WEB2.0 的先进理念有:更加开放、平等、协作、共享、精准。能充分展现个人才华,集结群众智慧、广泛获取信息、提高办事效率。市场更加细分、网络更加社会化、资源更加优化配置,大家都有更多成功的机会。归根到底,用户需求变化推进互联网的发展。
11、首先,在 WEB2.0 时代信息爆炸的情况下,用户希望获得的信息更加精准;其次,希望提高使用互联网的效率或者效果;第三,希望能够按照自己的习惯和方式来使用互联网服务2。综上所述,学习一种适应 WEB2.0 理念的动态网页开发技术不论是在目前的 WEB 开发应用领域还是将来互联网的发展中都是十分有帮助的。1.1.1 关于 WEB 2.0所谓 WEB 2.0,并没有什么明确的定义,一般来说 WEB2.0 是相对 WEB1.0的新一类互联网应用的统称。Web2.0 是一个新生的术语,它更注重用户的交互作用,用户既是网站内容的消费者,也是网站内容的制造者3。也有人生动的将WEB2.0 称作 “大众的新
12、智慧” ,即利用网络来发掘大众的智慧。还有很多这种概念的支持者认为 WEB2.0 服务将取代传统桌面计算机应用4。浙江大学城市学院毕业论文 第 1 章 绪论11.1.2 关于 PHPPHP 是目前最流行的网站脚本语言之一,有着简单,轻便,开源免费且功能强大的优势。PHP 支持目前主流的各种数据库如 MS SQL,MySQL,Orcale 等,并具有很好的跨平台性,除了对 Windows 有很好支持,还能在 Linux 以及 Unix上使用,且不同平台间代码的转移十分简便,无需大量修改。以上的各种优点,使 PHP 同 Apache,MySQL,Linux 组成的 LMAP 成为了最具性价比的 W
13、EB 系统5 。同时 PHP 有着成熟的面向对象体系,也能适应大型项目的开发。1.2 个人网站和虚拟社区在 WEB2.0 时代互联网快速发展的背景下,建立网站已经不是专业的学术机构、大公司或者资深的计算机专家的专利了,网站变得越来越普及,越来越有亲和力,而越来越多的人也开始将自己交友,娱乐,获取信息的平台选择在了网络上。加上技术的进步,开源软件的发展,使得网站的成本逐渐降低,因此,大量由个人建设的网站出现在了网络世界中,并快速发展,预计 2009 年中国个人网站所占总网站数的比例是 25%,个人网站的繁荣为网络世界的发展提供了动力6。而虚拟社区这一典型的 WEB2.0 概念技术在与个人网站结合
14、下,使得网站的内容和互动性得到了更好的表现。浙江大学城市学院毕业论文 第 2 章 可行性分析2第 2 章 可行性分析2.1 技术可行性分析本课题网站制作的目标是建立一个具有虚拟社区功能的个人网站,这是一个具有典型的 WEB 2.0 特征的网站。网站的规模不会很大,网站内的内容主要通过用户之间的互动来跟新,而站长则主要负责管理。为了实现这样的设计目标,网站必须使用支持动态页面的开发语言,而目前流行的动态网页语言主要有三种sun 的 java jsp,微软的 和 zend 的 php。在分析了网站的规模需求和开发效率以及三种语言各自的特点后觉得采用 PHP 来完成本次的设计,PHP 是目前最流行
15、的网站脚本语言之一,有着简单,轻便,开源免费且功能强大的优势。相比于性能较低、跨平台性差的 ASP 和繁琐的 JSP,PHP 有着轻便、简单、跨平台、安全等优点,十分适合个人网站这类中小型网站的开发7。数据库方面虽然 sql server,oracle 等大型商业化的数据库工具有着优异的性能,但对于个人网站这一类小型的项目,这类产品显得过于昂贵复杂。而功能强大体型小巧的 MySQL 是一种完全开源免费的数据库工具,并且在许多开源项目的实践应用中展现出了不亚于大型商业化数据库的性能,因此 MySQL 完全可以满足要求本次设计中对于数据库应用的需求。而 web 服务器的选择上是同样为开源软件的 A
16、pache,一个目前使用最为广泛的 web 服务器产品,有着出色的兼容性和跨平台性。这样,本次设计中的网站开发运行环境就确定下来了。2.2 网站功能分析主界面(myindex.php)提供各个界面的链接和站点综合信息。日记浏览界面(view_diray.php)普通用户可浏览站长的日记并发表评论。浙江大学城市学院毕业论文 第 2 章 可行性分析3站长可以通过管理员帐号写新日记或对旧的日记做修改。论坛主界面(main_form.php)提供论坛资源浏览。供用户发表新话题。普通用户有登录,注册,修改个人信息的功能。提供发送站内短消息功能。管理员界面(admin_main_form.php)站长可以
17、管理日记,修改日记。站长可以在此修改用户信息,更改用户状态,删除用户。站长可以对用户发表新话题的进行审核,对话题状态进行修改,删除话题。浙江大学城市学院毕业论文 第 3 章 开发环境和开发方法4第 3 章 开发环境和开发方法3.1 开发环境开发环境选择在 windows 环境下的 PHP5.5+Apache2.2+MySQL5,浏览器为IE7 和 Firefox3,开发工具使用 Dreamweaver,图片处理使用 fireworks 和photoshop。PHP 与 Apache,MySQL 的组合虽然有着诸多优势,但三种出自不同作者的开源软件要能很好的配合工作,需要很多手工配置,这往往会为
18、编程人员造成一些不必要的麻烦,因此有 PHP 的爱好者将这三种开源软件结合发布了名为PHPnow 的环境套件包,只需要简单的安装配置后,PHPnow 就会为你将 PHP 的开发运行环境配置完成,为 WEB 开发人员带来了许多便利。3.1.1 关于 PHPnowPHPnow 是由 PHP 的爱好者制作的集成环境包(下载地址 http:/phpnow.org/) ,目前 PHPnow 的最新版本号为 1.5.1,其中集成了 Apache2.0.63/ 2.2.11,PHP5.2.8,MySQL5.0.77/ 5.1.31, Zend Optimizer3.3.3 以及phpMyAdmin3.1.2
19、,包含了 PHP 开发运行所需的各种软件和工具,安装配置简便,是当前开发 PHP 的首选套件包8 。3.1.2 其他开发工具Dreamweaver 是一种优秀的 WEB 设计,脚本编写工具,支持PHP,ASP,JSP 等多种脚本,还有着强大的 javascript,css 应用功能,编程、设计界面布局合理,非常适合用来设计网站界面、编写网页脚本程序。Fireworks 是一种功能强大的 WEB 图片编辑工具,对 PNG,JPEG ,GIF 等 WEB 主流应用图片有着很好的支持,更有着诸多 WEB 图片应用方面的功能,很适合本次设计的浙江大学城市学院毕业论文 第 3 章 开发环境和开发方法5各
20、种需求。3.2 开发方法原型法(Prototyping)是 20 世纪 80 年代随着计算机软件技术的发展,特别是在关系数据库系统(Relational Data Base System,RDBS) 、第四代程序生成语言(4th Generation Language,4GL)和各种系统开发生成环境产生的基础上,提出的一种从设计思想、工具、手段都全新的系统开发方法。它扬弃了那种一步步周密细致地调查分析,然后逐步整理出文字档案,最后才能让用户看到结果的繁琐作法。它遵循了人们认识事物的客观规律,将模拟的手段引入系统分析的初始阶段,沟通了人们(用户和开发人员)的思想,易于掌握和接受,使系统开发的时间
21、、费用大大地减少,效率、技术等方面都大大地提高9。使用原型法来开发本次的设计十分适合,因为本次制作的个人网站规模较小,如果使用其他复杂的计算机工程方法开发,会带来许多不必要的步骤,增加了开发的周期而最后得到的效果却与原型法所差无几。但是系统开发中一些重要的环节仍是在设计过程中必须注意和努力完善的,如系统未来的拓展能力,代码的重用率,网站的安全程度,不同平台的兼容性,等等。浙江大学城市学院毕业论文 第 4 章 基于 PHP 的个人网站总体设计6第 4 章 基于 PHP 的个人网站总体设计4.1 主要页面网站的页面主要分为:主界面,个人日记(博客) ,管理员界面,论坛界面四部分。不同的主界面有不同
22、的功能模块和功能页面组成。4.1.1 主界面这是用户登录后浏览的第一个页面,主界面的色调,LOGO,各类功能选项,布局结构等是整个站点的基础,让用户对于整个站点的内容,结构以及功能有一个初步的了解。主页面提供用户前往其他页面的超链接,登录注册的窗口,以及一个新闻窗口,用来罗列站长选择的新闻资讯和站内热门话题等。4.1.2 个人日记这是一个简单的博客,站长可以在这里发表自己的文章或日记,而用户登录后可以对文章内容发表评论。4.1.3 管理员界面这是站长独有的功能界面,在这里站长可以对整个站点进行管理。用户的基本信息修改,用户论坛权限修改,论坛内容以及博客内容的修改都可以在这里实现。4.1.4 论
23、坛界面论坛即是一个虚拟社区,它提供来到站点的用户互相交流的平台,这是整个网站的核心部分,用户在注册后来到这里可以通过发表话题和回复话题的方式进浙江大学城市学院毕业论文 第 4 章 基于 PHP 的个人网站总体设计7行交流,不同等级的用户在这里拥有不同的权限。管理员管理用户发表的话题以及用户在论坛里的回复内容。4.2 论坛功能设计论坛是本站点的主体。用户在注册登录后可以加入这个虚拟社区的交流中,但为防止恶意注册,或使用马甲进行人身攻击等行为,新用户注册必须获得注册码,注册码可以由管理员或高级用户提供,普通注册用户在获得一定积分或管理员给予高级用户权限后,可以获得一部分管理员权限。任何非禁言状态用
24、户都可以在论坛内发表话题,经管理员审核后其他用户可以发表评论,若发现不合理言论,管理员可以屏蔽其评论情况严重的可以对其禁言。论坛还提供短消息功能,这是论坛内用户进行小范围交流的平台,用户可以互相发送只有发送双方才能看到的信息,可以作为一个简易的邮箱使用,也可以作为站长发送站内通知的工具。浙江大学城市学院毕业论文 第 4 章 基于 PHP 的个人网站总体设计84.2.1 论坛运行流程图主界面判断用户类型论坛界面普通用户功能: 发表新话题 收发站内短消息 回复 引用回复 修改个人信息管理员功能: 所有普通用户权限 审核新话题 禁言用户 锁定话题 发表新话题 回复 引用回复 修改普通用户信息用户登录
25、( 注册)退出主界面管理员界面 用户管理 个人日记管理 论坛话题管理 锁定话题 置顶话题 删除话题 删除用户 禁言用户 更改用户积分高级用户功能: 所有普通用户权限 部分管理员权限图 4.1 网站功能流程图浙江大学城市学院毕业论文 第 4 章 基于 PHP 的个人网站总体设计94.2.2 用户级别设计站点内的用户等级分为三类,其中管理员帐号拥有最高权限,高级用户其次,拥有部分的管理员权限,普通用户的权限最低。表 4.1 用户权限管理员 高级用户 普通用户发帖 有权限 有权限 有权限回复 有权限 有权限 有权限推荐 有权限 有权限 需要一定积分修改主题 有权限 有权限 可以修改自己的主题修改回复
26、 有权限 有权限 可以修改自己的回复查看用户信息 有权限 有权限 有权限引用 有权限 有权限 有权限为用户加分 有权限 有权限 无权限屏蔽回复 有权限 有权限 无权限审核主题 有权限 无权限 无权限置顶主题 有权限 无权限 无权限锁定主题 有权限 无权限 无权限删除主题 有权限 无权限 无权限禁言用户 有权限 无权限 无权限提示用户等级 有权限 无权限 无权限删除用户 有权限 无权限 无权限浙江大学城市学院毕业论文 第 5 章 基于 PHP 的个人网站详细设计10第 5 章 基于 PHP 的个人网站详细设计5.1 数据库设计整个站点的数据库使用 8 张表存放信息,admintextform 存
27、放博客文章,diaryreplyform 用来存放用户在博客的留言,userform 存放用户信息,usertextform存放用户发表的主题,userreplyform 存放用户在论坛内的评论,hottextform 记录用户对主题所作的置顶操作,messageform 存放站内短消息,keyform 存放注册码。5.1.1 博客文章表admintextform 表用来存放博客文章,id 是文章的编号为主键,这个值由数据库自动生成,title 是文章的标题,content 是文章的内容,datetime 是文章完成的日期格式为年- 月- 日,view 和 reply 分别是文章的被浏览数和回
28、复数。表 5.1 admintextformid int(10) 主键 文章编号title verchar(50) 非主键 标题content text 非主键 内容datetime date 非主键 日期view int(10) 非主键 浏览数reply int(10) 非主键 回复数5.1.2 博客评论表diaryreplyform 用来存放用户在博客的留言,id 是留言在表内的编号为主键,自动生成值,diaryid 是用户回复文章的编号, username 是回复者的称呼,content是回复内容,datetime 是回复日期,格式为年-月-日,exacttime 是回复时间,格浙江大学
29、城市学院毕业论文 第 5 章 基于 PHP 的个人网站详细设计11式为时-分- 秒。表 5.2 diaryreplyformid int(10) 主键 回复编号username verchar(50) 非主键 用户名diaryid int(10) 非主键 回复文章编号content text 非主键 内容datetime date 非主键 日期exacttime time 非主键 时间5.1.3 用户表userform 存放用户信息,id 是用户的编号为主键,自动生成。 username 是用户称呼,usertype 是用户类型, password 是用户的密码,这三行的内容在注册时必须填写不
30、能为空。email 是用户的电子邮件地址, realname 是用户的真实姓名,regedate 是用户注册日期,格式为年-月-日。locked 判断用户是否被锁定,0 表示正常,1 表示用户被锁定。img 是用户自定义头像初始有默认值,writes 是用户发表的主题数,reply 是用户回复的统计,marks 是用户的积分,sign 是用户的签名。表 5.3 userformid int(10) 主键 用户编号username verchar(50) 非主键 用户名usertype verchar(50) 非主键 用户类型password verchar(50) 非主键 密码email ve
31、rchar(50) 非主键 电子邮件realname verchar(50) 非主键 真实姓名regdate date 非主键 注册日期locked int(2) 非主键 禁言img verchar(255) 非主键 头像图片writes int(10) 非主键 发表主题数reply int(10) 非主键 回复数marks int(10) 非主键 积分signs text 非主键 签名浙江大学城市学院毕业论文 第 5 章 基于 PHP 的个人网站详细设计125.1.4 用户文章表usertextform 存放用户发表的主题,id 用户文章的编号,自动生成为主键。title 是文章的题目,co
32、ntent 是文章的内容。username 是用户的称呼。datetime 和exacttime 是注册的日期和时间,格式分别为年 -月-日和时-分-秒。view 和 reply 是主题的被浏览数和回复数。locked 判断主题是否被锁定,0 表示正常,1 表示锁定。sticky 判断主题是否置顶,0 表示未置顶,1 表示已被置顶。examine 判断主题是否通过审核,0 表示还未通过审核,1 表示已通过审核。hot 用来统计用户对主题执行的置顶操作数。editorname 和 editdate、edittime 是修改主题的用户称呼和修改的是日期、时间,日期和时间的格式分别为年-月-日和时-
33、分-秒。表 5.4 usertextformid int(10) 主键 文章编号title verchar(50) 非主键 标题content text 非主键 内容username verchar(50) 非主键 作者datetime date 非主键 日期exacttime time 非主键 时间view int(10) 非主键 浏览数reply int(10) 非主键 回复数locked int(2) 非主键 锁定sticky int(2) 非主键 置顶examine int(2) 非主键 审查hot int(10) 非主键 推荐editorname verchar(50) 非主键 修改
34、者editdate date 非主键 修改日期edittime time 非主键 修改时间5.1.5 用户文章评论表userreplyform 存放用户在论坛内的评论,id 是回复在表内的编号,自动生成为主键。replyid 为回复的主题编号。 content 为回复内容,quote 为引用的回复内容。username 是用户的称呼,datetime、exacttime 是回复的日期、时间。replyno为回复该主题时的次序。shut 用来判断回复是否被屏蔽,0 表示正常,1 表示被屏浙江大学城市学院毕业论文 第 5 章 基于 PHP 的个人网站详细设计13蔽。editorname ,edit
35、time 和 edittime 为修改回复的用户名,修改日期和修改时间。日期和时间的格式分别为年-月-日和时-分- 秒。表 5.5 userreplyformid int(10) 主键 回复编号replyid int(10) 非主键 回复主题编号content text 非主键 内容quote text 非主键 引用username verchar(50) 非主键 作者datetime date 非主键 日期exacttime time 非主键 时间replyno int(10) 非主键 回复该主题的次序shut int(2) 非主键 屏蔽editorname verchar(50) 非主键
36、修改者editdate date 非主键 修改日期edittime time 非主键 修改时间5.1.6 置顶文章表hottextform 记录用户对主题所作的置顶操作, id 是置顶记录的编号,支持生成为主键。username 为执行置顶操作的用户名。title 为置顶文章的内容。datetime和 exacttime 是执行置顶操作的日期和时间,日期和时间的格式分别为年-月-日和时-分-秒。 。textid 是被置顶的文章编号。表 5.6 hottextformid int(10) 主键 编号username verchar(50) 非主键 用户名title verchar(50) 非主键
37、 标题datetime date 非主键 日期exacttime time 非主键 时间textid int(10) 非主键 文章编号浙江大学城市学院毕业论文 第 5 章 基于 PHP 的个人网站详细设计145.1.7 短消息表messageform 存放站内短消息,id 是消息的编号,自动生成为主键。poster和 receiver 是消息的发送者和接收者。title、content 是消息的题目、内容。datetime、exacttime 是短消息发送的日期和时间,日期和时间的格式分别为年 -月-日和时- 分- 秒。表 5.7 messageformid int(10) 主键 消息编号po
38、ster verchar(50) 非主键 发送者receiver verchar(50) 非主键 接收者title verchar(50) 非主键 标题content text 非主键 内容datetime date 非主键 日期exacttime time 非主键 时间5.1.8 注册码表keyform 存放注册码,id 是注册码的编号,自动生成为主键。owner 是注册码的所有者,user 是注册码的使用者,注册码未被使用时该值默认为空。keyworks是注册码的内容。表 5.8 keyformid int(10) 主键 注册码编号owner verchar(50) 非主键 拥有者user
39、 verchar(50) 非主键 使用者keywords verchar(15) 非主键 注册码5.2 具体功能实现为了能更好的说明网站的具体功能和实现方法,下面从网站的注册登陆开始,一步步的介绍站内的功能并说明功能实现的方法及其代码。浙江大学城市学院毕业论文 第 5 章 基于 PHP 的个人网站详细设计155.2.1 用户注册登录注册的链接点击有两处,分别在主界面 my_index.php 和论坛主页main_form.php 上,点击链接后进入的页面相同为 create_user.php。注册时必填的信息为用户名,密码,确认密码,电子邮件,真实姓名和注册码,将其中注册码的获得在后面说明。点
40、击确认信息被传送到 add_user.php,首先判断必要的信息是否正确输入,之后查询数据库内的用户名,查看新用户名是否已经存在,如果上述检查有一步没有通过,则终止注册,显示错误信息。在输入信息检查完成后,判断用户是否提交了自定义头像,签名这两项附加信息,根据不同输入情况分别使用四条 SQL 语句将新用户的信息加入数据库。其中自定义头像需要专门的图像函数以及文件上传函数操作,将在下一节介绍。用户注册关键代码如下:$username=$_POSTusername; /用户名$password=$_POSTpassword; /密码$repassword=$_POSTrepassword; /重复
41、密码$realname=$_POSTrealname; /真实姓名$email=$_POSTemail; /电子邮件$signs=$_POSTsigns; /签名$keywords=$_POSTkeywords; /注册码.输入信息判断.四种不同情况的 SQL 语句if(!$signs浙江大学城市学院毕业论文 第 5 章 基于 PHP 的个人网站详细设计16else if(!$img else if($imgElse /既没有签名也没有头像$sql=“insert into userform (username,password,email,realname,regdate)values($u
42、sername,$password,$email,$realname,NOW()“;$result=mysql_query($sql); /执行 SQL 语句注册后在主页面的登录框内输入用户名密码或点击论坛主页上的链接便可以登录网站了。其中主页面在每次加载时检查是否有登录数据传送,如果有则查询数据库判断用户的类型,并将用户名存入不同的全局变量中,管理员:$_SESSIONadminname;高级用户:$_SESSIONadminusername;普通用户:$_SESSIONusername;浙江大学城市学院毕业论文 第 5 章 基于 PHP 的个人网站详细设计17普通用户还要将用户是否被禁言的
43、状态保存在全局变量$_SESSIONstate中10。之后刷新主页面。此时登录框内显示欢迎用户登录的信息。若未发现登录数据,则在登录框内显示输入栏由用户输入用户名密码后执行上述步骤登录。而论坛上的登录链接打开 login_user.php 页面,用户在输入用户名密码后,代码执行和主页面相同的判断,全局变量处理步骤后将页面转回到论坛主界面。图 5.1 登陆界面关键判断部分的代码:if($_POSTsubmit)/SQL 查询 userform 表并将结果复制到变量$rows.if($rowsusertype=admin) /管理员$_SESSIONadminname=$rowsusername;
44、 /管理员 SESSION 变量if($rowsusertype=adminuser) /高级用户$_SESSIONadminusername=$rowsusername; /高级用户 SESSION 变量$_SESSIONusername=$rowsusername; /普通用户$_SESSIONstate=$rowslocked; /用户状态变量浙江大学城市学院毕业论文 第 5 章 基于 PHP 的个人网站详细设计18用户注册时所需的注册码可以由管理员、高级用户和积分达到一定程度的用户申请获得。点击 edit_user.php 页面上的申请注册码链接进入 ask_key.php 页面,在确
45、认用户权限无误后检查用户已有未使用的注册码数量,目前用户可以拥有的未使用注册码上限暂定为 10 个。全部检查完成之后使用随机字符串 substr()函数和随机数 rank()函数生成注册码11,以拥有一定积分的用户为例的代码:$username=$_SESSIONusername; /获得用户名$sql=“select * from userform where username=$username“; /查询用户积分$result=mysql_query($sql); /执行查询$rows=mysql_fetch_assoc($result); /获得查询结果if($rowsmarks=5)
46、/普通用户需要积分达到 5 分以上$sql=“select count(*) from keyform where owner=$username and user is null“;/用户可以拥有的未使用注册码数量最多为 10 个$result=mysql_query($sql);$rows=mysql_fetch_row($result);if($rows0=10) /超过 10 个报错Exitmessage(“你只能拥有 10 个可用的注册码“);while($true=0) /true 变量用来识别新申请的注册码是否存在,如果新注册码也存在则 true 为 1,使用 while 循环重
47、新生成新的注册码$keywords=substr(“ABCDEFG“,rand(0,6),“1“).substr(“ABCDEFG“,rand(0,6),“1“).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);/使用随机字符函数 substr()和随机数函数 rand()生成注册码$sql=“select * from keyform where keywords=$keywords“; /查看新生成的注册码是否已存在$result=mysql_query($sql);$rows=
48、mysql_fetch_assoc($result);if(!$rows) /新的注册码已存在 true=1浙江大学城市学院毕业论文 第 5 章 基于 PHP 的个人网站详细设计19$true=1;$sql=“insert into keyform(owner,keywords)values($username,$keywords)“;/将新注册码添加到 keyform 表中$result=mysql_query($sql);echo “你申请的注册码为:“.$keywords.“;之后用户可以点击 edit_user.php 页面上的查看注册码查看自己拥有注册码的情况。图 5.2 查看注册码
49、5.2.2 用户个人信息管理用户在注册登录后便可以点击主界面和论坛主页上的链接进入个人管理中心edit_user.php 查看管理自己的信息。修改后数据将被送到 edit_user_data.php 处理。其中大部分的代码和工作过程基本和注册时相同,只是将原来注册时的 SQL 语句插入 insert 改为修改 update。接下来介绍网站内自定义图片的操作及其代码。自定义图片设计到 PHP 文件上传函数和 PHP 图片操作函数。首先为了能实现文件的上传,需要在 HTML 表单的代码做修改如下:必须设置 enctype 属性为 multipart/form-data,意思为设置表单的 MIME 编码,这样才能