PHP 安全检测代码片段
/**
* html转换输出(只转义' " 保留Html正常运行)
* @param $param
* @return string
*/
function htmlEscape($param) {
return trim(htmlspecialchars($param, ENT_QUOTES));
} /**
* 是否数组(同时检测数组中是否存在值)
* @param $params
* @return boolean
*/
function isArray($params) {
return (!is_array($params) || !count($params)) ? false : true;
} /**
* 变量是否在数组中存在(参数容错, 字符串是否存在于数组中)
* @param $param
* @param $params
* @return boolean
*/
function inArray($param, $params) {
return (!in_array((string)$param, (array)$params)) ? false : true;
} /**
* 通用多类型混合转义函数
* @param $var
* @param $strip
* @param $isArray
* @return mixture
*/
function sqlEscape($var, $strip = true, $isArray = false) {
if (is_array($var)) {
if (!$isArray) return " '' ";
foreach ($var as $key => $value) {
$var[$key] = trim(S::sqlEscape($value, $strip));
}
return $var;
} elseif (is_numeric($var)) {
return " '" . $var . "' ";
} else {
return " '" . addslashes($strip ? stripslashes($var) : $var) . "' ";
}
} /**
* 获取服务器变量
* @param $keys
* @return string
*/
function getServer($keys) {
$server = array();
$array = (array) $keys;
foreach ($array as $key) {
$server[$key] = NULL;
if (isset($_SERVER[$key])) {
$server[$key] = str_replace(array('<','>','"',"'",'%3C','%3E','%22','%27','%3c','%3e'), '', $_SERVER[$key]);
}
}
return is_array($keys) ? $server : $server[$keys];
} /**
* 变量转义
* @param $array
*/
function slashes(&$array) {
if (is_array($array)) {
foreach ($array as $key => $value) {
if (is_array($value)) {
S::slashes($array[$key]);
} else {
$array[$key] = addslashes($value);
}
}
}
} 83 /**
* 目录转换
* @param unknown_type $dir
* @return string
*/
function escapeDir($dir) {
$dir = str_replace(array("'",'#','=','`','$','%','&',';'), '', $dir);
return rtrim(preg_replace('/(\/){2,}|(\\\){1,}/', '/', $dir), '/');
}
/**
* 通用多类型转换
* @param $mixed
* @param $isint
* @param $istrim
* @return mixture
*/
function escapeChar($mixed, $isint = false, $istrim = false) {
if (is_array($mixed)) {
foreach ($mixed as $key => $value) {
$mixed[$key] = S::escapeChar($value, $isint, $istrim);
}
} elseif ($isint) {
$mixed = (int) $mixed;
} elseif (!is_numeric($mixed) && ($istrim ? $mixed = trim($mixed) : $mixed) && $mixed) {
$mixed = S::escapeStr($mixed);
}
return $mixed;
}
/**
* 字符转换
* @param $string
* @return string
*/
function escapeStr($string) {
$string = str_replace(array("\0","%00","\r"), '', $string); //modified@2010-7-5
$string = preg_replace(array('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','/&(?!(#[0-9]+|[a-z]+);)/is'), array('', '&'), $string);
$string = str_replace(array("%3C",'<'), '<', $string);
$string = str_replace(array("%3E",'>'), '>', $string);
$string = str_replace(array('"',"'","\t",' '), array('"',''',' ',' '), $string);
return $string;
}
/**
* 变量检查
* @param $var
*/
function checkVar(&$var) {
if (is_array($var)) {
foreach ($var as $key => $value) {
S::checkVar($var[$key]);
}
} elseif (P_W != 'admincp') {
$var = str_replace(array('..',')','<','='), array('..',')','<','='), $var);
} elseif (str_replace(array('<iframe','<meta','<script'), '', $var) != $var) {
global $basename;
$basename = 'javascript:history.go(-1);';
adminmsg('word_error');
}
}
PHP 安全检测代码片段的更多相关文章
- 十条jQuery代码片段助力Web开发效率提升
JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Oper ...
- Javascript 语言精粹 代码片段合集
Javascript 语言精粹 代码片段合集 标签:Douglas-Crockford Javascript 最佳实践 原文链接 更好的阅读体验 使用一个method 方法定义新方法 Function ...
- 经验分享:10个简单实用的 jQuery 代码片段
尽管各种 JavaScirpt 框架和库层出不穷,jQuery 仍然是 Web 前端开发中最常用的工具库.今天,向大家分享我觉得在网站开发中10个简单实用的 jQuery 代码片段. 您可能感兴趣的相 ...
- 高效Web开发的10个jQuery代码片段(10 JQUERY SNIPPETS FOR EFFICIENT WEB DEVELOPMENT)
在过去的几年中,jQuery一直是使用最为广泛的JavaScript脚本库.今天我们将为各位Web开发者提供10个最实用的jQuery代码片段,有需要的开发者可以保存起来. 1.检测Internet ...
- 46 个非常有用的 PHP 代码片段
在编写代码的时候有个神奇的工具总是好的!下面这里收集了 40+ PHP 代码片段,可以帮助你开发 PHP 项目. 这些 PHP 片段对于 PHP 初学者也非常有帮助,非常容易学习,让我们开始学习吧- ...
- 50个jquery代码片段(转)
本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助 ...
- 超级有用的9个PHP代码片段
在开发网站.app或博客时,代码片段可以真正地为你节省时间.今天,我们就来分享一下我收集的一些超级有用的PHP代码片段.一起来看一看吧! 1.创建数据URI 数据URI在嵌入图像到HTML / CSS ...
- 提高php开发效率的9大代码片段
在网站开发中,我们都期望能高效快速的进行程序开发,如果有能直接使用的代码片段,提高开发效率,那将是极好的.php开发福利来了,今天小编就将为大家分享9大超实用的.可节省大量开发时间的php代码片段. ...
- 直接拿来用的10个PHP代码片段
PHP是一种HTML内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言.PHP拥有数以百计的基本功能,支持上千种扩展.这些功能都被很好的加载在PHP站点上,但内置的库有各种各样的命名.在P ...
随机推荐
- iOS9下修改回HTTP模式进行网络请求
升级为iOS9后,默认请求类型为https,如何使用http进行请求会报错 The resource could not be loaded because the App Transport Sec ...
- ExtJs 4.2.1 复选框数据项动态加载(更新一下)
最近在做博客项目,后台管理用的是ExtJs4.2.1版本,因为是初学所以在使用的时候也遇到不少的这样或那样的问题,也写了不少这方面的博客,今天要写的博客是关于复选框数据项动态的加载功能,以前也没用过, ...
- Object调用静态方法
谁说空指针不能调用方法 public class Foo { public static void bar() { System.out.println("bar"); } pub ...
- __builtin_popcount()
计算一个 32 位无符号整数有多少个位为1 Counting out the bits 可以很容易的判断一个数是不是2的幂次:清除最低的1位(见上面)并且检查结果是不是0.尽管如此,有的时候需 ...
- CSU1326+背包+并查集
先预处理出有多少个任务即可 #include<stdio.h> #include<stdlib.h> #include<string.h> #include< ...
- Nginx开启Gzip压缩大幅提高页面加载速度(转)
转自:http://www.cnblogs.com/mitang/p/4477220.html 刚刚给博客加了一个500px相册插件,lightbox引入了很多js文件和css文件,页面一下子看起来非 ...
- *JRebel 热部署
Jrebel是一套商业Java开发软件,可快速实现热部署,节省大量重启时间,提高开发效率. 去IDEA的插件官网下载插件:http://plugins.jetbrains.com/plugin/444 ...
- 115. Distinct Subsequences
题目: Given a string S and a string T, count the number of distinct subsequences of T in S. A subseque ...
- IE Web 开发支持将迁移到 StackOverflow
http://stackoverflow.com/questions/tagged/internet-explorer
- 【HDOJ】4251 The Famous ICPC Team Again
划分树模板题目,主席树也可解.划分树. /* 4251 */ #include <iostream> #include <sstream> #include <strin ...