国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

分享自定義的幾個PHP功能函數

2024-09-04 11:42:40
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了分享自定義的幾個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.  } 
  10.  while (preg_match('/(<[^><]+)(window/.|javascript:|js:|about:|file:|document/.|vbs:|cookie)([^><]*)/i'$text$mat)) { 
  11.  $text = str_replace($mat[0], $mat[1] . $mat[3], $text); 
  12.  } 
  13.  //過濾多余html 
  14.  $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); 
  15.  //反轉換 
  16.  $text = str_replace('[''<'$text); 
  17.  $text = str_replace(']''>'$text); 
  18.  $text = str_replace('|''"'$text); 
  19.  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.  } 
  7.  if (is_array($var)) { 
  8.  $array[$key] = stripslashes_array($var); 
  9.  } 
  10.  } 
  11.  } 
  12.  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.  } 
  6.  $str = substr($strings$start$length); 
  7.  $char = 0; 
  8.  for ($i = 0; $i < strlen($str); $i++) { 
  9.  if (ord($str[$i]) >= 128) 
  10.  $char++; 
  11.  } 
  12.  $str2 = substr($strings$start$length + 1); 
  13.  $str3 = substr($strings$start$length + 2); 
  14.  if ($char % 3 == 1) { 
  15.  if ($length <= strlen($strings)) { 
  16.  $str3 = $str3 .= '...'
  17.  } 
  18.  return $str3
  19.  } 
  20.  if ($char % 3 == 2) { 
  21.  if ($length <= strlen($strings)) { 
  22.  $str2 = $str2 .= '...'
  23.  } 
  24.  return $str2
  25.  } 
  26.  if ($char % 3 == 0) { 
  27.  if ($length <= strlen($strings)) { 
  28.  $str = $str .= '...'
  29.  } 
  30.  return $str
  31.  } 

IP地址匿名化(最后一位替換為星號)

  1. function AnonymousIP()  
  2.  $ip = GetIP(); 
  3.  if ($ip == "Unknown") { 
  4.  $removed_ip = "未知用戶"
  5.  } 
  6.  if (strpos($ip":")) { 
  7.  $removed_ip = "IPv6用戶"
  8.  } else { 
  9.  $reg1 = '/((?:/d+/.){3})/d+/'
  10.  $reg2 = '~(/d+)/.(/d+)/.(/d+)/.(/d+)~'
  11.  $removed_ip = preg_replace($reg1"//1*"$ip); 
  12.  } 
  13.  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.    
  6.  $dynKey = $isEncrypt ? hash('sha1', microtime(true)) : substr($string, 0, 40); 
  7.  $fixedKey = hash('sha1'$key); 
  8.    
  9.  $dynKeyPart1 = substr($dynKey, 0, 20); 
  10.  $dynKeyPart2 = substr($dynKey, 20); 
  11.  $fixedKeyPart1 = substr($fixedKey, 0, 20); 
  12.  $fixedKeyPart2 = substr($fixedKey, 20); 
  13.  $key = hash('sha1'$dynKeyPart1 . $fixedKeyPart1 . $dynKeyPart2 . $fixedKeyPart2); 
  14.    
  15.  $string = $isEncrypt ? $fixedKeyPart1 . $string . $dynKeyPart2 : (isset($string{339}) ? gzuncompress(base64_decode(substr($string, 40))) : base64_decode(substr($string, 40))); 
  16.    
  17.  $n = 0; 
  18.  $result = ''
  19.  $len = strlen($string); 
  20.    
  21.  for ($n = 0; $n < $len$n++) { 
  22.  $result .= chr(ord($string{$n}) ^ ord($key{$n % 40})); 
  23.  } 
  24.  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; 
  6.  } 

隱藏文件真實路徑

  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.  } 
  7.  return $password
  8. }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福泉市| 白水县| 施秉县| 宣武区| 济阳县| 太原市| 集贤县| 太和县| 全椒县| 岫岩| 温宿县| 绵竹市| 乌拉特前旗| 晋中市| 沐川县| 伊宁县| 忻州市| 项城市| 吴旗县| 丰顺县| 凌海市| 泾阳县| 河北区| 化德县| 额济纳旗| 龙游县| 临猗县| 玉树县| 安阳市| 舞钢市| 垦利县| 新晃| 长泰县| 金塔县| 章丘市| 上饶县| 博爱县| 乐至县| 鲁甸县| 北流市| 禹城市|