从此不求人:自主研发一套PHP前端开发框架(9)
2016-03-27 15:32
417 查看
在整个框架中
需要编写一些基本web使用函数来提供整个框架(尤其是V和C)来进行调用,以及第三方接入系统也可以调用譬如:
1 过滤参数
2 获取当前登录用户(包含基本信息)获取当前用户ip等
3 判断一些状态(如用户是否登录、信息是否过期设置是权限)
4 加密和解密一些字符串
5 获取或设置缓存等
我们把这些函数的命名规则定义一下
1 the_XXX 系列譬如 the_get(过滤参数) the_ip(获取当前用户ip) the_user(当前登录用户)
2 is_XXX系列
譬如 is_login(是否登录) is_validate(验证码判断)
3 set_XXX系列
用来更新一些model如 set_news($newsModel) 用来更新新闻
4 load_XXX系列
用来加载一些model
….其他我们后面来拓展
打开functions.inc
<?php // the_XXX系列 /* * 获取get参数 * 当$ispost是true是代表获取post参数 默认是false */ function the_get($get_key,$ispost=false) { $parameters=$ispost?$_POST:$_GET; if(!isset($parameters[$get_key])) return ""; $str=$parameters[$get_key]; //过滤危险字符、敏感字符通用函数 //第一步:通过正则过滤掉我需要过滤的标记 $farr = array( "/<(\/?)(script|i?frame|style|html|body|title|link|meta|\?|\%)([^>]*?)>/isU"); //过滤类似 <script> <style> <object> <meta 等 $str = preg_replace($farr,"",$str); $str=addslashes($str); //对单引号、双引号等预定义字符 前面加上反斜杠 如'变成\' //第二步 过滤敏感词汇 $str=str_replace(explode(",", LKPHP_UNSAFEWORDS),"***",$str); return trim($str); } /* * 获取当前用户的IP地址,无参数 */ function the_ip() { if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; return ($ip); } /* * 获取当前登录用户 * 返回值是个model 如果用户没有登录则返回false */ function the_user() { //可以使用cookie 也可以使用session return false; } //根据cacheKey或来获得缓存内容 function the_cache($cacheKey) { //这里我们使用memcached return false; } ?> <?php //is_XX系列 如判断用户是否登录 字符串格式 /* * 判断用户是否登录 */ function is_login() { //用户是否登录 if(the_user()) return true; return false; } //判断字符串是否符合email格式 function is_email($email) { return ereg("/^[a-z]([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$/i",$email); } ?> <?php //set_XX系列,譬如更新缓存或者更新一个model //更新缓存 function set_cache($cacheKey) { } //更新一个model function set_model($model) { } ?> <?php //load_XX系列。 譬如加载一个model /* * 加载一个model * $modelName是m名,加载与mvc/model中的某个model */ function load_model($modelName) { } ?>
相关文章推荐
- 推荐 10 个超棒的 CSS3 代码生成工具
- 22、Ext.util.JSON.decode 的用法?
- 用HTML5的canvas做一个时钟
- 关于jsp页面page指令中errorpage和iserrorpage属性
- JavaScript提交表单时检查所填是否有效
- Echarts.js遇见的问题(tooltip)
- javascript 收藏本站的代码
- 梳理caffe代码layer_factory(六)
- HTML显示与隐藏
- Jquery-基础知识点
- HTML DOM - 修改
- HTML DOM 访问
- Javascript闭包——懂不懂由你,反正我是懂了
- CSS中常见的6种文本样式
- JavaScript之基础-8 JavaScript 数组(创建、访问、常用方法、二维数组)
- HTML DOM 属性
- The imported target "Qt5::Core" references the file
- React(0.13) 组件的组合使用
- HTML DOM 方法
- 加载json数据创建控制器