未来往事
尽量不给别人添麻烦。 [2017年 第50周/共52周]

html无损截取_保留html标签

  1. /**
  2. * 字符串切割
  3. * 功能:截取字符串(支持中文),如果字符串中包括html标签,截取的字符串则会保留完整的html标签
  4. * @param string $string 输入字符串
  5. * @param unknown $length 截取长度
......
+阅读全文

php图片添加水印/图片合成/水印平铺

php图片加水印,php文字水印,php平铺水印,php图片水印,php图片添加图文 平铺水印。

图片添加文字水印

  1. $bigImgPath = '08.jpg';  
  2. $img = imagecreatefromstring(file_get_contents($bigImgPath));  
......
+阅读全文

URL数字安全码随机拼组生成及校验

URL数字随机重组校验,URL地址id随机加密生成及逆向校验 URL加密解密
PHP版本:
  1. echo geturl(888);  
  2. //输出结果:http://fity.cn/post/984-1186-187-2698712709009 //每次刷新数值都会全部改变。  
  3. //实现原理:对数字888重组后为999,然后999+187=1186。可应用到一些防刷、防采页面,如投票防刷(id数字不公开全在服务端处理好)。  
  4.   
  5. /** 地址拼组 */  
  6. function geturl($a){  
  7.   return $href = "http://fity.cn/post/".renum($a);  
  8. }  
  9. /** 数字重组  未来往事博客:http://fity.cn */  
  10. function renum($a){  
  11.   $n = numScaler($a);  
  12.   $c = SetRandNum(strlen($a));  
  13.   $d = SetRandNum(strlen($a));  
  14.   $n = intval($n) + intval($d);  
  15.   $b = getMillisecond();  
  16.   $b = numScaler($b);  
  17.   return $c."-".$n."-".$d."-".$b;  
  18. }  
  19. /** 数字换算 */  
  20. function numScaler($a){  
  21.   $str=str_split((string)$a);  
  22.   $b="";  
  23.   foreach($str as $key => $val){  
  24.     switch($val){  
  25.       case "0":$b .="0";break;  
  26.       case "1":$b .="2";break;  
  27.       case "2":$b .="5";break;  
  28.       case "3":$b .="8";break;  
  29.       case "4":$b .="6";break;  
  30.       case "5":$b .="1";break;  
  31.       case "6":$b .="3";break;  
  32.       case "7":$b .="4";break;  
  33.       case "8":$b .="9";break;  
  34.       case "9":$b .="7";break;  
  35.     }  
  36.   }  
  37.   return $b;  
  38. }  
  39. /** 随机值生成  未来往事博客:http://fity.cn */  
  40. function SetRandNum($n){  
  41.   $a="";  
  42.   for($i=0;$i<$n;$i++){  
  43.     $a .= floor(random()*10);  
  44.   }  
  45.   return $a;  
  46. }  
  47. /** 0.0-1.0随机值生成 */  
  48. function random(){  
  49.     return mt_rand() / (mt_getrandmax() + 1);  
  50. }  
  51. /** 获取当前时间戳,精确到毫秒 */  
  52. function getMillisecond() {  
  53.   list($t1$t2) = explode(' ', microtime());       
  54.   return (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);  
  55. }  

jquery版本:
+阅读全文

PHP CURL代理访问

php curl curl_setopt代理,PHP CURL使用代理访问WEB服务器

  1. $proxy = "118.69.202.160";  
  2. $proxyport = "3128";  
  3. $ch = curl_init("http://www.fity.cn/");&nbs
......
+阅读全文

CURL HTTP构造请求Header实现伪造来源IP的说明

CURL HTTP构造请求Header实现伪造来源IP的说明

伪造的只是X-FORWARDED-FOR和CLIENT-IP,REMOTE_ADDR伪造不了。
$_SERVER['REMOTE_ADDR']是由nginx传递给php的参数,就代表了与当前nginx直接通信的客户端的 IP(是不能伪造的)


