Когда я создаю некоторый ввод в текстовое поле (например: test123) и отправляю страницу, он показывает только пустой ввод. После перезагрузки (обновления страницы) в форме появляется текст «test123». Это также происходит, когда я пытаюсь отредактировать ранее введенный текст, например: при редактировании ввода «test123» в «test12345» и нажатии на кнопку «Отправить» отобразится «test123», а после обновления страницы «test12345».
echo '<form action="" method="post">';
$content = file_get_contents($file);
echo '<textarea style="width: 99.3%; height: 700px; margin-left:-1px" name="cfgtekst">'.htmlspecialchars($content).'</textarea>';
echo '<center><input type="submit" class="btn btn-primary confirm_t btn btn-sucess" value="'.$usavechange.'" />';
echo '<a href="serverdetalji.php?sid='.$serverid.'" class="btn btn-primary confirm_t btn btn-warning">'.$uotkazi.'</a></center>';
echo '</form>';
if(isset($_POST))
{
$cfgtekst = $_POST['cfgtekst'];
$stream_options = array('ftp' => array('overwrite' => true));
$stream_context = stream_context_create($stream_options);
if ($fh = fopen($file, 'w', 0, $stream_context))
{
fputs($fh, $cfgtekst);
fclose($fh);
}
}
Новое значение отображается только после обновления, поскольку вы читаете старое значение из файла, распечатываете его и сохраняете новое значение. Обратный порядок:
if(isset($_POST))
{
$cfgtekst = $_POST['cfgtekst'];
$stream_options = array('ftp' => array('overwrite' => true));
$stream_context = stream_context_create($stream_options);
if ($fh = fopen($file, 'w', 0, $stream_context))
{
fputs($fh, $cfgtekst);
fclose($fh);
}
}
echo '<form action="" method="post">';
$content = file_get_contents($file);
echo '<textarea style="width: 99.3%; height: 700px; margin-left:-1px" name="cfgtekst">'.htmlspecialchars($content).'</textarea>';
echo '<center><input type="submit" class="btn btn-primary confirm_t btn btn-sucess" value="'.$usavechange.'" />';
echo '<a href="serverdetalji.php?sid='.$serverid.'" class="btn btn-primary confirm_t btn btn-warning">'.$uotkazi.'</a></center>';
echo '</form>';
Кстати, я бы посоветовал вам сэкономить немного времени и использовать базу данных; использование таких файлов в веб-приложениях очень подвержено ошибкам.
Также обратите внимание, что с этим кодом, если кто-то еще каким-то образом украдет другой пост в промежутке времени, когда он сохранит, а затем прочитает файл, вы получите их значение.
Других решений пока нет …