Parole proibite..

Vorrei apportare una modifica a questo codice in modo che trovi la parola proibita anche se è in un'insieme

//parole proibite (vedi config.php)

$stringa1 = $_POST['messaggio'].' '.$nome.' '.$email.' '.$url.' '.$citta;

$stringa1 = explode(" ",strtolower($stringa1));

foreach($stringa1 as $parola){

if (in_array($parola,$parole_proibite))

echo "La parola $parola non è ammessa;

}

inviato 10 anni fa
php
php
6
X 0 X

cosa intendi per "un insieme"? All'interno di una parola più lunga?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
cosa intendi per "un insieme"? All'interno di una parola più lunga?

Si anche, oppure se c'è una virgola, un punto, ecc. Ora la blocca solo se è isolata da spazi

risposto 10 anni fa
php
php
6
X 0 X

Prova così:

$stringa1 = $_POST['messaggio'].' '.$nome.' '.$email.' '.$url.' '.$citta;

foreach($parole_proibite as $parola)

{

   if(stripos($stringa1, $parola) !== false)

   {

      echo "La parola $parola non è ammessa";

   }

}

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Prova così:

$stringa1 = $_POST['messaggio'].' '.$nome.' '.$email.' '.$url.' '.$citta;

foreach($parole_proibite as $parola)

{

   if(stripos($stringa1, $parola) !== false)

   {

      echo "La parola $parola non è ammessa";

   }

}

 :bye:

Si funziona O0, ho notato che se inserisco es. 2 o più parole proibite escono 2 o più alert per ogni parla, ma gli alert appaiono a video uno sotto l'altra ma molto distanziati, si potrebbe farli apparire uno sotto l'altro?

risposto 10 anni fa
php
php
6
X 0 X

Non dipende dal codice che ti ho riportato. Figurati che quel codice li fa apparire uno accanto a l'altro, senza "a capo"

 :dunno:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Non dipende dal codice che ti ho riportato. Figurati che quel codice li fa apparire uno accanto a l'altro, senza "a capo"

 :dunno:

Ok, ho apportato una piccola modifica, ho aggiunto la parte in rosso, ma così se viene scritta in maiuscolo non la riconosce...qual'è la parola che non fa distinzioni maiusc/minuscolo?

//parole proibite (vedi config.php)

$stringa1 = $_POST['messaggio'].' '.$nome.' '.$email.' '.$url.' '.$citta;

$stringa1 = strtolower ($stringa1);

foreach($parole_proibite as $parola){

if(strpos($stringa1, $parola) !== false){

$errore .= "<br><br><br><br><br><br><br><br><tr><td valign=\"center\"><center><font family=\"Arial\" size=\"5\">La parola \"<font color=\"red\">$parola</font>\" non è ammessa</font></center><br />";

}

 }

risposto 10 anni fa
php
php
6
X 0 X

La "parola" è stripos (al posto di strpos). Era già presente nel mio codice.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

La "parola" è stripos (al posto di strpos). Era già presente nel mio codice.

 :bye:

Con stripos mi da questo errore

Fatal error: Call to undefined function: stripos() in /membri2/xxx/guestbook/ins.php on line 53

risposto 10 anni fa
php
php
6
X 0 X

La "parola" è stripos (al posto di strpos). Era già presente nel mio codice.

 :bye:

Con stripos mi da questo errore

Fatal error: Call to undefined function: stripos() in /membri2/xxx/guestbook/ins.php on line 53

...ma ho visto che stripos è per php5, allora ho cambiato con stristr e funziona

risposto 10 anni fa
php
php
6
X 0 X

Se non puoi usare stripos allora usa strpos e, supponendo che hai la lista delle parole proibite in minuscolo, prima del controllo devi mettere:

$stringa1 = strtolower ($stringa1);

(come in realtà hai già fatto)

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Se non puoi usare stripos allora usa strpos e, supponendo che hai la lista delle parole proibite in minuscolo, prima del controllo devi mettere:

$stringa1 = strtolower ($stringa1);

(come in realtà hai già fatto)

Si, le parole proibite le ho  messe in minuscolo ma il problema era quando l'utente la scriveva in maiuscolo e non veniva bloccata.

Ora avendo messo  if(stristr($stringa1, $parola) !== false) la parola viene riconosciuta sempre.

 

risposto 10 anni fa
php
php
6
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda