Задать вопрос
@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>
  • Вопрос задан
  • 174 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
echo sprintf('<option value="%s">%s</option>', $file, $file);

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