загружать файлы в текстовую область по щелчку с помощью php?

#php

#php

Вопрос:

Я использую следующий код для загрузки файла в текстовую область на моей странице. это работает так, как должно. однако мне нужно иметь возможность вносить изменения в загруженный файл и сохранять его.

проблема, с которой я сталкиваюсь, заключается в том, что я могу загрузить файл в текстовую область, но я не могу его сохранить, и я продолжаю получать эту ошибку: Error opening file in write mode!

Это мой текущий код:

Код PHP:

 $fn = $_GET['p'];

if (isset($_POST['content']))

{

    $content = stripslashes($_POST['content']);

    $fp = fopen($fn,"w") or die ("Error opening file in write mode!");

    fputs($fp,$content);

    fclose($fp) or die ("Error closing file!");

}
  

HTML-КОД:

 <a href="?p=PAGE.html">PAGE.html</a>


<textarea id="code"  style="width:450px;"  rows="25" cols="50" name="content"><?php readfile($fn); ?></textarea>
  

Приведенный выше код загрузит PAGE.html в текстовую область, если вы нажмете на <a></a> ссылку, но это не позволит мне вносить изменения в файл.

но если я изменю $ fn = $_GET['p']; на $fn = 'PAGE.html'; , все будет работать нормально, и я смогу вносить изменения в загруженный файл и сохранять его без каких-либо ошибок.

может кто-нибудь посоветовать по этому вопросу?

Спасибо

Ответ №1:

Это потому, что когда вы публикуете файл, он не добавляет имя страницы, поэтому переменная $ _GET будет пустой, когда вы отправите ее для сохранения.

При нажатии на ссылку он отображается как переменная $ _GET.

Но когда вы публикуете форму, вы больше не публикуете с переменной $ _GET. Поэтому вместо этого просто включите его в форму как скрытое поле и используйте $_REQUEST, чтобы получить его, независимо от того, является ли оно $ _GET или $ _POST

Итак, вот так…

 $fn = $_REQUEST['page'];
  

и ваш html к этому…

 <a href="?page=PAGE.html">PAGE.html</a>


<input type="hidden" name="page" value="<?php echo $fn;?>" />
<textarea id="code"  style="width:450px;"  rows="25" cols="50" name="content"><?php readfile($fn); ?></textarea>
  

Комментарии:

1. Ты спасатель жизни. ценю это.