防SQL注入
function clean($input)
{
if (is_array($input))
{
foreach ($input as $key => $val)
{
$output[$key] = clean($val);
}
}
else
{
$output = (string) $input;
if (get_magic_quotes_gpc())
{
$output = stripslashes($output);
}
$output = htmlentities($output, ENT_QUOTES, 'UTF-8');
}
return $output;
}

根据IP确定用户地理位置
function detect_city($ip) { $default = 'UNKNOWN'; $curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)'; $url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip);
$ch = curl_init(); $curl_opt = array(
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_USERAGENT => $curlopt_useragent,
CURLOPT_URL => $url,
CURLOPT_TIMEOUT => 1,
CURLOPT_REFERER => 'http://' . $_SERVER['HTTP_HOST'],
); curl_setopt_array($ch, $curl_opt); $content = curl_exec($ch); if (!is_null($curl_info)) {
$curl_info = curl_getinfo($ch);
} curl_close($ch); if ( preg_match('{<li>City : ([^<]*)</li>}i', $content, $regs) ) {
$city = $regs[1];
}
if ( preg_match('{<li>State/Province : ([^<]*)</li>}i', $content, $regs) ) {
$state = $regs[1];
} if( $city!='' && $state!='' ){
$location = $city . ', ' . $state;
return $location;
}else{
return $default;
}
}

确定任意图片的主导颜色
function dominant_color($image)
{
  $i = imagecreatefromjpeg($image);
  for ($x=0;$x<imagesx($i);$x++) {
   for ($y=0;$y<imagesy($i);$y++) {
    $rgb = imagecolorat($i,$x,$y);
    $r = ($rgb >> 16) & 0xFF;
    $g = ($rgb >> & 0xFF;
    $b = $rgb & 0xFF;
    $rTotal += $r;
    $gTotal += $g;
    $bTotal += $b;
    $total++;
   }
  }
  $rAverage = round($rTotal/$total);
  $gAverage = round($gTotal/$total);
  $bAverage = round($bTotal/$total);
  return ["r"=>$rAverage,"g"=>$gAverage,"b"=>$bAverage];
}

强制下载文件
function force_download($file)
{
$dir = "../log/exports/";
if ((isset($file))&&(file_exists($dir.$file))) {
header("Content-type: application/force-download");
header('Content-Disposition: inline; filename="' . $dir.$file . '"');
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($dir.$file));
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $file . '"');
readfile("$dir$file");
} else {
echo "No file selected";
}
}

解压图片
function unzip($location,$newLocation)
{
if(exec("unzip $location",$arr)){
mkdir($newLocation);
for($i = 1;$i< count($arr);$i++){
$file = trim(preg_replace("~inflating: ~","",$arr[$i]));
copy($location.'/'.$file,$newLocation.'/'.$file);
unlink($location.'/'.$file);
}
return TRUE;
}else{
return FALSE;
}
}

缩放图片
function resize_image($filename, $tmpname, $xmax, $ymax)
{
$ext = explode(".", $filename);
$ext = $ext[count($ext)-1]; if($ext == "jpg" || $ext == "jpeg")
$im = imagecreatefromjpeg($tmpname);
elseif($ext == "png")
$im = imagecreatefrompng($tmpname);
elseif($ext == "gif")
$im = imagecreatefromgif($tmpname); $x = imagesx($im);
$y = imagesy($im); if($x <= $xmax && $y <= $ymax)
return $im; if($x >= $y) {
$newx = $xmax;
$newy = $newx * $y / $x;
}
else {
$newy = $ymax;
$newx = $x / $y * $newy;
} $im2 = imagecreatetruecolor($newx, $newy);
imagecopyresized($im2, $im, 0, 0, 0, 0, floor($newx), floor($newy), $x, $y);
return $im2;
}

检测用户浏览器语言
function get_client_language($availableLanguages, $default='en'){
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$langs=explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach ($langs as $value){
$choice=substr($value,0,2);
if(in_array($choice, $availableLanguages)){
return $choice;
}
}
}
return $default;
}

最新文章

  1. JavaScript Array数组方法详解
  2. 如何灵活运用Linux 进程资源监控和进程限制
  3. spring mvc中使用freemark的一点心得
  4. Django: TemplateDoesNotExist at /admin/
  5. HTML5+开发移动app教程3-mui开发示例
  6. 设置apt-get
  7. Intellj新增maven项目骨架
  8. RabbitMQ Management HTTP API--官方文档
  9. poi操作officePOI操作excel中的数据格式(日期类型)
  10. sed常见用法,删除匹配行的上2行,下3行
  11. Android 正则表达式验证手机号、姓名(包含少数民族)、身份证号
  12. C#小爬虫,通过URL进行模拟发送接收数据
  13. handsontable 方法汇总
  14. 项目Beta冲刺Day6
  15. Go中局部全局变量的区分
  16. Div里超出部分,省略号显示
  17. java8 学习之路之lambda
  18. 洛咕 P3645 [APIO2015]雅加达的摩天楼
  19. Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)----&gt;第6节: 异线程回收对象
  20. Solr4:查询参数fq的用法(对结果进行过滤;两组关键词组合查询)

热门文章

  1. tomcat 1.2 负载均衡
  2. spring 事务传播(Propagation)
  3. 【多线程】创建线程方式一:继承Thread类
  4. Node.js的多版本管理工具 gnvm(win环境)的详细安装教程(图解步骤、通俗易懂、亲测有效)
  5. Java有根儿:Class文件以及类加载器
  6. 看看CabloyJS是如何实现编辑页面脏标记的
  7. 数据库常用DDL语句
  8. 前端环境搭建nodejs%VScode
  9. JVM学习笔记-从底层了解程序运行(二)
  10. Windows-VS2017创建.NET项目