Cancellare una specifica email da un elenco in un file txt

  • Creatore Discussione Creatore Discussione Cosina
  • Data di inizio Data di inizio

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Buongiorno, approfitto ancora della vostra competenza. Considerato un elenco di indirizzi email in un file.txt messi in questo modo:

mail1@mail.com
mail2@mail.com
mail3@mail.com

Vorrei creare un modulo per cancellare solo un indirizzo specifico, tipo così:

HTML:
<form method="post" action="remove.php">
            <p>Email Address: <input type="text" name="email"></p>
            <input type="submit" value="Remove" name="remove">
        </form>

Ho trovato questo codice in rete, non so se puo servire (ovviamente così non funziona) e, comunque, non so configurarlo per adattarlo al mio caso. Potete suggerirmi il codice giusto, per piacere? Infinitamente grazie.

PHP:
<?php
    $email = $_POST["email"];
    $basetext = file_get_contents("file.txt");
    $oldWord = "$email";
    $newWord = ",";
    $text = str_replace($oldWord , $newWord , $basetext);
    $str1 = $basetext;
    // echo strlen($str1);
    $str2 = $text;
    // echo strlen($str2);
    $fp = fopen('file.txt', 'w');
    fwrite($fp, $text);
    fclose($file);

    if ($str1 > $str2) {
        echo ("You Have Successfully Unsubscribed From Our Newsletter....<br>You Will Not Receive Any More Emails From Us.");
    } else {
        echo ("The Email Address You Specified Is Not In Our Mailing List.");
    }
?>
 
Sono riuscita a trovare la soluzione da sola. Posto il codice nel caso servisse ad altri e per eventuali osservazioni e/o correzioni. Un saluto a tutti.

PHP:
if( $_POST != null ) {
   
    $email = $_POST['email'];

    $txt_file    = file_get_contents('file.txt');
    $rows        = explode("\n", $txt_file);

    unlink('file.txt');
    $new_file = fopen('file.txt', 'a+');
    foreach($rows as $row)
    {
        $data = explode(';', $row);
       
        if( $data[0] == $email ) {

        } else {
            fwrite( $new_file, $row . "\n" );
        }

    }
    fclose( $new_file );
   
    echo '<script type="text/javascript">alert("Succesfully unsubscription");window.history.go(-1);</script>';

}
 
Sono riuscita a trovare la soluzione da sola. Posto il codice nel caso servisse ad altri e per eventuali osservazioni e/o correzioni. Un saluto a tutti.
Brava ma pensa anche a questa soluzione:

PHP:
$emails=file('IL_FILE_EMAIL');
$find=array_search('email_da_cercare@email.com',$emails);
if($find!==false)unset($emails[$find]);
file_put_content('IL_FILE_EMAIL',join("\r",$emails));

1- Ossia carichi tutte le email
2- Cerchi l'email che devi cancellare
3- elimini la chiave contenente l'email da cancellare
4- sovrascrivi il file

Come vedi potresti riuscire ad ottenere lo stesso risultato senza eseguire un loop!
 
Brava ma pensa anche a questa soluzione:

PHP:
$emails=file('IL_FILE_EMAIL');
$find=array_search('email_da_cercare@email.com',$emails);
if($find!==false)unset($emails[$find]);
file_put_content('IL_FILE_EMAIL',join("\r",$emails));

1- Ossia carichi tutte le email
2- Cerchi l'email che devi cancellare
3- elimini la chiave contenente l'email da cancellare
4- sovrascrivi il file

Come vedi potresti riuscire ad ottenere lo stesso risultato senza eseguire un loop!

Grazie mille, lo farò :)
 

Discussioni simili