网站地图    收藏   

主页 > php专栏 > php综合实列 >

php 在线解压程序 - 综合实例

来源:自学PHP网    时间:2014-12-02 13:09 作者: 阅读:

[导读] ?phpHtmlHead(选择解压文件:);if(!IsSet($HTTP_POST_VARS[#39;submit#39;])){TestWriteable();$gzip_info=;echocheckzlibsupport........

php 在线解压程序

  1. <?php 
  2. HtmlHead("选择解压文件:") ; 
  3.  
  4. if ( !IsSet($HTTP_POST_VARS['submit']) ) 
  5.  TestWriteable() ; 
  6.  $gzip_info = "" ; 
  7.  echo "check zlib support... " ; 
  8.  if ( !function_exists("gzopen") ) 
  9.  { 
  10.   $gzip_info = "<font color="red">注意! 您的空间没有zlib支持,因此用 
  11.   <a href="http://www.phpfensi.com/" target="_blank"><font color="blue">phpZip</font></a>  
  12.   压缩文件时,不要选择“压缩成Gzip格式”,否则将无法正确解压!</font>" ; 
  13.  } 
  14.  else 
  15.  { 
  16.   $gzip_info = "<font color="blue">恭喜! 您的空间支持zlib压缩,强烈建议用  
  17.   <a href="http://www.phpfensi.com/"><font color="red" target="_blank">phpZip</font></a>  
  18.   压缩文件时,选中“压缩成Gzip格式”,将会大大减少文件大小!</font>" ; 
  19.  } 
  20.  echo " ----------------- OK!<br> " . $gzip_info ; 
  21.   
  22.  echo "<br><br><br><br> 
  23. <form action="{$_SERVER["PHP_SELF"]}" method="post" enctype="multipart/form-data"
  24. <table align="center" width="450"
  25. <tr><td height="20" colspan="2">请先选择压缩文件的位置,然后点击“确定”按钮: <p></td></tr> 
  26. <tr> 
  27. <td><input type="radio" name="file_type" value="upload" checked onclick="this.form.upload_file.disabled=false; this.form.server_filename.disabled=true">文件从本地上传: </td>  
  28. <td> 
  29. <input name="upload_file" type="file" style="color:#0000ff"
  30. </td> 
  31. </tr> 
  32.  
  33. <tr><td colspan=2 height=10></td></tr> 
  34.  
  35. <tr> 
  36. <td><input type="radio" name="file_type" value="server" onclick="this.form.upload_file.disabled=true; this.form.server_filename.disabled=false">指定服务器上文件:</td> 
  37. <td><input name="server_filename" value="data.dat.gz" style="color:#0000ff" disabled >(可以用"."表示当前目录)</td> 
  38. </tr> 
  39.  
  40. <tr><td colspan="2" align=center><br><input type="submit" name="submit" value="确定"></td></tr> 
  41. </table> 
  42. </form> 
  43. " ; 
  44.  HtmlFoot() ; 
  45.  exit ; 
  46.  
  47. if ( $_POST['file_type'] == 'upload' ) 
  48.  $tmpfile = $_FILES['upload_file']['tmp_name'] ; 
  49. else 
  50.  $tmpfile = $_POST['server_filename'] ; 
  51.  
  52. if ( !$tmpfile ) 
  53.  exit("无效的文件或文件不存在,可能原因有文件大小太大,上传失败或没有指定服务器端文件等") ;  
  54.  
  55. $bgzExist = FALSE ; 
  56. if ( function_exists("gzopen") ) 
  57.  $bgzExist = TRUE ; 
  58.  
  59. $alldata = "" ; 
  60. $pos = 0 ; 
  61.  
  62. $gzp = $bgzExist ? @gzopen($tmpfile"rb") : @fopen($tmpfile"rb") ; 
  63. $szReaded = "has" ; 
  64. while ( $szReaded ) 
  65.  $szReaded = $bgzExist ? @gzread($gzp, 2*1024*1024) : @fread($gzp, 2*1024*1024) ; 
  66.  $alldata .= $szReaded ; 
  67. $bgzExist ? @gzclose($gzp) : @fclose($gzp) ; 
  68.  
  69. $nFileCount = substr($alldata$pos, 16) ; 
  70. $pos += 16 ; 
  71.  
  72. $size = substr($alldata$pos, 16) ; 
  73. $pos += 16 ; 
  74.  
  75. $info = substr($alldata$pos$size-1) ;  // strip the last ' ' 
  76. $pos += $size ; 
  77.  
  78. $info_array = explode(" "$info) ; 
  79.  
  80. $c_file = 0 ; 
  81. $c_dir = 0 ; 
  82.  
  83. foreach ($info_array as $str_row
  84.  list($filename$attr) = explode("|"$str_row); 
  85.  if ( substr($attr,0,6) == "[/dir]" ) 
  86.  { 
  87.   echo "End of dir $filename<br>"
  88.   continue
  89.  } 
  90.   
  91.  if ( substr($attr,0,5)=="[dir]" ) 
  92.  { 
  93.   if ( @mkdir($filename, 0777) ) 
  94.    echo "Make dir $filename<br>"
  95.   $c_dir++ ; 
  96.  } 
  97.  else 
  98.  { 
  99.   $fp = @fopen($filename"wb"or exit("不能新建文件 $filename ,因为没有写权限,请修改权限"); 
  100.   @fwrite($fpsubstr($alldata$pos$attr) ); 
  101.   $pos += $attr ; 
  102.   fclose($fp); 
  103.   echo "Create file $filename<br>"
  104.   $c_file++ ; 
  105.  } 
  106.  
  107. if ( $_POST['file_type'] == 'upload' ) 
  108.  if ( @unlink($tmpfile) ) echo "删除临时文件 $tmpfile...<br>" ; 
  109.  
  110. echo "<h1>操作完毕! 共解出文件 $c_file 个, 文件夹 $c_dir 个,谢谢使用!</h1><p>" ; 
  111. HtmlFoot() ; 
  112.  
  113.  
  114. function TestWriteable() 
  115.  $safemode = ' 
  116. 新建一文件,命名为 unzip2.php (或其它名字), 其内容如下: 
  117.  
  118. <?php 
  119. copy("unzip.php""unzip_safe.php") ; 
  120. header("location:unzip_safe.php") ; 
  121. ?> 
  122.  
  123. 将这个文件上传到服务器,与unzip.php同一个目录下, 
  124. 运行 unzip2.php 这个程序。 
  125.  
  126. 如果还是不行的话,那就是空间实在不支持,没有办法,很对不住您,浪费您的时间. 
  127.  ' ; 
  128.  echo "check PHP version... " . phpversion() . " -------- OK!<br> " ; 
  129.  echo "testing Permission... " ; 
  130.  
  131.  $fp = @fopen("phpzip.test""wb") ; 
  132.  if ( FALSE !== $fp ) 
  133.  { 
  134.   fclose($fp) ; 
  135.   @unlink("phpzip.test") ; 
  136.  } 
  137.  else 
  138.  { 
  139.   exit("当前目录没有写的权限,请将当前目录属性修改为:777 ") ; 
  140.  } 
  141.  
  142.  $dir = "phpziptest" ; 
  143.  $file = "$dir/test.txt.php" ; 
  144.  @mkdir($dir, 0777) ; 
  145.  $fp = @fopen($file"wb") ; 
  146.  if ( FALSE === $fp ) 
  147.  { 
  148.   @rmdir($dir) ; 
  149.   exit ("没有权限在程序创建的文件夹下创建文件 ,很可能是PHP安全模式所致,解决方法如下:<p><center><textarea cols=110 rows=15>$safemode</textarea></center>") ; 
  150.  } 
  151.  @fclose($fp) ; 
  152.  @unlink($file) ; 
  153.  @rmdir($dir) ; 
  154.  echo " ----------------- OK!<br> " ; 
  155.  
  156. function HtmlHead($title=""$css教程_file=""
  157.  echo "<html> " 
  158.   . " " 
  159.   . "<head> " 
  160.   . "<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> " 
  161.   . "<title>$title</title> " 
  162.   . "<style type="text/css"> " 
  163.   . "body,pre,td {font-size:12px; background-color:#fcfcfc; font-family:Tahoma,verdana,Arial} " 
  164.   . "input,textarea{font-size:12px; background-color:#f0f0f0; font-family:Tahoma,verdana,Arial} " 
  165.   . "</style> " 
  166.   . "</head> " 
  167.   . " " 
  168.   . "<body> " ; 
  169.  
  170. function HtmlFoot() 
  171.  echo "<center><font size="5" face="楷体_GB2312" color="red">使用完请立即删除本文件,以避免被其它人发现使用!</font></center> " 
  172.   . "<br><hr color="#003388"> " 
  173.   . "<center> " 
  174.   . "<p style="font-family:verdana; font-size:12px">Contact us: " 
  175.   . "<a href="http://www.phpfensi.com/" target="_blank">http://www.phpfensi.com/</a></p> " 
  176.   . "</center> " 
  177.   . "</body> " 
  178.   . " " 
  179.   . "</html>" ; 
  180. ?> 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论