程序代写代做代考 Java javascript jquery 项目一:内容管理系统(后台)

项目一:内容管理系统(后台)
模块四 栏目管理

PHP

读取栏目

——准备测试数据
在管理员登录后,就可以对栏目进行管理。在项目数据库中,为栏目表添加测试数据,用于读取栏目功能的开发。添加测试数据的SQL语句如下。
INSERT INTO `cms_category` (`id`, `pid`, `name`, `sort`) VALUES
(1, 0, ‘PHP’, 0),
(2, 0, ‘Java’, 1),
(3, 1, ‘PHP基础’, 0),
(4, 1, ‘PHP高级’, 1);
栏目管理

读取栏目

——读取栏目数据
在项目中,读取栏目数据的需求可能会频繁出现,因此将此功能写在函数中。在common目录下创建文件module.php,用于保存和数据相关的功能模块函数。
栏目管理

读取栏目

——读取栏目数据
定义函数module_category(),用于获取栏目列表
该函数的参数$mode表示索引方式:id 或 pid,默认返回两种格式
定义一个静态变量$result,用于缓存查询结果
当第一次调用函数时,到数据库中获取数据,并分别根据id和pid创建数组索引,方便查找。
最后根据索引方式返回查询结果
栏目管理

编辑栏目

——输出已有栏目
在项目中创建cp_category.php文件,该文件用于读取栏目数据显示在HTML模板中。
在该文件中载入初始化文件
接着定义display()函数,显示页面
从数据库中根据pid取出数据,载入HTML模板文admin\view\cateogory.html
调用函数display()
栏目管理

编辑栏目

——输出已有栏目
接下来编写用于显示栏目的admin\view\cateogory.html文件。为了提高后台管理的操作效率,可以将栏目显示、添加、修改功能都在一个页面中完成。
pid的顶级分类为0
外层循环输出顶级栏目
接着判断该分类下是否存在子栏目,若存在则循环输出
栏目管理

编辑栏目

——效果展示

栏目管理

编辑栏目

——添加栏目
在完成已有栏目的输出后,还需要开发栏目添加功能,在实现栏目添加时,为了更直观地在页面中添加栏目和子栏目,这里通过jQuery实现了页面的灵活处理。
编辑admin\view\cp_category.html文件,在页面底部添加JavaScript代码如下。
栏目管理

编辑栏目

——添加栏目
当单击页面中的class属性为jq-add的元素时,就会触发点击事件
在该元素的前面添加HTML内容,内容是添加新栏目的输入框
对于添加表单的name属性,这里使用了名称为add的二维数组,其外层用于区分多个添加的内容,内层是sort、name、pid三个字段
由于是顶级栏目,所以pid的值为0
① 顶级分类栏目添加
栏目管理

编辑栏目

——添加栏目
当单击页面中的class属性为jq-sub-add的元素时,就会触发点击事件
为“添加子栏目”元素添加data-id属性,用于保存子栏目的上级栏目ID。
添加子栏目的事件函数中应该先获取到此ID,然后保存到隐藏域的pid字段中。
② 二级分类栏目添加
栏目管理

编辑栏目

——效果展示

栏目管理

批量保存

接收表单
调用addData()函数添加栏目,调用saveData()函数修改栏目
实现接收表单并处理
批量添加
添加栏目的信息保存在了add二维数组中
利用I()函数接收数组后保存到数据库中即可
批量修改
批量修改的实现方式和批量添加类似
在接收表单时,修改栏目的信息保存在了save数组中
栏目管理

修改层级

添加编辑链接
为每个栏目添加“编辑”超链接,链接到cp_category_edit.php文件
同时,传递参数ID,表示编辑指定ID的栏目
取出指定栏目信息
先取出待编辑栏目的信息,然后取出所有顶级栏目信息
保存信息
在admin\cp_category_edit.php中接收表单数据,将信息保存到数据库中
栏目管理

删除栏目

添加删除链接
在开发删除功能时,为了防止误操作,在执行操作前进行弹框提示
执行操作
判断待删除栏目下是否有子级栏目,若有则不执行删除操作;若没有则删除
栏目管理

删除栏目

——效果展示
栏目管理

删除栏目

——令牌保护
在前面实现删除功能时,通过一个URL地址直接实现了删除数据,然而这种方式在Web开发中存在安全隐患。
当管理员在登录系统的状态下进行其他操作时,如果访问了其他用户恶意构造的危险URL地址,就会导致后台的操作被执行,这种安全漏洞称为CSRF(跨域请求伪造)。
栏目管理

删除栏目

——令牌保护
防御CSRF安全问题的一个有效的措施,是为所有涉及更改数据的操作加上令牌保护,该令牌将在用户登录时随机生成,每个更改的操作都附加上令牌,没有令牌时将无法执行操作。
栏目管理

删除栏目

——令牌保护
token_get():利用md5()和microtime(true)生成令牌,将其保存在Session中
token_check():先从GET参数中取出token,然后再与保存到Session中的token进行比较,判断是否正确。如果令牌有误,说明用户当前的操作是非法的。
在common\function.php中,自定义token_get()和token_check()函数

删除栏目

——令牌保护
在admin\init.php中添加代码实现令牌的自动生成和验证
对删除栏目的操作添加令牌验证
需要注意的是,为了避免项目中频繁的令牌验证影响代码演示,在本书后面的开发步骤中并没有加上令牌验证功能。同时为了确保项目的严谨性,在本书的配套源代码中已经全部加上了令牌验证。
栏目管理