PHP获取客户端IP,代理服务器IP,共有如下几类情况:
一、没有使用代理服务器的情况:
REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示

二、使用透明代理服务器的情况:【Transparent Proxies】
REMOTE_ADDR = 最后一个代理服务器 IP
......
+阅读全文

php获取目录下的所有文件并按时间排序

php获取目录下的所有文件并按文件创建时间进行排序,php按文件创建/修改时间排序.
  1. function getFile($dir=''){  
  2.   $num=1;    //用来记录目录下的文件个数  
  3.   $dirname=
......
+阅读全文

php生成多级目录函数

php生成多级目录的方法函数.
  1. function mkdirs($dir){   
  2.   return is_dir($diror (mkdirs(dirname($dir)) and mkdir($dir,0777));   
  3. }  
函数说明:
(1)函数:bool is_dir ( string $filename )
功能:判断给定文件名是否是一个目录,如果文件名存在并且为目录则返回 TRUE。如果 filename 是一个相对路径,则按照当前工作目录检查其相对路径。
注: 本函数的结果会被缓存。更多信息参见 clearstatcache()。

(2)函数:dirname(path)
+阅读全文

php判断是否移动设备

php判断是否移动手机设备函数,php判断手机访问函数.

相对精准的判断方式:
  1. function is_Mobile_Device(){  
  2.  //获取ALL_HTTP全部的http信息  
  3.     $_SERVER['ALL_HTTP'] = isset($_SERVER['ALL_HTTP']) ? $_SERVER['ALL_HTTP'] : '';  
  4.     $mobile_browser = '0';  
  5.     if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i'strtolower($_SERVER['HTTP_USER_AGENT'])))  
  6.         $mobile_browser++;  
  7.     if((isset($_SERVER['HTTP_ACCEPT'])) and (strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') !== false))  
  8.         $mobile_browser++;  
  9.     if(isset($_SERVER['HTTP_X_WAP_PROFILE']))  
  10.         $mobile_browser++;  
  11.     if(isset($_SERVER['HTTP_PROFILE']))  
  12.         $mobile_browser++;  
  13.   
  14.     $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));  
  15.     $mobile_agents = array(  
  16.         'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',  
  17.         'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',  
  18.         'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',  
  19.         'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',  
  20.         'newt','noki','oper','palm','pana','pant','phil','play','port','prox',  
  21.         'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',  
  22.         'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',  
  23.         'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',  
  24.         'wapr','webc','winw','winw','xda','xda-'  
  25.     );  
  26.   
  27.     if(in_array($mobile_ua$mobile_agents))  
  28.         $mobile_browser++;  
  29.     if(strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false)  
  30.         $mobile_browser++;  
  31.     if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') !== false)  
  32.         $mobile_browser=0;  
  33.     if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows phone') !== false)  
  34.         $mobile_browser++;  
  35.     if($mobile_browser>0)  
  36.         return true;  
  37.     else  
  38.         return false;  
  39. }  

简单通过user-agent方式判断
+阅读全文

curl file_get_contents post方式获取数据

curl post,file_get_contents post,curl file_get_contents post请求数据

在PHP中cURL、file_get_contents函数均可以获取远程链接的数据,但是file_get_contents的可控制性不太好,对于各种复杂情况的数据采集情景,file_get_contents显得有点无能为力,cURL在数据采集情景复杂的环境下略显优势。cURL函数的curl_setopt里面还有很多参数,读者可以抽空整体看一遍,虽然平时未必用得上,但是至少做到心里有底,知道都有哪些参数,必要时还能找出来使用。本文仅粗略介绍了file_get_contents函数和cURL函数的基本使用:

curl post方式获取数据
  1. //调用示例  
  2. $post_data = array ("category" => "9");  
  3. echo postCurl('http://fity.cn/category.php',$post_data);  
  4.   
  5. //CURL函数--POST方式请求资源  
  6. function postCurl($api_url$post_data){  
  7.     $ch = curl_init(); // 初始化CURL句柄  
  8.     curl_setopt($ch, CURLOPT_URL, $api_url); // 设置访问的url地址  
  9.     curl_setopt($ch, CURLOPT_TIMEOUT, 35); // 设置超时  
  10.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); // 等待的时间,如果设置为0,则不等待  
  11.     curl_setopt($ch, CURLOPT_HEADER, false); // 设定是否输出页面内容  
  12.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 设定是否显示头信息  
  13.     curl_setopt($ch, CURLOPT_POST, true);  // post数据  
  14.     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);// post的变量  
  15.     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"); // 模拟浏览器头信息  
  16.     curl_setopt($ch, CURLOPT_REFERER, "http://www.x.com"); // 伪造来源地址  
  17.     $data = curl_exec($ch);  
  18.     curl_close($ch);  
  19.   if ($data) {  
  20.     return $data;  
  21.   } else {  
  22.     return false;  
  23.   }  
  24. }  

