15. februar 2006 - 11:35Der er
16 kommentarer og 1 løsning
"forbudte ord" i Access
Hej
Jeg har min gæstebog feltet. .. oRS("beskrivelse"). Når man indtaster i det fra mit input felt, vil jeg godt have checket om forskellige ord indgår. Bla. (sex, porn) osv osv.
Feltet bliver udskrevet med en
Response.write oRS("beskrivelse")
Har siddet og kigget experten igennem for at finde en løsning, men kan ikke lige se den.
Er det bare et tjek for de ord, skal de udskiftes, eller hvad skal der ske?? Ønskere du en mere avanceret metode end thesurfer's, er vi ovre i "regular expression", men det kommer igen an på hvad der skal ske...
forbudteord = "sex,porn," ' husk at der skal sættes et komma efter ordret fo = split(forbudteord, ",")
beskrivelse = "dette er sex og andet porn osv"
fundet = false for i = 0 to ubound(fo) if instr(beskrivelse, fo(i) & " ") > 0 or instr(beskrivelse, fo(i) & ",") > 0 then fundet = true exit for end if next
if fundet = true then ' der blev fundet et forbudt ord i beskrivelsen: response.write "fundet: " & fo(i) end if
Det som skal ske, hvis et ord er fundet er følgende. At der skal stå på siden, at du har skrevet ordet "og det "forbudte" ord som er skrevet" derfor er din besked ikke tilføjet.
Set Rx1 = New RegExp Rx1.Global = True Rx1.IgnoreCase = True Rx1.Pattern = "sex|porn|andet" if rx1.test("din tekst") then 'Indeholder forbudte ord else 'Er ok end if
Her er min update kode, hvor den indsætter i DB'en. Det er her, jeg gerne vil have lavet det sådan, at hvis ordet "sex" indgår i Beskrivelse så skal den skrive "indlægget ikke oprettet pga. ordet (og så det man har skrevet)")
Person = request.form ("Person") Email = request.form ("Emai") Beskrivelse = request.form ("Beskrivelse") IP = Request.ServerVariables("REMOTE_ADDR")
strSQL = "Insert into gastebog (Person, Email, Beskrivelse, IP) values ('" & Person & "', '" & Email & "', '" & Beskrivelse & "', '" & IP & "')"
thesurfer> Har også prøvet din kode, men den skriver hele tiden det samme i gæstebogen uanset hvad man skriver i "beskrivelse" feltet.
Nemlig "dette er sex og andet porn osv"
Det er jo feltet "beskrivelse" som den skal validere, om der står de ord som ikke skal være der. Står de i feltet, skal den skrive "At du har skrevet ordet "og det "forbudte" ord som er skrevet" derfor er din besked ikke tilføjet."
Det er regular expression, og er nok det mest kraftfulde værktøj der findes inden for programmeringssprog. Det hele ligger i Pattern attributten, som kan indeholde meget avanceret syntax. Det pattern jeg har lavet leder efter de ord som står der i. | er en OR betingelse, så finder den en af orderne returnere Test true. I stedet for Test, kan man bruge replace, også udskifter den alle orderne med noget andet.
Du kan udbygge med alle de ord du vil, sålænge du bruger | til at adskille dem med.
Person = request.form ("Person") Email = request.form ("Emai") Beskrivelse = request.form ("Beskrivelse") IP = Request.ServerVariables("REMOTE_ADDR")
Set Rx1 = New RegExp Rx1.Global = True Rx1.IgnoreCase = True Rx1.Pattern = "sex|porn" if rx1.test(Beskrivelse) then response.wriet "Forbudt" else strSQL = "Insert into gastebog (Person, Email, Beskrivelse, IP) values ('" & Person & "', '" & Email & "', '" & Beskrivelse & "', '" & IP & "')" response.write strSQL Conn.Execute(strSQL) end if
fennec.> det virker nu efter hensigten. Dog skriver den ikke ordet "forbudt", men det er også ok. Vil lave det sådan, at et nyt vinde popper op, hvor der står hvorfor ens inlæg ikke er blevet accepteret. Smid et svar
og tak til morhan også.. for det dejlige tip.. havde jeg ikke lige tænkt på :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.