Новый текст не записан в существующий файл - PullRequest
0 голосов
/ 05 марта 2019

Я хочу сохранить каждую HTML-командную строку в файл.У меня небольшое количество пользователей, от нумерации до нескольких сотен, поэтому я планирую создать копию get-параметров в файле с именем 1.php, 2.php, 3.php и т. Д.

function Message($T) {
  print "$T<br/>";
}

function CheckAndDelete($filename, $Delete)
{
  $res = file_exists($filename);
  if ($res) {
    Message("File \"" . $filename . "\" exist");
    if ($Delete) {
      Message("Deletes file \"" . $filename . "\"");
      unlink($filename) or die("Cannot delete file");
    }
  }
  else
    Message("File \"" . $filename . "\" does not exist");
} // CheckAndDelete()

function Check($Prompt, $fname, $fullfname, $Delete)
{
  Message($Prompt);
  CheckAndDelete($fname, $Delete);
  CheckAndDelete($fullfname, $Delete);
} // Check()

$T = strftime("%T");
$Root = $_SERVER['DOCUMENT_ROOT'] . "/";
Message("Root: " . $Root);
$Owner  = $_GET[P3];

$fname = $Owner . '.php';
$fullfname = $Root . $fname;

Check("I---------------", $fname, $fullfname, TRUE);
Check("II--------------", $fname, $fullfname, TRUE);

$fil = fopen($fname, "w");
fwrite($fil, $Owner);
$S = $T . " " . $Owner;
fwrite($fil, $S);
fclose($fil);
Message($S . " Written!!");

Check("III-------------", $fname, $fullfname, FALSE);

Это работает, если файл не существует, файл создается и содержит то, что я хочу, чтобы они содержали.Но если файл существует, программа ведет себя так, как будто все работает нормально, но содержимое файлов не меняется.Я прочитал что-то о полных именах файлов и т. Д. В Интернете и попытался проверить это, как показано здесь:

enter image description here

1 Ответ

0 голосов
/ 05 марта 2019

Вы открываете файл в режиме w:

$fil = fopen($fname, "w");

Документы PHP для fopen() для этого режима указывают (выделено мое):

'w' Открыть только для записи; поместите указатель файла в начало файла и обрежьте файл до нулевой длины .Если файл не существует, попытайтесь его создать.

Вы перезаписываете файл, а не добавляете его.Вместо этого используйте подходящий режим для добавления;Например: fopen($fname, 'a');

В документах fopen() есть полный список режимов.

В качестве альтернативы, вы можете использовать функцию более высокого уровня file_put_contents() сфлаг FILE_APPEND;Например:

$fil = file_put_contents($fname, $S, FILE_APPEND);

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...