file_get_contents post方式获取数据
+阅读全文

php获取自然周_php获取自然周开始结束日期

php获取当前自然周,php获取当前为第几周,php获取自然周开始结束日期时间,php date()函数

示例:
echo getTotalWeek(); //输出当前年份全年共有多少自然周
echo getWeekNum(); //输出当前为本年的第几周
echo getWeekNum('2016-7-31');  //输出2016年7月31日为本年的第几周
print_r(getWeekDate(2016,32)); //输出2016年第32周的起止日期

PHP根据年份获取全年共多少自然周、PHP获取一年共有多少自然周(考虑闰年)
  1. /** 
  2. * 获得当前年有多少个自然周 
  3. * @param year 年份,不传参默认为当前年份,格式2016 
  4. * @author 未来往事<http://fity.cn> 
  5. * @return 总共的周数 
  6. * @return string 
  7. */  
  8. function getTotalWeek($year = '') {  
  9.   $year = ($year) ? $year : date('Y');  
  10.   $week = 0;  
  11.   $days = 365;  
  12.   //if ($year % 400 == 0 || ($year % 4 == 0 && $year % 100 != 0)){//判断是否闰年,闰年366天。最后修改2016.8.4 By未来往事<http://fity.cn>  
  13.   if (date('L') == 1){//判断是否闰年,闰年366天  
  14.     $days = 366;  
  15.   }  
  16.   //得到一年所有天数然后除以7  
  17.   $week = $days / 7;//得到多少周  
  18.   return floor($week);  
  19. }  
  20. 欢迎来访未来往事博客http://fity.cn  

PHP根据日期时间获取为当前的第几周、PHP获取当前是一年的第几周
  1.   /**  
  2.      * 获取某一年或当前日期自然周 
  3.      * @param int $date 日期时间,不传参默认为当前时间,格式2016-8-3 
  4.      * @author 未来往事<http://fity.cn> 
  5.      * @return string 
  6.      */   
  7.   function getWeekNum($date = ''){  
  8.     $datearr = ($date) ? getdate(strtotime($date)) : getdate();  
  9.     $year = strtotime($datearr['year'].'-1-1');  
  10.     $startdate = getdate($year);  
  11.     $firstweekday = 7-$startdate['wday'];//获得第一周几天  
  12.     //今年的第几天  
  13.     //$yday = $datearr['yday']+1-$firstweekday;//以周日开始计算  
  14.     $yday = $datearr['yday']-$firstweekday;//以周一开始计算  
  15.     return ceil($yday/7)+1;//取到第几周  
  16.   }  
  17. //欢迎来访未来往事博客http://fity.cn  

PHP根据日期时间及第几周获取开始日期和结束日期、PHP获取自然周的开始日期和结束日期
+阅读全文

PHP高质量不失真等比例图片缩放类

