@redcap152

Почему все изменения сохраняются в index.php и как сохранить переменную после нажатия кнопки?

Что делает мой код:клиент смотрит список файлов, в поле path вбивает его имя, из селекта fselector с помощью POST запроса формируется переменная $path нажимает кнопку Open и в переменную $content .записывается содержимое этого файла. Затем переменная $content отображается в поле content. Клиент может изменить содержимое файла (редактирует поле content) и нажимает кнопку "Save", после чего содержимое переменной $buffer пишется в искомый файл. Почему этот "искомый файл" всегда index.php, и как мне заставить программу "помнить" переменную $path после нажатия кнопки Open?
Код:
<style>
    .list {
    float:left;
    width:65%;
    }
    .editform {
        float:left;
        width:35%;
    }
</style>
<?php
// получаем путь к файлу из селектора fselector
$path = $_POST ['fselector'];
 
if (isset($_POST['submit-path'])) {  //Действия по нажатию "Open"
    if ($path) $content = file_get_contents ($path);
    else echo "Не введен путь!";
}
 
if (isset($_POST['submit-content'])) {  //Действия по нажатию "Save"
    $buffer = $_POST ['content']; //получаем content из поля ввода в переменную buffer
    if ($buffer) file_put_contents ($path, $buffer); echo "Файл успешно сохранён";
}
?>
 <div id = "editform">
<form method = "post">
 
   
    <br>
    <select name = "fselector">
     <?php 
if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) { 
        if ($file != "." && $file != "..") { 
            echo "<option>$file\n</option>"; 
        } 
    }
    closedir($handle); 
}
 
?>
</select>
    <input type = "submit" name = "submit-path" value = "Open">
 <br>
    <textarea cols = "60" rows = "40" name = "content" id = "content" value = ><?=$content;?></textarea>
    <br>
    <input type = "submit" name = "submit-content" value = "Save">
   
</form>
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
echo sprintf('<option value="%s">%s</option>', $file, $file);

Сейчас ваш селект не может передать на сервер выбранный файл, потому что в нём нет ни одного атрибута value.
Ответ написан
Комментировать
Denormalization
@Denormalization
Что-то подсказывает мне, что index.php выводится первым в селекте, и так как после редактирования никто не выбирает нужный файл, то на сервер отправляется index.php
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы