util.php
上传用户:ah_jiwei
上传日期:2022-07-24
资源大小:54044k
文件大小:4k
源码类别:

数据库编程

开发平台:

Visual C++

  1. <?php
  2. /*
  3.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  4.  * Copyright (C) 2003-2007 Frederico Caldeira Knabben
  5.  *
  6.  * == BEGIN LICENSE ==
  7.  *
  8.  * Licensed under the terms of any of the following licenses at your
  9.  * choice:
  10.  *
  11.  *  - GNU General Public License Version 2 or later (the "GPL")
  12.  *    http://www.gnu.org/licenses/gpl.html
  13.  *
  14.  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  15.  *    http://www.gnu.org/licenses/lgpl.html
  16.  *
  17.  *  - Mozilla Public License Version 1.1 or later (the "MPL")
  18.  *    http://www.mozilla.org/MPL/MPL-1.1.html
  19.  *
  20.  * == END LICENSE ==
  21.  *
  22.  * Utility functions for the File Manager Connector for PHP.
  23.  */
  24. function RemoveFromStart( $sourceString, $charToRemove )
  25. {
  26. $sPattern = '|^' . $charToRemove . '+|' ;
  27. return preg_replace( $sPattern, '', $sourceString ) ;
  28. }
  29. function RemoveFromEnd( $sourceString, $charToRemove )
  30. {
  31. $sPattern = '|' . $charToRemove . '+$|' ;
  32. return preg_replace( $sPattern, '', $sourceString ) ;
  33. }
  34. function ConvertToXmlAttribute( $value )
  35. {
  36. if ( defined( 'PHP_OS' ) ) 
  37. {
  38. $os = PHP_OS ;
  39. }
  40. else
  41. {
  42. $os = php_uname() ;
  43. }
  44. if ( strtoupper( substr( $os, 0, 3 ) ) === 'WIN' ) 
  45. {
  46. return ( utf8_encode( htmlspecialchars( $value ) ) ) ;
  47. else 
  48. {
  49. return ( htmlspecialchars( $value ) ) ;
  50. }
  51. }
  52. /**
  53.  * Check whether given extension is in html etensions list
  54.  *
  55.  * @param string $ext
  56.  * @param array $htmlExtensions
  57.  * @return boolean
  58.  */
  59. function IsHtmlExtension( $ext, $htmlExtensions )
  60. {
  61. if ( !$htmlExtensions || !is_array( $htmlExtensions ) )
  62. {
  63. return false ;
  64. }
  65. $lcaseHtmlExtensions = array() ;
  66. foreach ( $htmlExtensions as $key => $val )
  67. {
  68. $lcaseHtmlExtensions[$key] = strtolower( $val ) ;
  69. }
  70. return in_array( $ext, $lcaseHtmlExtensions ) ;
  71. }
  72. /**
  73.  * Detect HTML in the first KB to prevent against potential security issue with 
  74.  * IE/Safari/Opera file type auto detection bug.
  75.  * Returns true if file contain insecure HTML code at the beginning.
  76.  * 
  77.  * @param string $filePath absolute path to file
  78.  * @return boolean
  79.  */ 
  80. function DetectHtml( $filePath )
  81. {
  82. $fp = fopen( $filePath, 'rb' ) ;
  83. $chunk = fread( $fp, 1024 ) ;
  84. fclose( $fp ) ;
  85. $chunk = strtolower( $chunk ) ;
  86. if (!$chunk) 
  87. {
  88. return false ;
  89. }
  90. $chunk = trim( $chunk ) ;
  91. if ( preg_match( "/<!DOCTYPEW*X?HTML/sim", $chunk ) ) 
  92. {
  93. return true;
  94. }
  95. $tags = array( '<body', '<head', '<html', '<img', '<pre', '<script', '<table', '<title' ) ;
  96. foreach( $tags as $tag ) 
  97. {
  98. if( false !== strpos( $chunk, $tag ) ) 
  99. {
  100. return true ;
  101. }
  102. }
  103. //type = javascript
  104. if ( preg_match( '!types*=s*['"]?s*(?:w*/)?(?:ecma|java)!sim', $chunk ) ) 
  105. {
  106. return true ;
  107. }
  108. //href = javascript
  109. //src = javascript
  110. //data = javascript
  111. if ( preg_match( '!(?:href|src|data)s*=s*['"]?s*(?:ecma|java)script:!sim', $chunk ) )
  112. {
  113. return true ;
  114. }
  115. //url(javascript
  116. if ( preg_match( '!urls*(s*['"]?s*(?:ecma|java)script:!sim', $chunk ) ) 
  117. {
  118. return true ;
  119. }
  120. return false ;
  121. }
  122. /**
  123.  * Check file content.
  124.  * Currently this function validates only image files.
  125.  * Returns false if file is invalid.
  126.  * 
  127.  * @param string $filePath absolute path to file
  128.  * @param string $extension file extension
  129.  * @param integer $detectionLevel 0 = none, 1 = use getimagesize for images, 2 = use DetectHtml for images
  130.  * @return boolean
  131.  */ 
  132. function IsImageValid( $filePath, $extension )
  133. {
  134. $imageCheckExtensions = array('gif', 'jpeg', 'jpg', 'png', 'swf', 'psd', 'bmp', 'iff');
  135. // version_compare is available since PHP4 >= 4.0.7
  136. if ( function_exists( 'version_compare' ) ) {
  137. $sCurrentVersion = phpversion();
  138. if ( version_compare( $sCurrentVersion, "4.2.0" ) >= 0 ) {
  139. $imageCheckExtensions[] = "tiff";
  140. $imageCheckExtensions[] = "tif";
  141. }
  142. if ( version_compare( $sCurrentVersion, "4.3.0" ) >= 0 ) {
  143. $imageCheckExtensions[] = "swc";
  144. }
  145. if ( version_compare( $sCurrentVersion, "4.3.2" ) >= 0 ) {
  146. $imageCheckExtensions[] = "jpc";
  147. $imageCheckExtensions[] = "jp2";
  148. $imageCheckExtensions[] = "jpx";
  149. $imageCheckExtensions[] = "jb2";
  150. $imageCheckExtensions[] = "xbm";
  151. $imageCheckExtensions[] = "wbmp";
  152. }
  153. }
  154. if ( !in_array( $extension, $imageCheckExtensions ) ) {
  155. return true;
  156. }
  157. if ( @getimagesize( $filePath ) === false ) {
  158. return false ;
  159. }
  160. return true;
  161. }
  162. ?>