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

首頁 > 開發(fā) > PHP > 正文

分享自定義的幾個PHP功能函數(shù)

2024-05-04 23:34:16
字體:
供稿:網(wǎng)友

這篇文章主要介紹了分享自定義的幾個PHP功能函數(shù),本文羅列的都是WEB開發(fā)中常用的一些功能函數(shù),例如提交過濾、字符串截取、IP地址匿名化、隱藏文件真實(shí)路徑等,需要的朋友可以參考下

最近不是在折騰論壇嘛,各種類各種函數(shù),原創(chuàng)一些,從別人那兒qiang過來一些,在此分享出來,希望有朋友能用的到~

注意:部分函數(shù)可能不夠完善,由此造成的漏洞風(fēng)險自擔(dān)~

提交過濾

 

 
  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. //反轉(zhuǎn)換 
  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里提出來的,其實(shí)也就是substr的增強(qiáng)版)

 

 
  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; 

隱藏文件真實(shí)路徑

 

 
  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

生成隨機(jī)字符串,自定義長度

 

 
  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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀化市| 泾源县| 台北县| 麦盖提县| 封开县| 大埔区| 西乌| 卓尼县| 锡林郭勒盟| 讷河市| 内黄县| 天峻县| 正蓝旗| 阿克| 汉沽区| 额济纳旗| 绥滨县| 大港区| 罗源县| 缙云县| 保德县| 合江县| 霍林郭勒市| 玛曲县| 运城市| 什邡市| 措美县| 滦南县| 横峰县| 巴南区| 富川| 林州市| 如东县| 彰武县| 应用必备| 洪泽县| 麻阳| 英德市| 恭城| 交城县| 清远市|