商城5
商品编辑
- 在GoodsController.class.php控制器文件增加一个edt方法

- 增加一个edt.html视图页面

效果

- 在GoodsModel.class.php模型文件增加一个_before_update更新的前置钩子函数

注意:这里将上传操作封装为一个方法



bug修复
注意:在上面使用更新的前置钩子函数后,由于商品伪删除里面的setField()方法底层调用的是模型的save()方法,但是save()方法又会触发自己模型的前置更新钩子函数,所以我们需要使用M()进行实例化系统模型,而不是实例化自己的商品模型文件。

同时,商品回收站的还原,也需要使用M函数进行实例化操作。

商品展示-分页-搜索-排序
- 在GoodsController.class.php控制器文件增加一个alst方法

- 在GoodsModel.class.php模型文件增加一个search方法,进行分页-排序-搜索操作


- 增加一个alst.html页面
搜索表单

数据和分页

效果

bug修复-方式一
出问题的原因就是p参数出问题。(从p身上下手)

bug修复-方式二
如果我们是在商品的其他的页面进行搜索的时候,有可能无法展示待搜索记录(记录本身是存在)。
出现问题的原因是:在其他页面(p=5)进行搜索的时候,错误把当前的页面传过去(第一次搜索应就是p=1)
解决:

效果:

为什么可以?
答:__SELF__这个常量(TP里面存在)代表是当前的URL地址(包含GET参数)
index.php?m=Home&c=User&a=lst&gn=e8&p=12
__ACTION__(这个也是TP才有的)代表是当前的方法为止
index.php?m=Home&c=User&a=lst
注意:提交时候参数是照样过去
index.php?m=Home&c=User&a=lst&gn=12
优化

解决:编写一段js代码,完成自动表单提交

优化:(ajax无刷新搜索)+ ajax + 分页类(pagination)
网站:http://www.barretlee.com/blog/archives/
datatable展示数据(掌握)
插件自己支持-分页-排序-搜索
- 在页面引入datatable相关文件


注意:这里的moment.js是一个时间处理插件
- 在页面定义函数进行数据
定义语言包

定义每页显示的数据和ajax提交的数据

定义返回数据和表格每列显示的对应格式

- 在GoodsController.class.php控制器增加一个ajaxGetData方法获取数据


- 效果

动态属性框生成
功能需求:

实现当用户添加某个商品的时候,选择的商品的类型不同的情况下,动态生成一个属性框。

实现思路:
- 肯定要为商品类型绑定一个change事件
- 当用户在商品类型做改变的时候,触发一个ajax请求(携带一个商品类型type_id)
- 在后台接收请求,去sh_attribute属性表(根据type_id查询当前商品类型的所有的属性)
- 前台接收响应,然后处理数据(拼接 ul > li一个属性),最后DOM操作,放置页面上
额外:如果是单选属性,必须要增加 [+]
点击[+]这个之后,要动态的增加一行(需要注意,前面的符号要是[-])
点击[-]这个之后,要动态移除
复制一行使用jQuery的clone方法(不光克隆当前行,克隆当前行的事件)
扩展
安全相关
- 什么是密钥?
答:加密的一个规则字符串
字频法(理论上统计样本足够大的下,常见的单词和字母以及字符出现概率是可以评估的)
- 密码学
答:最先出现密码的原型是有凯撒大帝。栅栏加密法
码表:
a(97) b c d
相当于(每个字母向后移动三位) (一个密钥,就是一个规则)(把每个字母对应的ascii码值+10===> ASCII码表)
d e d f
信息:明文(hi i am kaisa)
信息:密文(as s d sad)
如果由密钥将明文变成密文后,同时可以将密文变为明文(相互推导)对称加密(双向加密)
base64_encode();
baase64_decode();
TP里面:加密类(程序编写出来的加密都是很容易被破解)(量子计算机)

业内一个出名的加密函数(康盛公司里面戴志康 discuz!)

在web项目里面一般来说数据加密传输还是比较少(goodsData数据)但是有些敏感数据(支付 加密 https协议---> openssl加密库)
--with-openssl(加密肯定很好,数据安全,但是加密要消耗系统的资源,因为加密和解密是很消耗系统资源)
http://old.ruesin.com/php/php-encryption-decrypt-282.html
图灵(很厉害,二战德军加密机 恩格玛加密码)
常见的网站安全攻击
- I函数底层是使用 htmlspcialchars函数(只能处理 xss攻击)
- 还有csrf攻击(跨站脚本攻击, 伪提交数据)

防止:一般这种攻击都是在表单里面进行出现(伪造表单提交、外站提交)(在表单里面放置一个隐藏域input type='hidden' name='_token令牌' value = 'asdfasfafdasf788y12esadf')
原理:在服务器返回表单之前,需要生成一个随机字符串。然后将该字符串保存在session,同时往表单里面放置一个隐藏域。然后返回给浏览器,用户填写信息后,然后进行提交(隐藏域 _token )。 $_POST['_token'] == $_SESSION['_token']
http://netsecurity.51cto.com/art/201308/407554.htm

- sql注入(如果使用的pdo,应该是没有问题的)解决(addslashes函数进行转义)
TP里面实现(CI源码 laravel源码底层都是做了数据过滤处理)

到时候去公司之后,公司内部会写很多很多的过滤处理(使用五六个处理)互联网坏人更多(好玩)懂工具(渗透)http://yu.com
- 吓人(DOS攻击还好,不是特别厉害)变种(DDOS攻击,目前来说没有很好的防御机制,只能拿硬件抗)只是网络请求过多,服务器无法正常的响应。(web服务器集群: 并发10w ---> 控制(肉鸡)(个数:流量40G)--> 域名 )
- 服务器集群(80G)
- 使用硬件防火墙

服务器:root
密码:admin88 admin 12344566789 试出来 奔溃(管理员邮箱:生日)备案:姓
姓 生日 密码 (排列组合)

浙公网安备 33010602011771号