Avatar billede moore Nybegynder
15. februar 2006 - 11:35 Der 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.

Håber en kan hjælpe..
Avatar billede thesurfer Nybegynder
15. februar 2006 - 11:42 #1
Eksempel:

forbudteord = "sex,porn," ' husk at der skal sættes et komma efter ordret
fo = split(forbudteord, ",")

ord = rs("beskrivelse")
ord = split(ord, " ")

fundet = false
for i = 0 to ubound(fo)
  if fo(i) = ord & "," then
    fundet = true
  end if
next

if fundet = true then
' der blev fundet et forbudt ord i beskrivelsen
end if

Jeg mener at man kan indsætte "exit for" efter "fundet = true", så den hopper ud af FOR-løkken:

  if fo(i) = ord & "," then
    fundet = true
    exit for
  end if

/theSurfer
Avatar billede thesurfer Nybegynder
15. februar 2006 - 11:43 #2
..det er ikke testet.. har bare skrevet det ind direkte her på eksperten.dk .. :-)

/theSurfer
Avatar billede thesurfer Nybegynder
15. februar 2006 - 11:46 #3
Hmm.. ok.. det virker ikke.. Det skal lige rettes til..

/theSurfer
Avatar billede fennec Nybegynder
15. februar 2006 - 11:46 #4
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...
Avatar billede thesurfer Nybegynder
15. februar 2006 - 11:49 #5
Sådan:

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


/theSurfer
Avatar billede moore Nybegynder
15. februar 2006 - 11:49 #6
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.
Avatar billede thesurfer Nybegynder
15. februar 2006 - 11:50 #7
Linien der checker er denne:

  if instr(beskrivelse, fo(i) & " ") > 0 or instr(beskrivelse, fo(i) & ",") > 0 then

Den checker f.eks for "sex " og "sex,".. du kan selv tilføje flere..


Bliver lige nødt til at smutte.. smider lige et svar, hvis det kan bruges.

/theSurfer
Avatar billede fennec Nybegynder
15. februar 2006 - 11:58 #8
Dette burde også gøre det:

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
Avatar billede moore Nybegynder
15. februar 2006 - 12:04 #9
fennec.
har kigget lidt på det du har skrevet.
Men forstår ikke helt det RX1 osv...
Avatar billede moore Nybegynder
15. februar 2006 - 12:13 #10
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 & "')"

response.write strSQL

Conn.Execute(strSQL)

    conn.Close
    set conn = nothing
Avatar billede thesurfer Nybegynder
15. februar 2006 - 12:24 #11
Jeg er ikke særlig god til RegExp.. så hvis det er det du vil bruge, må fennec (eller andre) hjælpe dig..

/theSurfer
Avatar billede moore Nybegynder
15. februar 2006 - 12:28 #12
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."
Avatar billede fennec Nybegynder
15. februar 2006 - 12:29 #13
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
Avatar billede moore Nybegynder
15. februar 2006 - 12:37 #14
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
Avatar billede morhan Novice
15. februar 2006 - 12:41 #15
Du kan da lige få denne med også. Hvis man f.eks. skriver "far's dyt", så går din kode i stykker (pga apostroffen). Fix:

Person = Replace(request.form ("Person"), "'", "''")
Email = Replace(request.form ("Emai"), "'", "''")
Beskrivelse = Replace(request.form ("Beskrivelse"), "'", "''")
Avatar billede fennec Nybegynder
15. februar 2006 - 12:43 #16
.o) <-- One Eyed Jack
Avatar billede moore Nybegynder
15. februar 2006 - 12:44 #17
og tak til morhan også.. for det dejlige tip.. havde jeg ikke lige tænkt på :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester