Вставьте и удалите электронные письма из текстового файла, используя PHP - PullRequest
0 голосов
/ 21 июля 2010

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

мне нужно добавить эти электронные письма в текстовый файл с именем list.txt

мой вопрос состоит из двух частей

как я могу добавить user@example.com в текстовый файл?

и как позже я могу удалить определенное письмо из текстового файла?

спасибо за помощь

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

Вам лучше использовать базу данных, потому что эти операции могут наступать друг на друга .. но:

Добавить:

$fp = fopen("list.txt","a");   //a is for append
fputs($fp,"user@example.com" . "\n");
fclose($fp);

Удалить:

$file = file_get_contents("list.txt");
unlink("list.txt");  //delete existing file
$fp = fopen("list.txt","w");   //w is for write/new
$lines = split("\n",$file);
while (list(,$email) = each($lines)) {
    if ($email != "user@example.com") fputs($fp,$email . "\n");
}

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

1 голос
/ 21 июля 2010

Что касается сохранения, вы можете fopen() в режиме добавления и просто fwrite() к нему. Что касается удаления определенного электронного письма: вам придется загрузить весь файл в виде строки и сохранить его в файл (эффективно заменяя все содержимое). Без какого-либо сложного механизма блокировки при сохранении файла может возникнуть гонка, из-за которой вы потеряете / последние регистрации.

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

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