Avatar billede gevon Nybegynder
21. oktober 2002 - 19:25 Der er 9 kommentarer

Tagwall (asp) u. (html)

Jeg ahr lavet en tagwall, hvor fejlen er at man kan skrive html i den.

hvordan for jeg det væk ?
Avatar billede eagleeye Praktikant
21. oktober 2002 - 19:29 #1
hvis du vil disable html tags så kan du skrive server.HTMLencode:

text = Server.HTMLEncode(str)

HTML koden forsvinder ikke men den virker heller ikke den vil fremstræde som tekst eks <b>
Avatar billede hells Nybegynder
21. oktober 2002 - 19:29 #2
Når du indsætter tekst i databasen udskifter du større-end og mindre-end tegn:
tekst = Replace(Request.Form("tekst"), "<", "&lt;")
tekst = Replace(Request.Form("tekst"), ">", "&gt;")
så indsætter du tekst i databasen, og så bliver tegnene vist på skærmen i stedet.
Avatar billede eagleeye Praktikant
21. oktober 2002 - 19:30 #3
Alternativt kan man skrive en function som kan fjerne HTML tekst...

En som denne hvor man med TAGLIST kan angive hvilke tags der skal fjernes.


Function RemoveHTML( strInputText )

  TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT;" &_
    "BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE;" &_
    "COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET;" &_
    "FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG;" &_
    "INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE;" &_
    "MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT;" &_
    "PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP;" &_
    "TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP;" 

  Const BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE;"
   
  Dim nPos1, nPos2, nPos3
  Dim strResult, strTagName, bRemove, bSearchForBlock
 
  Dim runNo, AttackLimit, strRef
 
  runNo = 1
  AttackLimit = 5
 
  strResult = strInputText
  do
    runNo = runNo + 1
    strRef = strResult
    strText = strRef
    strResult = ""
   
    nPos1 = InStr(strText, "<")
    Do While nPos1 > 0
      nPos2 = InStr(nPos1 + 1, strText, ">")
      If nPos2 > 0 Then
        strTagName = Mid(strText, nPos1 + 1, nPos2 - nPos1 - 1)
        strTagName = Replace(Replace(strTagName, vbCr, " "), vbLf, " ")
        nPos3 = InStr(strTagName, " ")
        If nPos3 > 0 Then
          strTagName = Left(strTagName, nPos3 - 1)
        End If
        If Left(strTagName, 1) = "/" Then
          strTagName = Mid(strTagName, 2)
          bSearchForBlock = False
        Else
          bSearchForBlock = True
        End If   
        If InStr(1, TAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
          bRemove = True
          If bSearchForBlock Then
            If InStr(1, BLOCKTAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
              nPos2 = Len(strText)
              nPos3 = InStr(nPos1 + 1, strText, " 0 Then
                nPos3 = InStr(nPos3 + 1, strText, ">")
              End If
              If nPos3 > 0 Then
                nPos2 = nPos3
              End If
            End If
          End If
        Else
          bRemove = False
        End If
        If bRemove Then
          strResult = strResult & Left(strText, nPos1 - 1)
          strText = Mid(strText, nPos2 + 1)
        Else
          strResult = strResult & Left(strText, nPos1)
          strText = Mid(strText, nPos1 + 1)
        End If
      Else
        strResult = strResult & strText
        strText = ""
      End If
      nPos1 = InStr(strText, "<")
    Loop
    strResult = strResult & strText
 
  loop until (strRef = strResult) OR (runNo = AttackLimit)
 
  if (runNo >= AttackLimit) then
    strResult = "...text removed..."
  end if
  RemoveHTML = strResult
End Function
Avatar billede gevon Nybegynder
21. oktober 2002 - 19:31 #4
Prøver lige !
Avatar billede hells Nybegynder
21. oktober 2002 - 19:31 #5
hov anden linie af min kode skal i stedet være:
tekst = Replace(tekst, ">", "&gt;")
Avatar billede gevon Nybegynder
21. oktober 2002 - 19:35 #6
hvor skal selve denne kode ^den som hells skriver^puttes ind ?
Avatar billede gevon Nybegynder
21. oktober 2002 - 19:37 #7
text = Server.HTMLEncode(str) ?? hvor sættes den ind ?



Her #

<%
'Fixar datumet
Session.LCID=2055
' Databas koppling
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("text.mdb")&";"



    Set RecSet = Server.CreateObject("ADODB.Recordset")
   
    Addera = "SELECT * FROM skriv ORDER BY id DESC"
   
    RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
   
%>
Avatar billede eagleeye Praktikant
21. oktober 2002 - 19:38 #8
Der hvor du normalt vil udskrive

Response.write recset("kolonnenavn")

skriver du:

Response.write Server.HTMLEncode(recset("kolonnenavn"))
Avatar billede hells Nybegynder
21. oktober 2002 - 19:38 #9
på den side, hvor du sætter indlæg ind i databasen f. eks.:
tekst = Request.Form("tekst")
tekst = Replace(tekst, "<", "&gt;")
tekst = Replace(tekst, "<", "&gt;")
strSQL = "Insert into tabelnavn (tekst) values ('" & tekst & "')"
Conn.Execute(strSQL)
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