Visualizzazione risultati 1 fino 5 di 5

Discussione: [php] Problema verifica dato esistente in file tramite array

  1. #1
    Guest

    Predefinito [php] Problema verifica dato esistente in file tramite array

    Ciao a tutti, sto cercando di verificare tramite PHP se è presente un indirizzo email in un array dentro un file. Questo è il codice che sto usando:
    Codice PHP:
    $email = $_POST["email"];
    if(empty(
    $email)) { echo "errore emai vuota"; }
    else if(
    in_array($email,file("mails.txt"))) { echo "errore l'email esiste già!"; }
    else { echo
    "ok prosegui..."; }
    Invece la struttura del file è questa:
    In pratica se l'email è presente o meno lui la inserisce comunque... Come mai?
    Grazie mille. Saluti, Davide :)
    Ultima modifica di sIM : 26-02-2011 alle ore 00.04.55

  2. #2
    Guest

    Predefinito

    Prova a sostituire questa riga:
    Codice PHP:
    else if(in_array($email,file("mails.txt"))) { echo "errore l'email esiste già!"; }
    con:
    Codice PHP:
    else if(in_array($email,explode("\n", file_get_contents("mails.txt")))) { echo "errore l'email esiste già!"; }

  3. #3
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Come dice biccheddu dovrebbe funzionare. Il motivo è che file() restituisce le righe del file includendo il ritorno a capo. Il php confronta così "email" con "email\n" e non trova corrispondenze.

    Un'alternativa forse più solida è passare le righe del file attraverso trim():
    Codice PHP:
    $elenco = array_map('trim', file( ... ));

  4. #4
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Un'alternativa forse più solida è passare le righe del file attraverso trim():
    Codice PHP:
    $elenco = array_map('trim', file( ... ));
    Basta aggiungere il flag FILE_IGNORE_NEW_LINES
    Codice PHP:
    file('mails.txt', FILE_IGNORE_NEW_LINES);

  5. #5
    Data registrazione
    11-07-2009
    Residenza
    Roma
    Messaggi
    163

    Predefinito Evitare dati doppi in db file txt

    Ciao ragazzi chiedo scusa se sto sbagliando scrivendo qui la mia domanda ma ho lo stesso problema e non sono riuscita a risolvere con le risposte presenti^^

    Io ho la necessità di verificare se nel mio file txt sia già presente un url spazio,
    il mio codice "insert" è questo:

    Codice PHP:
    <?php
    $my_database_txt
    = 'db_banner_prova.txt';

    //ricavo l'ora e la data odierna
    $data_ora = date("d/m/Y H:i:s");
    $ip = $_SERVER['REMOTE_ADDR']; //ip

    if(isset($_POST['invia']))
    {
    if(!
    is_writable($my_database_txt)){
    exit(
    "il file non ha i permessi di scrittura!");
    }
    // riceviamo i dati e li filtriamo
    $bad_char = array("|", "\r\n", "\r", "\n");
    $urlspazio = str_replace($bad_char, "", $_POST['urlspazio']);
    $urlbanner = str_replace($bad_char, "", $_POST['urlbanner']);
    $SomeOtherVariable=$_REQUEST["SomeOtherVariable"];

    // apriamo il file
    $open = fopen($my_database_txt, "a+");

    // Ban ip
    $bannati=array("0000000");

    if(
    in_array($_SERVER['REMOTE_ADDR'],$bannati)) {
    echo
    header("location: add_banner.php?id=Errore");
    $ctrl = 1;
    }

    if(
    $urlspazio == "" || $urlspazio == " ") {
    echo
    header("location: add_banner.php?id=Errorespazio");
    $ctrl = 1;
    }

    if(
    $urlbanner == "" || $urlbanner == " ") {
    echo
    header("location: add_banner.php?id=Errorebanner");
    $ctrl = 1;
    }

    // Controllo parolacce interamente realizzato da Bradiposo

    $parolacce=array('viagra','sex','porco','link','prozac','download.php?file=','<script>','</script>');

    //controllo url
    for ($i=0; $i < count($parolacce); $i++) {
    $exp = explode($parolacce[$i], $urlspazio);
    if (
    $exp[0]!=$urlspazio) {
    $ctrl = 1;
    //pag errore
    echo header("location: add_banner.php?id=Errore_urlspazio");
    }
    }

    //controllo url
    for ($i=0; $i < count($parolacce); $i++) {
    $exp = explode($parolacce[$i], $urlbanner);
    if (
    $exp[0]!=$urlbanner) {
    $ctrl = 1;
    //pag errore
    echo header("location: add_banner.php?id=Errore_urlbanner");
    }
    }

    if(
    $ctrl == 0 ) {
    fwrite($open, $urlspazio."|".$urlbanner."|".$data_ora."|".$ip."\r\n");

    $antispam = $_POST['antispam'];
    if (
    $antispam != "cinque-sette-otto-uno") { die("errore antispam"); }

    // chiudiamo il file
    fclose($open);

    // ritorniamo nella pagina di visualizzazione
    echo header("location: add_banner_prova.php?id=post");
    exit;
    }

    }

    ?>
    Ho fatto un mare di prove ma non riesco proprio a capire come risolvere
    spero in un vostro aiuto grazie^^
    Ultima modifica di penelopesito : 09-05-2012 alle ore 21.15.40 Motivo: Maggiori info

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •