Просмотр файла edit.php

Размер файла: 6.28Kb
  1. <?php
  2. include 'system/func.php';
  3. include 'system/ftp_connect.php';
  4. $d=dir_url('/'.boff(prov($_GET['d'])));
  5. $title='Построчное редактирование файла "'.basename($d).'"';
  6. include 'system/head.php';
  7. title($title);
  8. if(empty($d)){
  9. header('Location: /ftp.php');
  10. }else{
  11. ftp_pasv($serv,true);
  12. $res = ftp_size($serv,$d);
  13. if ($res == '-1'){
  14. header('Location: /ftp.php');
  15. }else{
  16. $fi=ftprename($d);
  17. $path=pathinfo($fi);
  18. $rf=mb_strtolower($path['extension'],'UTF-8');
  19. if ($rf != 'jpg' && $rf != 'jpeg' && $rf != 'jpe' && $rf != 'png' && $rf != 'gif' && $rf != 'bmp' && $rf != 'dll' && $rf != 'wav' && $rf != 'mid' && $rf != 'midi' && $rf != 'mp3' && $rf != 'mmf' && $rf != 'psd' && $rf != 'doc' && $rf != 'pdf' && $rf != 'zip' && $rf != 'rar' && $rf != 'jar' && $rf != '3gp' && $rf != 'avi' && $rf != 'mp4' && $rf != '7z' && $rf != 'tgz' && $rf != 'gz' && $rf != 'bz' && $rf != 'gz2' && $rf != 'bz2' && $rf != 'tbz' && $rf != 'tbz2' && $rf != 'tgz2' && $rf != 'tar' && $rf != 'ico'){
  20. if(!is_file('tmp/'.$savedir.'/'.$fi)){
  21. if (@!ftp_get($serv, 'tmp/'.$savedir.'/'.$fi, $d, FTP_BINARY)){
  22. err('Не удалось загрузить файл на сервер');
  23. include 'system/foot.php';
  24. exit();
  25. }
  26. }
  27. switch($act){
  28. default:
  29. $file=file('tmp/'.$savedir.'/'.$fi);
  30. $cnt=count($file);
  31. echo '<div class="menu">';
  32. if ($cnt > 0){
  33. $total=intval(($cnt-1)/50)+1;
  34. if (empty($page) OR $page < 1) $page=1;
  35. elseif ($page > $total) $page=$total;
  36. $start=$page*50-50;
  37. for($i=$start; $i<($start+50); $i++){
  38. $file[$i]=htmlspecialchars($file[$i]);
  39. echo '<span id="'.($i+1).'">'.($i+1).'</span> <a href="/edit.php?act=edit&amp;d='.bon($d).'&amp;page='.$page.'&amp;str='.$i.'">'.$file[$i].'</a>';
  40. echo ' <a href="/edit.php?act=newstr&amp;d='.bon($d).'&page='.$page.'&amp;str='.$i.'"><font color="red"><b>l</b></font></a> ';
  41. echo ' <a href="/edit.php?act=delstr&amp;d='.bon($d).'&amp;page='.$page.'&amp;str='.$i.'"><font color="red"><b>X</b></font></a><br/>';
  42. if ($i == ($cnt-1)) break;
  43. }
  44. }else{
  45. echo '<a href="/edit.php?act=ob&amp;d='.bon($d).'"><font color="red"><b>l</b></font></a>';
  46. }
  47. echo'</div>';
  48. navigator($cnt, $page, '50', $total, '/edit.php?d='.bon($d).'&amp;page=');
  49. echo '<div class="title">Всего строк: '.$cnt.'</div>';
  50. echo '<div class="menu">&laquo; <a href="/file.php?d='.bon($d).'">Назад</a></div>';
  51. break;
  52. case 'edit':
  53. $file=file('tmp/'.$savedir.'/'.$fi);
  54. if (empty($file[$str])){
  55. header('Location: /edit.php?d='.bon($d));
  56. }else{
  57. if (isset($_POST['ok'])){
  58. $cnt=count($file);
  59. for($i=0; $i<$cnt; $i++){
  60. if ($str == $i){
  61. $fp=fopen('tmp/'.$savedir.'/'.$fi, "a+");
  62. flock($fp, LOCK_EX);
  63. ftruncate($fp, 0);
  64. for($i=0; $i<sizeof($file); $i++){
  65. if ($str != $i){
  66. fputs($fp, $file[$i]);
  67. }else{
  68. fputs($fp, $_POST['text']."\r\n");
  69. }
  70. }
  71. fflush($fp);
  72. flock($fp, LOCK_UN);
  73. fclose($fp);
  74. }
  75. }
  76. if (ftp_put($serv, $d, 'tmp/'.$savedir.'/'.$fi, FTP_BINARY)){
  77. header ('Location: /edit.php?d='.bon($d).'&page='.$page.'#'.$str);
  78. }else{
  79. err('Не удалось сохранить файл');
  80. }
  81. }
  82. echo '<div class="menu">Строка: #'.($str+1).'<form method="post">Редактор:<br/><textarea name="text" cols="80" rows="15" style="width: 93%">'.htmlspecialchars(trim($file[$str])).'</textarea><br/><input class="btn btn-default" type="submit" name="ok" value="Сохранить"></form></div>';
  83. echo '<div class="menu">&laquo; <a href="/edit.php?d='.bon($d).'&amp;page='.$page.'#'.($str+1).'">Назад</a></div>';
  84. }
  85. break;
  86. case 'newstr':
  87. $file=file('tmp/'.$savedir.'/'.$fi);
  88. if (isset($_POST['ok'])){
  89. $cnt=count($file);
  90. $fp=fopen('tmp/'.$savedir.'/'.$fi,"a+");
  91. if (!$cnt)$cnt='';
  92. for ($i=0; $i<$cnt; $i++){
  93. if($str == $i){
  94. flock ($fp,LOCK_EX);
  95. ftruncate($fp,0);
  96. for($i=0; $i<sizeof($file); $i++){
  97. if ($str != $i){
  98. fputs($fp,$file[$i]);
  99. }else{
  100. $bizname=$file[$i];
  101. fputs($fp,$bizname.$_POST['text']."\r\n");
  102. }
  103. }
  104. fflush ($fp); flock($fp,LOCK_UN);
  105. fclose($fp);
  106. }
  107. }
  108. if (ftp_put($serv, $d, 'tmp/'.$savedir.'/'.$fi, FTP_BINARY)){
  109. header('Location: /edit.php?d='.bon($d).'&page='.$page.'#'.$str);
  110. }else{
  111. err('Не удалось вставить строку');
  112. }
  113. }
  114. echo '<div class="menu">Новая строка<form method="post">Строка: #'.($str+1).'<br/><textarea name="text" cols="80" rows="15" style="width: 93%"></textarea><br/><input class="btn btn-default" type="submit" name="ok" value="Вставить"></form></div>';
  115. echo '<div class="menu">&laquo; <a href="/edit.php?d='.bon($d).'&amp;page='.$page.'#'.$str.'">Назад</a></div>';
  116. break;
  117. case 'delstr':
  118. $file=file('tmp/'.$savedir.'/'.$fi);
  119. $fp=fopen('tmp/'.$savedir.'/'.$fi,"w");
  120. flock ($fp,LOCK_EX);
  121. for ($i=0; $i< sizeof($file); $i++){
  122. if ($str == $i){
  123. unset($file[$i]);
  124. }
  125. }
  126. fputs($fp,implode($file));
  127. flock ($fp,LOCK_UN);
  128. fclose($fp);
  129. if (ftp_put($serv, $d, 'tmp/'.$savedir.'/'.$fi, FTP_BINARY)){
  130. header('Location: /edit.php?d='.bon($d).'&page='.$page.'#'.$str);
  131. }else{
  132. err('Не удалось удалить строку');
  133. }
  134. break;
  135. case 'ob':
  136. if (isset($_POST['ok'])){
  137. $fp=fopen('tmp/'.$savedir.'/'.$fi,"a+");
  138. flock ($fp,LOCK_EX);
  139. fputs($fp,"".$_POST['text']."\r\n");
  140. flock ($fp,LOCK_UN);
  141. fclose($fp);
  142. if (ftp_put($serv, $d, 'tmp/'.$savedir.'/'.$fi, FTP_BINARY)){
  143. header('Location: /edit.php?d='.bon($d).'&page='.$page.'#'.$str);
  144. }else{
  145. err('Не удалось вставить строку');
  146. }
  147. }
  148. echo '<div class="menu">Новая строка<form method="post">Строка: #1<br/><textarea name="text" cols="80" rows="15" style="width: 93%"></textarea><br/><input class="btn btn-default" type="submit" name="ok" value="Вставить"></form></div>';
  149. echo '<div class="menu">&laquo; <a href="/edit.php?d='.bon($d).'">Назад</a></div>';
  150. break;
  151. case 'pstring':
  152. if (isset($_POST['ok'])){
  153. $stroka=intval(($_POST['str']-1)/50)+1;
  154. $stk=intval($_POST['str']);
  155. $file=file('tmp/'.$savedir.'/'.$fi);
  156. $cnt=count($file);
  157. $total=intval(($cnt-1)/50)+1;
  158. if (empty($stroka) || $stroka < 1){
  159. $stroka=1;
  160. $stk=1;
  161. }
  162. elseif ($stroka > $total){
  163. $stroka=$total;
  164. $stk=$cnt;
  165. }
  166. header('Location: /edit.php?d='.bon($d).'&page='.$stroka.'#'.$stk);
  167. }else{
  168. header('Location: /edit.php?d='.bon($d));
  169. }
  170. break;
  171. }
  172. unlink('tmp/'.$savedir.'/'.$fi);
  173. }else{
  174. err('Данный формат файла нельзя редактировать');
  175. }
  176. }
  177. }
  178. include 'system/foot.php';
  179. ?>