Форма отправки просто обновляет экран без изменений

0

У меня есть простой небольшой скрипт, который позволит члену клуба, не являющемуся администратором, редактировать текст на веб-сайте. У меня он работает отлично, за пределами CMS, который я использую. Из-за присущего мне отсутствия безопасности я теперь пытаюсь переместить его в папку в структуре CMS. Я не думаю, что мой вопрос действительно сосредотачивается вокруг того факта, что CMS задействован еще... прямо сейчас я просто пытаюсь понять, почему неизменный скрипт не работает, просто перемещая его в другую папку.

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

Здесь код:

<?php
$fn = "http://www.mydomain.org/Public_Files/folder/FileToEdit.txt";
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!");
}
?>
<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
    <textarea rows="40" cols="40" name="content"><?php readfile($fn); ?></textarea>
    <input type="submit" value="Save Changes"> 
</form>

Как вы можете видеть... это довольно простой скрипт... но широко открытый! Я понимаю, что... рассмотрю это как следующий шаг.

Вот моя проблема... этот код правильно отображает файл для редактирования и позволяет вам вносить изменения и отправлять... но он просто обновляет экран и снова показывает исходный не измененный файл.

Этот сценарий живет по адресу: http://www.mydomain.org/cmsfolder/folder/subfolder/edittext.php

Насколько я могу судить, нужно изменить только переменную $ fn, чтобы точно указать на редактируемый файл. Когда сценарий редактирования жил в той же папке, что и текстовый файл (вне CMS), все было хорошо. Когда это было в этой папке, переменная $ fn составляла $ fn = "FileToEdit.txt"; Я вполне уверен, что CMS не имеет прав, влияющих на это.

Что мне не хватает, просто заставляя его работать из перемещенной папки?

Теги:
forms
submit

1 ответ

0
Лучший ответ

Переменной $ fn должен быть путь к файлу в файловой системе, например:

$fn = "FileToEdit.txt";
$fn = "../FileToEdit.txt";
$fn = "data/FileToEdit.txt";
$fn = "/var/www/data/FileToEdit.txt";

и так далее...

  • 0
    Итак ... вы говорите, что это не должно быть в форме URL? Вот почему он работает, когда он находится в той же папке, на которую ссылаются только как $ fn = "FileToEdit.txt"; ?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню