




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Laravel的小型手机内容发布系统设计与制作计算机与信息科学学院 计算机科学与技术(师范) 2011级 唐平指导教师 戴政国摘 要:本论文详细描述了一个基于Laravel4.0开源php框架的手机内容发布系统的设计与实现过程。系统的设计与制作主要围绕用户、内容发布、用户交互三大功能模块进行,主要利用Laravel框架本身的特性和功能高效率、稳定、安全的快速开发应用。关键词:PHP;Laravel;jQuery;内容发布;用户交互Abstract:This thesis describes a mobile content publishing system based on open source php framework laravel4.0 the design and implementation process. System design and manufacture the main focus of users, content distribution, user interaction three functional modules, the main use laravel framework itself features and capabilities of high efficiency, stable, secure rapid application development.Key words:PHP;Laravel;jQuery;Content publishing;User Interaction 1 引言互联网时代,人们分享生活点点滴滴、发布近期动态、发布心情、分享一切告知他人更多的是采用各种信息技术产品来实现,在这个过程中也可以认识到更多的朋友,拓展自己的知识面,享受信息时代给我们带来的便利。利用Laravel框架强大的功能和特点实现一个小型的用户内容发布和用户交互是一个较好的方式。2 Laravel简介Laravel是一套web应用开发框架,具有富于表达性且简介的语法,可以让web开发者从面条一样杂乱的代码中解脱出来,帮助开发者构建一个完美的网络APP1。Laravel框架采用其他的框架的长处,其中包括Ruby on Rails、ASP.NET MVC、和Sinatra等。Laravel框架提供了强大的工具帮助用户快速的开发健壮、大型的web应用。2.1 特点2.1.1 语法更富有表现力2$url =URL:get(admin,function(),这个表达式创建了一个基于get访问方式的路由。$url=URL:post(admin,function(),创建一个基于post访问方式的路由,$url=URL:any(admin,function(),创建一个get和post方式均能访问的路由,通过表达式我们即可判断出所建路由的访问方式,同时通过不同类型的路由也可以控制程序的访问。$value=Session:get(name),这个表达式用于读取一个Session变量。Session:has(name),这个表达式判断一个session变量是否存在。相比较传统的session访问方式免去了许多设置选项,Laravel框架自身会帮助我们完成这些,我们只需要用简单明了的语句进行访问和存储即可。Laravel对数据库的访问形式有三种,原生方法、查询构造器和Eloquent ORM,用户可以根据自己需要使用不同的数据库访问方式,使用相当灵活。查询构造器获取一张表里的所有数据语法为$user=DB:table(users)-get()。Eloquent ORM通过定义好的模型对数据进行访问,例如:获取所有记录的语法为,$user=User:all()。2.1.2 高质量的文档Laravel有许多非常好的社区支持,例如:中文问答社区(/)、中文社区(/)、中文文档库(/)和官方网站(/)。laravel开发文档有很好的组织结构,适合各个层次的开发人员阅读和学习。以中文在线文档为例,如图2-1所示。图 2-1 文档结构图2.1.3 丰富的扩展包Laravel的扩展包大到完整的ORM,小到除错(debug)工具,只需要复制或者粘贴就能安装任何扩展包,例如处理日期的Carbon或者一个完整的BDD测试框架Behat,Laravel的扩展包由世界各地的开发者贡献,并且还在不断的增加中。2.1.4 开源、托管在github上Laravel是完全开源的,所有代码都可以从github3(分布式的版本控制系统)上获取(/laravel/laravel/)。并且可以贡献自己的力量。2.2 选择Laravel的原因在项目的开发中,一些架构和代码都是重复的,为了避免重复劳动,于是采用了PHP框架进行开发,而Laravel又是PHP框架中的佼佼者,提供网页开发资源的知名网站SitePoint于今年3月进行了开发首选PHP框架排名调查,有将近7800位开发者参与,Laravel框架位列首位4。当然,选择Laravel框架不仅仅是它如此受欢迎,同时它独特的路由方式和多样的数据读取方式吸引我的一点。3 Laravel安装与配置3.1 安装5Laravel的常见安装方式有三种,其中有两种需要使用Composer(PHP包管理工具)来管理代码依赖性,所以需要用户安装和配置好Composer工具,以下前两种方式都默认用户已经自行安装且配置好Composer工具(Windows环境下)。3.1.1 通过Composer create-project命令安装Laravel运行命令提示符程序并且定位到用户系统根目录下面后输入如下命令行。composer create-project laravel/laravel prefer-dist3.1.2 通过下载Laravel包安装下载用户需要的对应版本Laravel框架,把它解压缩到用户服务器上的一个目录下,通过在Laravel应用的根目录下面运行命令行php composer.phar install或者composer install来安装Laravel框架的所有依赖包。为了成功的进行安装,用户需要在服务器上安装好git。3.1.3 拷贝其它用户的Laravel框架程序直接拷贝其它用户正常使用Laravel框架程序,免去使用composer方式安装的繁琐方式和安装时间。3.2 配置3.2.1 系统要求针对不同的Laravel框架版本系统要求不同,本论文使用的是Laravel4.0版本,系统要求PHP最低版本5.3.7,除了常用的PHP 扩展其他扩展就用户具体要求可自行进行扩展。3.2.2 程序配置(1) 权限设置app/storage目录下的文件需要服务器的写权限。Windows操作下一般情况下不需要配置,对于Linux系统设置为777权限。(2) 路径设置框架的一些目录用户可以根据需要自行设置,查看bootstrap/paths.php文件中的设置。可以修改app、public或者storage等框架默认文件位置。4 设计目的 本次设计旨在提升对Laravel框架的进一步认识和掌握,同时也是累积对交互式系统开发的经验,本次设计的主要目的如下。(1) 加强对Laravel框架的理解,能够熟练使用框架自身的功能快速开发应用。(2) 加强对MVC设计模式6的理解和常见的PHP设计模式的认识和使用。(3) 加深对PHP语言的进一步理解和认识,掌握更多的PHP提供的强大的原生函数。(4) 初步梳理清晰一个用户交互应用中的用户之间的关系处理和对应数据存储结构的构建。5 系统规划根据应用需求,应用实现的主要功能如下7。(1)用户登录注册功能包含普通用户登录、普通用户注册和系统管理员登录。(2)用户内容发布功能用户注册登录成功后,可以发布相应内容包括图片、文字。(3)用户评论功能用户对已关注或者后台推送的用户发布的内容可以进行评价。(4)用户关注功能用户可以对系统推送的还未关注的用户进行关注、关注后可以看到对应用户发布的所有内容信息。6 系统设计 整个系统的功能如图6-1所示。图6-1 系统功能图6.1 系统逻辑分析6.1.1 登录的用户类型登录的用户类型目前有两种,普通用户和管理员。6.1.2 用户可执行的操作普通用户登录系统后,可以查看用户发布的信息记录和用户关注的用户的相关信息内容以及后台推送的用户尚未关注的内容信息。用户只有在关注相关内容信息后才可以浏览到该信息所属用户的所有内容信息,用户对所能够浏览到的信息均可进行评论。管理员登录系统后,可以查看所有注册用户的发布的所有信息,并且具有审核删除功能,管理员同时还可以查看当前系统注册的所有用户的注册信息,对整个系统中用户发布的所有图片资源进行管理。6.2 数据库分析该系统涉及用户交互和用户评论功能,数据库结构、数据表字段、表关联关系的设计是该系统的重要环节。正确理清用户之间、用户和博文之间、用户和评论内容之间的关系对于数据表的构造有很大意义,同时也能够灵活的使用Laravel框架本身提供的数据表关联关系处理方法,对于提高代码的质量和执行效率具有深远的意义。6.2.1 数据库概要说明本系统采用的是MySQL数据库,MySQL数据库是一个开源免费的关系型数据库系统,并且数据库占用资源少、执行效率高对于一般的高并发响应能够提供较好的支持,对于底层硬件的兼容也良好,和Apache以及PHP是一对优秀的WEB服务器组合系统,系统表是存储用户个人信息、用户内容信息、用户评论信息、用户关注关系和对应用户发布的图片资源信息,本系统数据表有5个,如图6-2所示。图6-2 数据库结构图6.2.2 数据库概念设计数据库概念结构设计是数据库开发中的重要的步骤。通过采用E-R 图的方法对数据库进行设计,可以清晰的将系统的数据和数据关系表达出来。并且通过某些软件可以从E-R图自动生成数据表关系结构,可以较好的提高应用程序的开发效率和进度,同时通过E-R图能够较直观的展示整个系统中的实体之间的关系以及各实体所具有的属性,对于设计数据表结构提供了很好的基础,并且对于后期数据表结构的扩充,程序逻辑上的功能的添加以及各个关系之间的更好协调都有巨大意义,本系统使用的数据表结构关系以及系统的功能结构实体的E-R图,如图6-3所示。图6-3 系统E-R图6.2.3 数据库逻辑设计该系统的数据表实现的功能如表6-1所示。表6-1 系统数据表数据表名功能说明 lv_user存储用户信息,包括管理员和普通用户信息lv_content存储用户发布的博文信息lv_careful存储用户关注用户的信息lv_review存储博文评论信息lv_source存储系统中用户发布内容的图片资源信息同时根据以上系统E-R图的分析,可以得到本系统数据库中的表和其字段信息。(1) 用户信息表lv_user图6-4 用户信息表截图(2) 博文信息表lv_content图6-5 博文信息表截图(3)资源信息表lv_source图6-6 资源信息表截图(4) 评论信息表lv_review图6-7 评论信息表截图(5)用户关注关系表lv_careful图6-8 用户关注关系表截图7 系统实现 7.1 开发工具和环境本系统为web应用开发,采用的开发环境为Apache、MySQL和PHP的组合8,使用了PHPstudy集成软件。编辑工具为phpeclipse和sublime text,Google浏览器作为测试工具。7.2 核心程序基于MVC模式的程序设计,控制器层调度和协调视图层和模型层之前的数据交互9,在整个MVC设计模式中处于一个比较重要的地位,同时也是开发人员进行创造性设计的地方。本系统核心控制器有两个(AdminController和IndexController),AdminController用来处理用户登录注册部分的逻辑,IndexController处理剩余的所有逻辑部分。7.2.1 用户首页部分核心代码10该部分内容主要动态获取当前登录用户的Session信息,判断登录的用户是否为管理员或者为普通用户,根据不同的登录用户展示不同的登录界面,同时拉取不同的内容信息,对于管理员登录则拉取当前系统所用用户发布的信息,对于普通用户登录则拉取该用户发布的信息和被当前用户关注的用户的所用的博文信息以及后台推送的信息,代码如下所示。 public function index3() if(Session:has(admin.user) $user=Session:get(admin.user); /为管理员登录 if($userace=1) return $this-adminIndex(); else $content_class=new Content; $user_id=$useruser_id; $content=$content_class-content_read($user_id); return View:make(index.index3)-with(content,$content); /没有登录 跳转到登录页面 else return Redirect:to(login.html); 7.2.2 发布内容核心代码代码如下所示。 public function text_ajax() $source_class=new Source; $content_class=new Content; $data=Input:all(); /print_r($data); /die(); $imgs=; if(Input:hasFile(photo) $img=$source_class-upload(Input:file(photo); if(!empty($img) $imgs=/lv/public/.$imgfilepath.$imgfilename; $result=$source_class-check($img); $result=$source_class-add($result); $dataimages=$imgs; $datauser_id=$this-user_id; $rs=$content_class-content_check($data); $result=$content_class-content_add($rs); /return Response:json($result); /发布成功 if($resultstatus) return Redirect:to(index.html); 7.2.3 用户评论核心代码代码如下所示。 public function comment_add() $contentid=Input:get(contentid); return View:make(ment_add)-with(contentid,$contentid); /添加评论 ajax public function comment_add_ajax() $comment_class=new Review; $data=Input:all(); $value=Session:get(admin.user); $datauser_id=$valueuser_id; $rs=$comment_class-review_check($data); $result=$comment_class-add($rs); $resulturl=URL:route(comment.html,array(contentid=$datacontentid); return Response:json($result); 7.2.4 图片上传处理核心代码11代码如下所示。public function upload($file = null, $folder = source)if(empty($file)return false;$data = array();$dataalias = $oldName = $file-getClientOriginalName();$datafilemine = $file-getMimeType();$datafilesize = $file-getSize();$folder = trim($folder, /) . /;$datafilepath = $filePath = self:$uploadPath . $folder . date(Y-m-d) . /;$datatargetPath = $targetPath = public_path() . / . $filePath;$datafileext = $fileExt = File:extension($oldName);$datafilename = $newName = microtime(true) * 10000 . . . $fileExt;$datastatus = $file-move($targetPath, $newName);$datafiletype = File:type($targetPath . $newName);return $data;7.3 登录注册页面7.3.1 登录页面(1) 功能介绍登录模块如下图所示,为基本的用户登录界面,用户只有在正确的输入用户名和密码的前提上才能够正常的登录系统,同时也为新用户提供了注册功能。(2) 界面实现如图7-5所示。(登录界面代码详见附录1)图7-5 登录页面截图7.3.2 注册页面(1) 功能介绍为新用户提供注册功能,并且程序限定用户的用户名必须唯一,对于已经使用过的用户名,系统会提示用户用户名重复请更换一个。(2) 界面实现界面布局采用了bootstrap提供的表单布局的基本样式,构建了一个简单的用户注册提交页面,在提交用户信息方面采用了ajax的方式传递用户提交的信息给后台服务器进行验证处理,相较于传统的通过表单进行提交的方式更加利于用户体验以及对于安全方面的有效控制,如图7-6所示。(注册界面代码详见附录2)图7-6 注册页面截图7.4 用户页面7.4.1 用户首页页面(1) 功能介绍该页面展示的内容为用户发布的基本博文信息内容,同时为用户提供了一些相应的基本操作,如查看某一内容的用户相关评论信息、刷新当前页面快捷按钮、发布博文信息快捷按钮以及用户退出登录的操作按钮。(2) 界面实现该页面数据拉取通过控制器在渲染视图的同时进行数据传递,然后在页面上对数据进行解析处理并组织到html页面上,如图7-7所示。(用户首页界面代码详见附录3)图7-7 内容首页截图7.4.2 用户评论页面(1) 功能介绍展示对应博文信息的用户评论内容,同时也显示了相关评论内容所对应的用户名信息,并且在此页提供了一个快捷进行评论的操作按钮,用户在查看评论信息的同时可以快捷的发布用户自己的评论信息,同时也提供了一个快速回到上一页的操作按钮,用户可以通过此按钮快速返回进入当前页面之前所在的页面。(2) 界面实现界面展示采用了Bootstrap提供的表格样式,方面快捷的进行页面布局,如图7-8所示。(用户评论界面代码详见附录4)图7-8 评论列表截图7.4.3 用户发布内容页面(1) 功能介绍用户进行博文信息的发布。(2) 界面实现 如图7-9所示。(用户发布内容界面代码详见附录5)图7-9 发布内容截图7.5 管理员模块7.5.1 管理员内容列表页面(1) 功能介绍展示所用用户发布的内容并且可以进行删除和推送操作。 (2) 界面实现 如图7-10所示。(管理员首页界面代码详见附录6)图7-10 管理员内容列表截图7.5.2 管理员评论页面(1) 功能介绍管理员评论页面展示该条博文的所有评论信息,同时展示相关评论的发布时间信息,并且提供了删除操作按钮,管理员可以就某条评论进行删除操作。 (2) 界面实现界面展示采用了Bootstrap提供的表格样式,每条评论信息作为表格中的一条记录信息,通过控制器渲染视图的时候把相应数据传递过来,通过采用PHP的一个foreach循环方式循环出所用的数据信息,并且同时整合到表格布局当中,删除操作也是采用ajax的方式进行实现,可以在页面没有跳转的情况下对数据库信息进行修改,并且同时返回相应的操作信息,具体内容呈现和展示界面如图7-11所示。(管理员评论界面代码详见附录7)图7-11 管理员评论列表截图7.5.3 用户列表页面(1) 功能介绍展示当前系统所有注册用户信息和注册用户的总数信息,并且同时展示用户注册时间和用户注册所在时所在IP地址信息,同时也提供了删除操作按钮,管理员可以对某用户进行删除操作功能,将此用户从当前系统中删除。 (2) 界面实现界面展示采用Bootstrap提供的表格样式,以列表的方式展现当前系统的用户信息,如图7-12所示。(管理员用户列表界面代码详见附录8)图7-12 管理员用户列表截图8 结束语此次论文设计运用到了框架,没有采用原生的PHP 代码来实现,主要是因为编程在很多地方都是在做重复的功能,采用框架能够比较好的提高开发速度以及工作效率12,同时框架集成了很多的东西,比如数据交互,信息安全等等,有很多的东西可能都不是我们自己没有想到的,通过使用框架就能够很好地处理这些问题,虽然可能对于某些功能需要用户自己进行扩展,但是这是一个很好的基础。站在巨人的肩膀上往往会事半功倍,PHP框架有很多,比如常见的Yii,Thinkphp(TP),CodeIgniter(CI)等都是比较好的框架,这次虽然只使用到了laravel中的部分功能,但是是一个很好的开始,PHP基于数据库的交互,本质上就是CURD(增、删、改、查),实际上我们要做的很大部分是逻辑上的处理,比如数据的有效输出格式,此次系统设计在某些部分还存在的很大的改进空间,例如用户访问的时候的图片加载速度涉及到用户体验,以及一些功能上的完善,由于时间和能力上的欠缺所以没有实现,但是会努力去进行补充的。论文的成功完成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CAQI 33-2017空气净化器气态污染物净化性能分级第1部分:甲醛
- 黄冈高考试题及答案
- 编程入门考试题及答案
- 法治主题面试题及答案
- 高校生化考试题及答案
- 计算工程师面试题及答案
- 高考模考试题及答案
- T/CAEPI 61-2023颗粒活性炭吸附-蒸汽脱附溶剂回收装置技术要求
- T/CADERM 2003-2019区域急救平台及胸痛中心数据交互规范
- 临时租赁马匹合同范本
- 班级规章 创造和谐
- 2024新能源光伏电站智慧型铜合金导体挤包绝缘电力电缆
- 2024年中国家具电商行业市场竞争格局及投资方向研究报告(智研咨询)
- 中国现代文学史考试题库及答案
- 烟叶烘烤特性及特殊烟叶烘烤技术培训
- 物料报废单完整版本
- 广东省深圳市南山区2023-2024学年四年级下学期期末科学试题
- 01互联网安全风险及其产生原因 教学设计 2023-2024学年苏科版(2023)初中信息科技七年级下册
- CJT156-2001 沟槽式管接头
- 社工招聘笔试考试(含答案)
- 母婴儿童照护智慧树知到期末考试答案章节答案2024年上海健康医学院
评论
0/150
提交评论