php图片缩放类,php不失真图片缩放类,php高质量缩略图,php缩略图函数,php无损缩放,php图片缩放后模糊解决,图片缩略图质量低解决方法。在PHP网站开发过程中,如果你建立的网站涉及大量的图片处理,必然涉及到图片上传、缩放,而如何保持图片不失真,是很多初级PHP网站开发者比较头疼的一件事,今天未来往事<http://fity.cn>就和大家分享一下如何进行等比例不失真图片缩放。

首先我们来了解几个php函数:
imagepng()http://cn2.php.net/manual/en/function.imagepng.php
注:函数的第三个参数的数值区间控制图片的质量,与imagejpeg()函数不同,imagepng()函数的区间值是0-9 (0表示质量最高,9表示质量最低)。PHP 5.1.2+支持。
imagegif()http://cn2.php.net/manual/en/function.imagegif.php
imagejpeg()http://cn2.php.net/manual/en/function.imagejpeg.php
注:函数的第三个参数控制图片的质量,区间0-100 (0表示质量最低,100表示质量最高. 默认75)

附类代码:
+阅读全文

php识别图片的主色调

本文只做一些基础的单点识别判断,仅供参考。
  1. //取图片位于y轴1/2处的某单点主色调方法  
  2. function getRgb($file){  
  3.   //裁切图片  
  4.   $size = getimagesize
......
+阅读全文

php裁切图片方法示例

php裁剪图片指定区域代码示例
原图图片:
点击在新窗口中浏览此图片
其中虚线框中是我们需要裁切保存的图片。

  1. $src = 'fity.cn.jpg';  
  2. //创建源图的实例  
  3. $file = imagecreatefromstring(file_get_contents($src));  
  4.    
  5. //裁剪开区域左上角的点的坐标  
  6. $x = 90;  
  7. $y = 40;  
  8. //裁剪区域的宽和高  
  9. $width = 180;  
  10. $height = 110;  
  11. //最终保存成图片的宽和高,和源要等比例,否则会变形  
  12. $final_width = 120;  
  13. $final_height = round($final_width * $height / $width);  
  14.    
  15. //将裁剪区域复制到新图片上,并根据源和目标的宽高进行缩放或者拉升  
  16. $new_image = imagecreatetruecolor($final_width$final_height);  
  17. imagecopyresampled($new_image$file, 0, 0, $x$y$final_width$final_height$width$height);  
  18.    
  19. //输出图片  
  20. header('Content-Type: image/jpeg');  
  21. imagejpeg($new_image);  
  22.    
  23. imagedestroy($file);  
  24. imagedestroy($new_image);  
输出图片:
+阅读全文

imagecopymerge合成图片 黑色背景问题

php imagecopymerge合并图片黑色背景问题,多图片合并 黑色背景问题解决

将默认使用的imagecopymerge替换成如下函数
  1. function imagecopymerge_alpha($dst_im$src_im$dst_x$dst_y$src_x$src_y$src_w$src_h$pct){  
  2.         $opacity=$pct;  
  3.         // getting the watermark width  
  4.         $w = imagesx($src_im);  
  5.         // getting the watermark height  
  6.         $h = imagesy($src_im);  
  7.                
  8.         // creating a cut resource  
  9.         $cut = imagecreatetruecolor($src_w$src_h);  
  10.         // copying that section of the background to the cut  
  11.         imagecopy($cut$dst_im, 0, 0, $dst_x$dst_y$src_w$src_h);  
  12.         // inverting the opacity  
  13.         //$opacity = 100 - $opacity;  
  14.                
  15.         // placing the watermark now  
  16.         imagecopy($cut$src_im, 0, 0, $src_x$src_y$src_w$src_h);  
  17.         imagecopymerge($dst_im$cut$dst_x$dst_y$src_x$src_y$src_w$src_h$opacity);  
  18.     }  

图示:
+阅读全文

php多维数组排序方法

php二维数组排序,php多维数组排序函数
  1. /** 
  2.  * 二维数组排序/多维数组排序 PHP 
  3.  * @param multi_array 多维数组名称 
  4.  * @param sort_key 二维数组的键名(要排序的键名) 
  5.  * @param
......
+阅读全文