组长:xx
班级:xx
实训内容以及要求:论坛系统设计,完成论坛的基本功能,如注册与登录、用户的管理、版块管理(版块的建立与删除或关闭)、注册用户登录后允许发贴,也可以对他人的帖子进行评论(跟帖)、未注册用户只能浏览信息等。尽可能的使网站做的好看些。
一、实训内容:
实训所用软件:Dreamweaver cs4, Photoshop cs4 ,WampServer ,Navicat for MySQL。
1.数据库建立:
A.首先打开Navicat 建立个连接,然后在所创建的连接下创建个数据库,在这里我的数据库名字为user,创建数据库是要注意开始选择编码的问题,在创建时我和我的论坛编码保持一致,同一用 utf-8 编码,编码选择错不同一会导致,论坛汉字存取或读取显示出现乱码。
B.数据库创建完毕后,接着创建表格,在这里我创建了四个表格,分别是:sort,topic,response,username,zone,表格sort是存储论坛板块的结构以及内容,topic是存储论坛的文章所有信息,response是存储论坛用户回复的信息,username则是存储论坛用户的信息,zone是负责存储论坛区域的信息。
C.数据库字段:
Sort表格字段:
Username表格字段:
(其中role 字段负责论坛用户权限的管理,0为普通用户,1为论坛管理员,2为被禁止登陆的用户,在这里默认值设置为 0 ,这样可以是的新注册的用户系统自动分配权限为普通用户)
topic字段:
(其中topic字段类型为自动递增类型,这样可以是的所发表的文章的id由数据库分配)
zone 表格字段:
(其中zoneid字段类型为自动递增类型,这样可以是的论坛新增区域id由数据库自动分配分配)
2.板块建立。
板块在首页显示,主要使用循环语句从数据库中读取板块信息,根据信息使用循环逐个把板块代码用PHP网页生成代码发送到浏览器。
所用语句:while 循环,mysql_fetch_array(); 获得查询数据库后资源标识符的数据并已数据保存。
在这里生成区域和板块用到两个循环:
while(数组名=mysql_fetch_array(标识符);)
{
此时生成区域(标题以及视图结构)
while(数组名=mysql_fetch_array(标识符);)
{
此时生成板块(标题,视图,板块连接等信息)
}
}
3.论坛头部制作:
这里主要有用户登陆后信息现实,登陆后注销连接,登陆,注册等连接,还有论坛文章搜素区域:
登陆以及注册设置连接直接跳到登陆或注册页面。
登陆后把用户存储到session会话中,以便用户可以浏览次论坛新页面时仍然保持登陆状态,另外这一步可以在用户发表新帖,进行后台管理,登陆后回复等检查用户相关操作是否可以执行时用到。
搜索区域主要用到模糊查询语句:
mysql_query("select * from 表名 where 要查询的字段名like '%要查询的内容%'");
查询得到的结果保存到数组中,然后循环生成文章列表。
4文章部分:
文章列表生成主要思路:首先根据板块id查询数据库,然后把此板块对应id的所有字段的文章找出,然后用while循环生成文章的标题,文章连接,作者,时间等相关信息。
文章发表制作思路:老师要求登陆后才可以发表文章,在这里可以使用检查session会话是否为空实现:
if(isset($_SESSION['username']))
{
可以发表文章(生成发表文章页面)
}
else
{
现实提示:请用户登陆路后发表文章
}
(文章登陆后才可以回复功能我也是根据上面的结构实现的)
5.登陆、注册、验证码:
登陆和注册主要就是怎么提交信息到数据库,怎么查询,怎么验证提交的信息。
验证后执行什么?
登陆页面我首先做个表单,把表单的信息提交的php处理页面,处理页面根据提交的信息查询数据库判断。
表单中用户名,密码,验证码的name分别为username,password,vcode,用post方式把表单信息提交到php处理页面,php处理页面得到这些值后开始验证,用户名和密码分别是用查询语句mysql_query("select * from 表名 Where 字段名='要查询的值");,查询后用变量接收,验证码是验证码页面生成的,生成后存到一个session 会话中去,在处理页面启动session会话获取当前验证码,然后一一和表单提交过来的对比验证:
if($username=="") \\\首先用户名不能为空
{$error=1;}
else if($password=="") \\\其次密码不能为空
{$error=2;}
else if($ary['password']!=$password) \\\密码和数据库中的一样
{$error=3;}
else if($code1!=$code2) \\\验证码和session 会话中获取的一样
{$error=4;}
else if($role==2) \\\判断是否为被管理员禁止登陆
{$error=5;}
else{
session_start(); \\\没有错误启动会话,跳转到首页
$_SESSION['username']=$username;
header("location:index.php");
exit;
}
if(isset($error)){ \\\出现错误跳转到登录页面
header("location:login.php?error={$error}");
exit;}
验证码刷新:
点机“看不清换张”连接后就会执行javascript中chk()自定义函数,函数执行根据系统时间调用a.php(验证码生成页面),然后根据id向对应id输出个新的验证码图片。
如果出现错误,登陆页面根据 error 传来的值显示现实相关错误。
注册,首先做个表单,然后把表单得到的信息给php处理页面处理后提交到数据库,这里主要用到mysql_query("INSERT INTO 表名 (字段1名,字段2名字段3名,……)
VALUES ('$变量1','$变量2,'$变量3,'……')");这条向数据库某表格写入信息语句。新增文章,新增板块,新增区域也是用到这条语句。
6.后台管理
后台管理主要有:用户管理,文章管理,板块管理。
删除修改操作:以用户管理为例,首先做个用户管理页面,次页面主要是从数据库中得到用户,然后用while 循环动态的生成一个用户列表,要删除用户只需次用户名提交到删除页面,删除页面主要用到语句:mysql_query("delete from 表名where 字段=要删除字段值' ");此语句根据提交过来的用户名执行此语句就可以删除次用户。论坛文章,板块删除做法一样。用户权限就是对用户数据库中role值的修改。
新增板块就是在sort表格中新增一条记录,把板块名和所属区域id从客户端提交上去,新增区域做法和次相同。
7.界面制作。
界面主要是先用photoshop设计制作好每部分的效果后,用photoshop中的切片工具,切成以后在布局中用填充就可以填充成整个效果的一个像素高或宽的小图片,然后在布局时用div css或表格设置背景水平或垂直方向上填充就可以了,这样可以是的整个论坛的打开速度加快。
7.实训收获。
在做div布局时收获不少,div中垂直方向局中做法是把height 和line-height的值设置一样就可以实现,div水平方向局中可以在div 中增加语句margin:0 auto;实现,论坛做了一般感觉点击连接时出现虚线框在外面很难看,上网查了下用onfocus="this.blur()" 这条语句可以去除连接虚线框,还有$sort=mysql_query("select * from sort where id='$zoneid'"); 这条语句在变量部分应该是单引号,在往外是双引号,否则不行。按钮做超链接可以用在中把onclick="location.href='reg.html'" 语句,其中单引号中就是要连接的地址。
还有网页布局不能用一个版本的浏览器来来测试,要用不同的浏览器测试,我在本次实训时我用IETester 这个软件可以让多版本浏览器共存,可以尽量少的让所做的网页到其他版本浏览器出错。
8.实训总结。
通过这次实训感觉自己不懂的很多,不能把想的做到网页中去,特别是在布局时老是出错,以后要好好学DIV CSS布局,还有平时要多练习,现在感觉到以前学过的东西到用时就想不起来,这很头痛,如果没有这次实训我也不会去做这个论坛,所以感觉实训是满重要的,这次实训让我收获不少,这次实训让我把理论的东西用实践去检验去巩固,因此以后自己要主动去找些东西去做,要加强联系,如果只是知道课本上的那是不行的,因为课本的都是基础的,课本没有一些做网页时候的一些好的经验,经验是靠自己去在实践中获得的。所以以后要多练,多思考,多上网去一些论坛交流,去一些象“蓝色理想”那种网站学习交流,培养视觉和技巧上的东西,总之要多练,不会的就去请教同学,老师,网络。