• User Attivo

    Filtro Sezione commenti

    Ciao, ho trovato su internet un filtro per la sezione commenti del mio sito solo che invece di filtrare le parole indecenti filtra tutto.Vi posto il codice ringranziandovi in anticipo per le risposte :ciauz:

    [PHP]$bannedWords = file('filtro.txt');

    function checkForBannedWords($stringToAnalyze)
    {
    global $bannedWords;
    $messagearray = preg_split('/\W/', $stringToAnalyze, -1, PREG_SPLIT_NO_EMPTY);
    for ($i=0; $i < count($messagearray); $i++)
    { $messagearray* = strtolower(trim($messagearray*)); }
    for ($i=0; $i < count($bannedWords); $i++)
    { $bannedWords* = strtolower(trim($bannedWords*)); }

        if (array_intersect($messagearray, $bannedWords));
        {
            
        echo "\t\t\t<p>Non puoi inserire queste parole</p>\n";
    
    
            die;    
    

    }
    }
    checkForBannedWords($commento);[/PHP]


  • User Attivo

    Ciao Angelbit88,
    lo script che hai postato sostanzialmente crea due array, uno con le parole da filtrare via (es.: parole volgari) e uno con il commento. Quindi con array_intersect calcola le intersezione tra i due array (cerca cioè in commento le parole volgari) e se le trova (clausola if) da il messaggio in echo.

    Per quello che serve a te devi per prima cosa fare un trova/sostituisci (ad esempio con preg_replace) e successivamente farti restituire il messaggio (echo messaggio;).

    ...filtra tutto...
    No, non filtra tutto, direi il contrario piuttosto. Considera che nel tuo script non hai specificato in nessun punto di farti restituire il messaggio. Se elimini die; e scrivi alla fine della clausola if (tra le due parantesi graffe, per intendersi):

    var_dump($messagearray);

    ottieni il messaggio diviso in array, senza alcun filtraggio. Spero di esserti stato utile.

    :ciauz:


  • User Attivo

    Ciao ceccus e grazie per l'aiuto, lo script in questione l'ho preso da uno script di un guestbook e all' inizio del file c'era dichiarata questa funzione, dici che va bene
    [PHP] function safeHTML($input) {
    global $configFromINI;
    $input = strip_tags($input);
    $input = htmlentities(stripslashes($input), ENT_QUOTES);
    $input = preg_replace("/(\015\012)|(\015)|(\012)/", " <br />", $input); // exchanges CR, LF and CRLF with <br />
    $input = ereg_replace($configFromINI['General']['delimiter'], "[[delimiter]]", $input);
    $input = ereg_replace("----", "[[apprkey]]", $input);
    return $input;[/PHP]
    Non l'avevo presa in considerazione perche mi sembrava necessaria solo per formattare il testo.
    Una domanda OT ma la variabile [PHP] $_SERVER['PHP_SELF'] [/PHP] restituisce tutto il percorso del file(www.ciao.it/test.php) o solo il nome(test.php).:?
    :ciauz:


  • User Attivo

    L'ultima funzione indicata serve per ripulire un po' il testo: toglie i tag html, trasforma i caratteri strani, trasforma i caratteri di nuova riga con l'accapo html (<br>) più un altro paio di operazioni che dipendono dalla variabile $configFromINI, che non so cosa contiene...

    $_SERVER['PHP_SELF'];

    restituisce /test.php se non vado errato.

    Comunque il consiglio che posso darti è provare, provare e ancora provare...
    :ciauz: