У меня есть простой небольшой скрипт, который позволит члену клуба, не являющемуся администратором, редактировать текст на веб-сайте. У меня он работает отлично, за пределами 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 не имеет прав, влияющих на это.
Что мне не хватает, просто заставляя его работать из перемещенной папки?
Переменной $ fn должен быть путь к файлу в файловой системе, например:
$fn = "FileToEdit.txt";
$fn = "../FileToEdit.txt";
$fn = "data/FileToEdit.txt";
$fn = "/var/www/data/FileToEdit.txt";
и так далее...