Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как открыть файл в браузере
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Как открыть файл в браузере

Страниц (1): [1]
 

1. noobik - 07 Ноября, 2011 - 13:29:46 - перейти к сообщению
Здравствуйте. У меня такая ситуация.
Есть сайт, написан на html/css. страницы правятся крайне редко. НО всё же иногда правятся и каждый раз перезаливать файлы неудобно.

хотел сделать скрипт, который мог бы открывать в браузере и там править файлы. так было бы удобнее (править там, где есть инет).

в итоге полазил в инете, собрал вот такой код:

PHP:
скопировать код в буфер обмена
  1. $file='name.htm';
  2. $temp=isset($_POST['temp'])?$_POST['temp']:'';
  3. $edit=isset($_POST['edit'])?$_POST['edit']:'';
  4. if ($edit=='Edit')
  5. { file_put_contents($file,$temp); }
  6. $temp=file_get_contents($file);
  7. echo "<form method='post'>";
  8. echo "<textarea name='temp' cols='100%' rows='35'>".htmlspecialchars($temp)."</textarea><br>";
  9. echo "<input type='submit' name='edit' value='Edit'>";
  10. echo "</form>";


получается, я запускаю этот скрипт в браузере, мне выводится код страницы name.htm и кнопка сохранения.
всё бы хорошо, только файлов для правки у меня 5 штук. и делать 5 скриптов не хочется.

подскажите, как добавить сверху поле для ввода имени файла и кнопочку, по нажатию которой текстарея открывала указанный файл?
2. etoYA - 08 Ноября, 2011 - 22:05:57 - перейти к сообщению
Создаеш форму с типом GET, в ней поле и кнопку, вместо $file='name.html'; пишеш $file = $_GET['название поля']; и теперь сюда вводиш наз-ние страницы введеш name.html будет тебе name.html введеш index.html будет тебе index.html

PHP:
скопировать код в буфер обмена
  1.  
  2. $file='name.htm';
  3. $temp=isset($_POST['temp'])?$_POST['temp']:'';
  4. $edit=isset($_POST['edit'])?$_POST['edit']:'';
  5. if ($edit=='Edit')
  6. { file_put_contents($file,$temp); }
  7. $temp=file_get_contents($file);
  8. echo "<form method='post'>";
  9. echo "<textarea name='temp' cols='100%' rows='35'>".htmlspecialchars($temp)."</textarea><br>";
  10. echo "<input type='submit' name='edit' value='Edit'>";
  11. echo "</form>";
3. mik_name - 08 Ноября, 2011 - 22:30:15 - перейти к сообщению
Где-так. Если на сервере включены магические кавычки нужно использовать stripcslashes.
PHP:
скопировать код в буфер обмена
  1. <html>
  2.     <body>
  3.         <form metod ="GET">
  4.             <input type ="text" name ="fname">
  5.         </form>
  6.  
  7. <?  
  8.     if (isset($_GET['fname'])) {
  9.     $file = $_GET['fname'];
  10.     $temp = isset($_POST['temp']) ? $_POST['temp'] : '';
  11.     $edit = isset($_POST['edit']) ? $_POST['edit'] : '';
  12.     if ($edit == 'Edit') {
  13.         file_put_contents($file, stripcslashes($temp));
  14.     }
  15.     $temp = file_get_contents($file);
  16.     echo "<form method='post'>";
  17.     echo "<textarea name='temp' cols='100%' rows='35'>" . htmlspecialchars($temp) . "</textarea><br>";
  18.     echo "<input type='submit' name='edit' value='Edit'>";
  19.     echo "</form>";
  20. }
  21. ?>
  22.      </body>
  23. </html>

Сначала попробовал применить в html части метод POST, но создавалась переменная _GET. Две формы работающие по пост на одной странице не допустимы?
4. LIME - 08 Ноября, 2011 - 22:35:01 - перейти к сообщению
noobik только учтите что тогда придется дописать и авторизацию иначе каждый кто наткнется на ваш скрипт сможет править ваш сайт
на самом деле заливать файлы по ftp удобнее
и править локально тоже удобнее
не заморачивайтесь

 

Powered by ExBB FM 1.0 RC1