在整个框架中
需要编写一些基本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)
{
}
?>