-
对于value来说,sql本身是没啥问题的,但是PHP就有问题了,比如就拿教程里面的这种方式,把变量 $value 里的字符串直接拼接成为 sql 语句,就会存在很大的安全隐患,举个例子,假设你开发一个密码登录的接口,$value1 里存的是用户账号,$value2 里存的是用户密码,sql语句是这样子拼的:
$sql = "select * from user where `account` = '".$value1."' and `password` = '".$value2."'";
如果遇到恶意用户,他在登录时把密码填成 123456' or '1' = '1 ,想一下,你最后会得到什么样的sql语句,是不是
select * from user where `account` = 'zhangsan' and `password` = '123456' or '1' = '1'
于是只要 '1' = '1' 成立,sql语句就能执行成功。。。
是不是很可怕?这就叫做 sql 注入,是一种很古老的黑客攻击手段,所以现在一般会用 addslashes 对用户提交的内容进行转义,把那些可能会导致sql注入的关键字给替换掉。
查看全部 -
数组里有一个元素也可以叫数组
查看全部 -
给字段名加上··这个符号,可以转换关键词;这个符号在键盘Esc的下面
查看全部 -
解决问题的方法:这些方法也是tp框架等一些框架的核心
查看全部 -
面向过程编程的问题总结
查看全部 -
template_c放置编译后的文件(存放缓存文件的地方),现在都不用smarty缓存了(可以设置关闭),因为有了memcache等缓存技术;
控制层只负责从某个model获取数据,再放到某个view进行展示
数据的处理全部在Model层搞定
不要在控制层处理数据!!
1.如果以后控制层变得越来越复杂,可能就是业务逻辑层被写进了控制层,这是不对的
2.业务逻辑层(Model层)是MVC系统的核心,无论是从数据库取数据,还是第三方接口取数据、传递数据,还是完成一系列的查询分类筛选清洗等操作都是在业务逻辑层完成。
查看全部 -
对于mvc框架smarty就是第三方视图类库,使用smarty先要include到include.php 再在实例化smarty 最后配置smarty,完成这些操作才能使用smarty视图引擎。 如果统一将这些操作写到function.php页,将大大简化重复编写操作,方便后期修改。
查看全部 -
这里使用了smarty模板引擎中的两个函数assgin()和display();assgin()作用是将一个变量注册到模板里;display()作用是调用模板
查看全部 -
将smarty模板引擎引入MVC(即整个项目);到此为止,整个MVC的基本框架可以算完成;smarty模板引擎也叫视图引擎;即将要展示的东西分配到前台模板(HTML)
查看全部 -
第三方类库调用函数制作 (看截图)
查看全部 -
将学到的smarty知识用到MVC中,封装一个函数用来控制调用第三方的插件(函数/类)
查看全部 -
实战实战实战
查看全部 -
Smarty三种插件 用例及释义
functions 函数插件 (自定义函数)
1.将插件以 function.插件名.php 的格式进行建立,放置在./lib/plugins目录下
2.插件内为php代码 且为function函数
格式: function smarty_function_插件名 ($params){... $params[参数1] $params[参数2] ...}
注意: 该处的插件名要和脚本名中的插件名 要一致.
用法: {test width="150" height="200"}
modifiers 修饰插件 (自定义变量调节器)
1.将插件以 modifier.插件名.php 的格式进行建立,放置在./lib/plugins目录下
2.插件内为php代码 且为function函数
格式: function smarty_modifier_插件名 (参数1,参数2,参数3...){...}
注意: 该处的插件名要和脚本名中的插件名 要一致.
用法: {$time|test:'Y-m-d H:i:s'}
bloack 区块函数插件 (自定义区块函数)
1.将插件以 bloack.插件名.php 的格式进行建立,放置在./lib/plugins目录下
2.插件内为php代码 且为function函数
格式: function smarty_block_插件名 ($params, $content){... $params[参数1] $params[参数2] ...}
注意: 该处的插件名要和脚本名中的插件名 要一致.
用法: {test replace=true maxnum=43} {$str} {/test}
查看全部 -
插件命名不能重复!
查看全部 -
模板在调用插件的时候,smarty(test.php)中,依然需要这两个步骤,即
$smarty->assign('arr',$arr);//对smarty模板赋值
$smarty->display('test.tpl');//分配到模板
查看全部
举报