5.19 书签共享系统——修改书签系统设置
一个优秀的Web 2.0网站能让用户方便地维护网站,本系统也提供了用户来维护他们网站的功能,通过改变有关参数来所示。
设置页面
要点
修改网站的设置参数,只是简单地进行数据库的数据更新,利用本书前面介绍的PHP技术,很快就能掌握这些代码。唯一需要补充的是这里有图片上传。关于图片上传部分与2.4节中介绍的没有多少区别,这里因为上传的是用户的标志图片,标志图片是有大小限制(最好不超过500KB)的,而且上传后再调用相关函数生成20×20像素的小图片。
为了方便用户使用,不让设置页面显得过长,将设置页面分成了四个TAB:基本设置、显示选项、书签下载、其他设置。
目录
数据库的表结构
数据库的表结构如表5-31所示。
表5-31 用户设置(config)
代码
setConfigInfo方法用于取得所有的配置属性,显示在配置页面。
定义保存系统设置的动作,在保存设置前,进行保存上传图片的处理。
进行基本设置TAB的修改保存时(Form变量flg为1)
生成保存个人头像图片的目录(img/user/)。
具体的上传处理与普通的文件上传没有任何区别,请参见2.4节的解说。
严格来说,要进行上传图片的有效性检查,如图片的大小,以及有效的文件后缀(.jpg,.gif,.png,不能超出此三类后缀)。处理并不复杂,交给有兴趣的朋友去完成。
图片名字为“l_用户ID.扩展名”。
上传的图片保存为大头像。
调用MainIndex类的createBreviaryImage方法生成用户头像的小图片,大小为20×20像素。
保存所有设置使用saveConfigInfo方法。
检索所有的个人书签收藏夹的书签,用于生成HTML文档。
setBmInfo方法是抽出个人书签收藏夹中的所有书签的方法,其检索SQL文与个人书签收藏夹页面的相同,因为不进行分页显示,去掉了后面的LIMIT命令。
29行到36行对抽出的结果进行格式化。
setConfigInfo方法抽出所有系统配置,用于配置修改页面的显示。
调用setProfileImg方法合成用户头像文件的路径。
Form变量flg为1时,意味着更新“基本设置”TAB的内容。
Form变量profiledelete非空即意味着用户选择了删除的选择框。
此处不是进行真正的删除图片的操作,只是将设置表(config)中的图片列置为空。下一次如果上传新图片时,会覆盖服务器中的旧图片的。
选择了上传图片时,更新表中的相应项目。
保存显示选项TAB的设置信息。
createBreviaryImage方法为图片大小转换方法,有6个参数,依次为对象图片全路径、保存目录路径、新图片名、最大宽、最大长、失真率(因为是缩小,相比原图有失真)。
使用函数getimagesize取得对象图片的属性、宽度、长度、类型(1:gif图片,2:jpg图片,3:png图片),其他属性。
根据对象图片的类型,调用imagecreatefromgif等函数将图片转化为图片对象。
计算图片转换的比率(scale),取长与宽中的最小的,且只有比率小于1(只进行缩小处理)时,才进行下面的处理。
计算新的图片的长与宽。
Imagecreatetruecolor函数定义新图片的坯对象——$newImg。
imagecopyresampled函数用于根据旧图片生成新图片的图片对象。
根据图片的类型,将保存在内存中的图片对象还原成实际的图片,并保存到指定的路径中。
imagedestroy函数用于清空内存中的图片对象。