首页 > 开发 > PHP > 正文

分享自定义的几个PHP功能函数

2024-05-04 23:34:16
字体:
来源:转载
供稿:网友

这篇文章主要介绍了分享自定义的几个PHP功能函数,本文罗列的都是WEB开发中常用的一些功能函数,例如提交过滤、字符串截取、IP地址匿名化、隐藏文件真实路径等,需要的朋友可以参考下

最近不是在折腾论坛嘛,各种类各种函数,原创一些,从别人那儿qiang过来一些,在此分享出来,希望有朋友能用的到~

注意:部分函数可能不够完善,由此造成的漏洞风险自担~

提交过滤

 

 
  1. function filter($text
  2. //完全过滤注释 
  3. $text = preg_replace('/<!--?.*-->/'''$text); 
  4. //完全过滤js 
  5. $text = preg_replace('/<script?.*//script>/'''$text); 
  6. //过滤危险的属性,如:过滤on事件lang js 
  7. while (preg_match('/(<[^><]+)( lang|action|background|codebase|dynsrc|lowsrc)[^><]+/i'$text$mat)) { 
  8. $text = str_replace($mat[0], $mat[1], $text); 
  9. while (preg_match('/(<[^><]+)(window/.|javascript:|js:|about:|file:|document/.|vbs:|cookie)([^><]*)/i'$text$mat)) { 
  10. $text = str_replace($mat[0], $mat[1] . $mat[3], $text); 
  11. //过滤多余html 
  12. $text = preg_replace('/<//?(html|head|meta|link|base|basefont|body|bgsound|script|form|iframe|frame|frameset|applet|id|ilayer|layer|name|script|xml)[^><]*>/i'''$text); 
  13. //反转换 
  14. $text = str_replace('[''<'$text); 
  15. $text = str_replace(']''>'$text); 
  16. $text = str_replace('|''"'$text); 
  17. return $text

提交过滤2

 

 
  1. function stripslashes_array(&$array
  2. while (list($key$var) = each($array)) { 
  3. if ($key != 'argc' && $key != 'argv' && (strtoupper($key) != $key || '' . intval($key) == "$key")) { 
  4. if (is_string($var)) { 
  5. $array[$key] = stripslashes($var); 
  6. if (is_array($var)) { 
  7. $array[$key] = stripslashes_array($var); 
  8. return $array

字符串截取(这个是emlog里提出来的,其实也就是substr的增强版)

 

 
  1. function subString($strings$start$length
  2. if (function_exists('mb_substr') && function_exists('mb_strlen')) { 
  3. $sub_str = mb_substr($strings$start$length'utf8'); 
  4. return mb_strlen($sub_str'utf8') < mb_strlen($strings'utf8') ? $sub_str . '...' : $sub_str
  5. $str = substr($strings$start$length); 
  6. $char = 0; 
  7. for ($i = 0; $i < strlen($str); $i++) { 
  8. if (ord($str[$i]) >= 128) 
  9. $char++; 
  10. $str2 = substr($strings$start$length + 1); 
  11. $str3 = substr($strings$start$length + 2); 
  12. if ($char % 3 == 1) { 
  13. if ($length <= strlen($strings)) { 
  14. $str3 = $str3 .= '...'
  15. return $str3
  16. if ($char % 3 == 2) { 
  17. if ($length <= strlen($strings)) { 
  18. $str2 = $str2 .= '...'
  19. return $str2
  20. if ($char % 3 == 0) { 
  21. if ($length <= strlen($strings)) { 
  22. $str = $str .= '...'
  23. return $str

IP地址匿名化(最后一位替换为星号)

 

 
  1. function AnonymousIP()  
  2. $ip = GetIP(); 
  3. if ($ip == "Unknown") { 
  4. $removed_ip = "未知用户"
  5. if (strpos($ip":")) { 
  6. $removed_ip = "IPv6用户"
  7. else { 
  8. $reg1 = '/((?:/d+/.){3})/d+/'
  9. $reg2 = '~(/d+)/.(/d+)/.(/d+)/.(/d+)~'
  10. $removed_ip = preg_replace($reg1"//1*"$ip); 
  11. return $removed_ip

获取客户端IP地址

 

 
  1. function GetIP() 
  2. if (@$_SERVER["HTTP_X_FORWARDED_FOR"]) 
  3. $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 
  4. else if (@$_SERVER["HTTP_CLIENT_IP"]) 
  5. $ip = $_SERVER["HTTP_CLIENT_IP"]; 
  6. else if (@$_SERVER["REMOTE_ADDR"]) 
  7. $ip = $_SERVER["REMOTE_ADDR"]; 
  8. else if (@getenv("HTTP_X_FORWARDED_FOR")) 
  9. $ip = getenv("HTTP_X_FORWARDED_FOR"); 
  10. else if (@getenv("HTTP_CLIENT_IP")) 
  11. $ip = getenv("HTTP_CLIENT_IP"); 
  12. else if (@getenv("REMOTE_ADDR")) 
  13. $ip = getenv("REMOTE_ADDR"); 
  14. else 
  15. $ip = "Unknown"
  16. return $ip

字符串加密(支持中文)

 

 
  1. function dencrypt($string$isEncrypt = true, $key = "youdian"
  2. if (!isset($string{0}) || !isset($key{0})) { 
  3. return false; 
  4.  
  5. $dynKey = $isEncrypt ? hash('sha1', microtime(true)) : substr($string, 0, 40); 
  6. $fixedKey = hash('sha1'$key); 
  7.  
  8. $dynKeyPart1 = substr($dynKey, 0, 20); 
  9. $dynKeyPart2 = substr($dynKey, 20); 
  10. $fixedKeyPart1 = substr($fixedKey, 0, 20); 
  11. $fixedKeyPart2 = substr($fixedKey, 20); 
  12. $key = hash('sha1'$dynKeyPart1 . $fixedKeyPart1 . $dynKeyPart2 . $fixedKeyPart2); 
  13.  
  14. $string = $isEncrypt ? $fixedKeyPart1 . $string . $dynKeyPart2 : (isset($string{339}) ? gzuncompress(base64_decode(substr($string, 40))) : base64_decode(substr($string, 40))); 
  15.  
  16. $n = 0; 
  17. $result = ''
  18. $len = strlen($string); 
  19.  
  20. for ($n = 0; $n < $len$n++) { 
  21. $result .= chr(ord($string{$n}) ^ ord($key{$n % 40})); 
  22. return $isEncrypt ? $dynKey . str_replace('='''base64_encode($n > 299 ? gzcompress($result) : $result)) : substr($result, 20, -20); 

检查字符串是否包含中文

 

 
  1. function CheckChinese($string
  2. if (preg_match("/[/x7f-/xff]/"$string)) { 
  3. return true; 
  4. else { 
  5. return false; 

隐藏文件真实路径

 

 
  1. function FileHeaderJump($file
  2. header('Content-Description: File Transfer'); 
  3. header('Content-Type: application/octet-stream'); 
  4. header('Content-Disposition: attachment; filename=' . basename($file)); 
  5. header('Content-Transfer-Encoding: binary'); 
  6. header('Expires: 0'); 
  7. header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
  8. header('Pragma: public'); 
  9. header('Content-Length: ' . filesize($file)); 
  10. ob_clean(); 
  11. flush(); 
  12. readfile($file); 
  13. exit

生成随机字符串,自定义长度

 

 
  1. function CreateRandomString($length
  2. $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
  3. $password = ""
  4. for ($i = 0; $i < $length$i++) { 
  5. $password .= $chars[mt_rand(0, strlen($chars) - 1)]; 
  6. return $password

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表