插件开发配置信息、入库和接收数据的处理

燃烧的冰2020-06-19  837

第一:接收数据请使用 param() 方法,此方法可接收 GET POST COOKIE 依次优先顺序。

1.接收数字,比如接收数字 $tid = param('tid', 0); 0为强制转换为数字,比如接收的是字符,会强制转换为 0 ;

2.接收字符串有两种方式,比如标题

<1> $title = param('title'); 会过滤接收字符串,html的标签会被强制转换,这样做比较安全。

<2> $title = param('title', '', FALSE); 原样接收字符串,不会改变字符串任何数据,这样做非常不安全,但是入库前必须再处理一次数据。

处理类型 2 的数据:

$title = filter_all_html($title); 这个方法过滤所有html标签;

$title = xn_html_safe($title); 这个方法过滤所有不安全的html标签和字符,并强制转换造成危险字符,有效防止注入、CSRF和XSS;

两种类型同时使用时,先过滤html标签,再过滤危险字符。如果使用 接收类型 <1> 无需使用这2个方法。一般正文需要支持html标签的数据,必须使用 xn_html_safe() 进行过滤。

 

非特殊情况无需使用3和4

3.接收一维数组 $arr = param('post', array()); 

4.接收多维数组

// $filter 为需要过滤的字符串,强制转换过滤危险标签和字符
$filter = array('name','message','brief');
well_param('post', array(), $filter);

// 数字类型多维数组,忽略$filter
well_param('post', array());

 

第二:插件配置数据

设置入库 setting_set('key', 'value');

取出数据 setting_get('key');

卸载删除 setting_delete('key');

1.设置入库

$well_title = param('title');
$well_money = param('money', 0);

$well_plugin_conf = array(
    'title' => $well_title,
    'money' => $well_money
);

// 插件前缀well_插件信息英文或缩写字母,目录和插件名为 well_plugin_test
setting_set('well_plugin_test', $well_plugin_conf);

 

2.取出数据

$well_plugin_conf = setting_get('well_plugin_test');

第一种方式直接声明,但是这种方式在没有数据时会报错
$well_title = $well_plugin_conf['title'];
$well_money = $well_plugin_conf['money'];

第二种方式即使没有数据也不会报错
$well_title = array_value($well_plugin_conf, 'title');
$well_money = array_value($well_plugin_conf, 'money');

// 下面是打印查看,实际使用时不需要,开发时可查看数据
echo '<pre>';
print_r($well_plugin_conf);
echo '<hr>';
print_r($well_title);
echo '<hr>';
print_r($well_money);
echo '<hr>';
echo '</pre>';

 

3.卸载删除数据

setting_delete('well_plugin_test');

 

第三:判断数据时统一代码书写习惯,如:

if('GET' == $method) {
    echo 'GET 获取';
}

 

第四:插件开发所有文件务必统一分类存放,请勿全部存放在插件根目录下:

/plugin/well_plugin_test/admin/后台相关

/plugin/well_plugin_test/admin/route/ 后台业务文件

/plugin/well_plugin_test/admin/view/htm/ 后台模板

/plugin/well_plugin_test/admin/view/js/

/plugin/well_plugin_test/admin/view/css/

/plugin/well_plugin_test/admin/view/img/

 

/plugin/well_plugin_test/hook/ 所有php和模板钩子

 

/plugin/well_plugin_test/overwrite/ 为覆盖主程序文件,不推荐使用,覆盖时对应主程序目录文件

如覆盖 主程序 /route/index.php

/plugin/well_plugin_test/overwrite/route/index.php

 

/plugin/well_plugin_test/model/ 定义的方法文件目录

/plugin/well_plugin_test/route/ 前台业务文件

/plugin/well_plugin_test/lib/ 定义的class文件目录

/plugin/well_plugin_test/view/ 等同 admin/view/

 

其他请参照

https://www.7zbmk.com/read-71.html

转载请注明原文地址: https://www.7zbmk.com/read-115.html
0