WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Blockera ord i formulär (https://www.wn.se/forum/showthread.php?t=35437)

Domine 2009-03-01 08:38

Hej!

Har en förmodligen en väldigt enkel fråga, är nybörjare på php... Hur blockerar man vissa ord, e-postadresser osv. i ett formulär? När jag skriver såhär
Kod:

if (is_form_submit('submit_form') && ($values['body'] != 'ordet att blockera'))
går det inte att skicka utifall body BARA innehåller detta ord.. Skriver man en mening innehållandes detta ord slinker mailet igenom. Hur gör jag en block för ett ord bland mängden?

För e-post:
Kod:

(is_form_submit('submit_form') && ($values['email'] != [email protected]))
Funkar bra för EN e-postadress men hur skriver man om jag vill ange flera e-postadresser? Har provat runt lite men får det ej att funka.

Som sagt detta är grundläggande php-frågor som jag vet är barnsligt enkla men tänkte det går snabbare att fråga än leta runt mera... :unsure:

Tack på förhand!

Erik Stenman 2009-03-01 09:18

Du kan använda str_pos

Domine 2009-03-01 09:29

Exempel?

vco-systems 2009-03-01 10:03

Citat:

Har en förmodligen en väldigt enkel fråga, är nybörjare på php... Hur blockerar man vissa ord, e-postadresser osv. i ett formulär? När jag skriver såhär CODE
if (is_form_submit('submit_form') && ($values['body'] != 'ordet att blockera'))
går det inte att skicka utifall body BARA innehåller detta ord.. Skriver man en mening innehållandes detta ord slinker mailet igenom. Hur gör jag en block för ett ord bland mängden?

str_pos fungerar om du vill hitta ALLA förekomster av ordet, även om det är en del av ett annat ord. Om de vill filtrera bort enbart hela ord kan du använda explode.

Kod:

$tmp=explode(" ",$values['body']);
$test=true;
foreach ($tmp as &$t) {
 $t=trim($t); //Ta bort mellanslag, radbrytningar etc. från början/slutet av ordet
 $t=trim($t,".,:;"); //Ta bort "." "," ":" ";" från ordet
 if ($t=='ord att blockera') $test=false;
}
if ($test) {.....


martine 2009-03-01 12:12

Använd preg_match('/(a|b|c|…)/ui',$söksträng), då hittar du ordet i strängen med såväl stora som småbokstäver, varsomhelst i strängen.

Exempelvis:
Kod:

if(preg_match('/(trams|skräp|bluff)/ui',$söksträng,$m)) {
 echo "Strängen innehåller förbjudet ord : ".$m[1];
} else {
 echo "Strängen är okej";
}

som hittar orden trams, skräp och bluff.

För problem två kan du använda:
$block = array('[email protected]','[email protected]');
och kontrollera med:
if(in_array(trim($indata), $block)) echo "Myglare!";

Domine 2009-03-01 14:58

Ok, tack för de snabba tipsen! Jag har provat lite men får det inte riktigt att fungera med detta
Kod:

if (preg_match('/(trams|skräp|bluff)/ui',$values,$m))
 {       
        $valid_postback = false;
        echo "test : ".$m[1];
 }

Ser det ok ut?

martine 2009-03-01 21:13

Citat:

Originally posted by Domine@Mar 1 2009, 15:58
Ok, tack för de snabba tipsen! Jag har provat lite men får det inte riktigt att fungera med detta
Kod:

if (preg_match('/(trams|skräp|bluff)/ui',$values,$m))
 *{       
 *        $valid_postback = false;
 *        echo "test : ".$m[1];
 *}
 *

Ser det ok ut?

$values ska vara en sträng, t.ex.:

$values = "Häri finns det något trams som du inte vill ha.";

I övrigt ser det väl okej ut.


Alla tider är GMT +2. Klockan är nu 18:50.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson