cript @PHP para remover endereços de email de uma lista separada por vírgula [fechada]
Eu administro um site pequeno e meus usuários solicitaram que eu configurasse uma lista de endereçamento. Encontrei um script gratuito simples que adiciona endereços de email a um arquivo de texto protegido,email.txt
, no formato CSV:
[email protected],[email protected],blah,blah,blah
O script funciona perfeitamente. No entanto, é um incômodo percorrer o arquivo para remover manualmente os endereços de email quando os usuários cancelam suas inscrições na lista. Preciso criar um script simples que remova endereços de emai
@All que eu quero é um script PHP simples que exibe uma caixa de texto para que os usuários possam inserir seus endereços de e-mail e clicar no botão "Cancelar boletim". O script deve pesquisar o arquivo de texto, encontrar o endereço de email fornecido e removê-lo e sua vírgula à direit
Por exemplo, diga o conteúdo deemail.txt
estamo
[email protected],[email protected],[email protected]
Se eu digitar "[email protected]" na caixa de texto exibida pelo script desejado, desejo que o arquivo fique assim:
[email protected],[email protected]
ATUALIZA: Tentei este código:
<?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();
}
?>
Este código nem mostra o formulári
UPDATE 2:
Outra tentativa de escrever este script:
<?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);
?>
Isso funciona na remoção do endereço de email, mas não há nenhum anúncio (eco). Gostaria que ele dissesse "que o email não está inscrito" ou "você foi removido", com base no fato de o script encontrar com êxito o$email
na lista e a exclu
UPDATE 3 31 de dezembro de 2011:
Eu tentei o código avançado e acabei de obter uma página em branco, então voltei para a minha versão. Aqui está o código que tenho agora:
<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>
Isso funciona perfeitamente. No entanto, ele exibe a mensagem "falha" quando a página é carregada, e não quando acionada para carregar, depois que o botão enviar é pressionad
Gostaria de manter o código original, se possível, apenas reorganizado para mostrar apenas "Sucesso!" ou "Falhe!" depois de executar o código.
Gostaria que as mensagens de eco fossem o último script executado na págin