PHP скрипт для удаления адресов электронной почты из списка через запятую [закрыто]

Я запустил небольшой сайт, и мои пользователи попросили меня создать список рассылки. Я нашел простой бесплатный скрипт, который добавляет адреса электронной почты в защищенный текстовый файл,email.txtв формате CSV:

[email protected],[email protected],blah,blah,blah

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

Все, что я хочу, - это простой PHP-скрипт, который отображает текстовое поле, чтобы пользователи могли вводить свои адреса электронной почты и нажимать кнопку «Отменить новостную рассылку». Сценарий должен найти текстовый файл, найти указанный адрес электронной почты, удалить его и запятую.

Например, скажем, содержаниеemail.txt находятся

[email protected],[email protected],[email protected]

Если я введу «[email protected]» в текстовое поле, отображаемое желаемым сценарием, я хочу, чтобы файл выглядел следующим образом:

[email protected],[email protected]

ОБНОВИТЬЯ попробовал этот код:

<?php
        function showForm() {
            echo '
            <form method="post" action="">
            Email Address: <input type="text" name="email"> <br />
            <input type="submit" value="Cancel Newsletter" name="submit">
            </form>
            ';
        }

        $_POST['email']

        $to_delete = 'email';
        $file = array_flip(explode(",",file_get_contents("email.txt")));
        unset($file[$to_delete]);
        file_put_contents("email.txt",implode(",",array_flip($file));

        if(!$file_put_contents) {
            die('Error occured');
        } else {
            echo 'Your subscription has been cancelled. You will not receive any further emails from us.';
        }
    }
} else {
    showForm();
}
?>

Этот код даже не показывает форму.

ОБНОВЛЕНИЕ 2:

Еще одна попытка написания этого скрипта:

<?php
    $email = $_POST["email"];
    $text = file_get_contents("email.txt");
    $oldWord = "$email";
    $newWord = "";
    $text = str_replace($oldWord , $newWord , $text);
    $fp = fopen('email.txt', 'w');
    fwrite($fp, $text);
    fclose($file);
?>

Это работает, поскольку удаление адреса электронной почты идет, но нет объявления (эхо). Я хотел бы сказать, что «это электронное письмо не подписано» или «вы были удалены», в зависимости от того, успешно ли скрипт находит$email в списке и удаляет его.

ОБНОВЛЕНИЕ 3 31 декабря 2011 г .:

Я попробовал расширенный код и просто получил пустую страницу, поэтому я вернулся к своей версии. Вот код, который я сейчас имею:

<html>
    <body>
        <form method="post" action="">
            <p>Email Address: <input type="text" name="email"></p>
            <input type="submit" value="Cancel Newsletter" name="submit">
        </form>

        <?php
            $email = $_POST["email"];
            $basetext = file_get_contents("email.txt");
            $oldWord = "$email";
            $newWord = "";
            $text = str_replace($oldWord , $newWord , $basetext);
            $str1 = $basetext;
            // echo strlen($str1);
            $str2 = $text;
            // echo strlen($str2);
            $fp = fopen('email.txt', 'w');
            fwrite($fp, $text);
            if ($str1 > $str2) { // This part handles the success/fail message
                echo ("Success!");
            } else {
                echo ("Fail!");
            }
            fclose($file);
        ?>
    </body>
</html>

Это работает отлично. Тем не менее, он отображает сообщение «сбой» при загрузке страницы, а не при запуске загрузки после нажатия кнопки отправки.

Я хотел бы сохранить исходный код, если это возможно, просто переставить так, чтобы он показывал только «Успех!» или "Fail!" как только он выполнил код.

Я хотел бы, чтобы эхо-сообщения были последним скриптом, выполненным на странице.

Ответы на вопрос(5)

Ваш ответ на вопрос