Avatar billede bombur Nybegynder
24. september 2005 - 13:58 Der er 15 kommentarer

HTMLEncode problem

Jeg koder i JScript

Jeg har et problem med mine forms når jeg skal opdatere noget i min database.
Når jeg opretter min tekst kalder jeg HTMLEncode på den.
tekst=Server.HtmlEncode(tekst)
Det gør jeg fordi jeg skal have lavet alle linieskiftene i teksten om til <br>. Det gør jeg sådan her:

function normaltext1(tekst) {
        tekst=Server.HtmlEncode(tekst)
   
        while(tekst.indexOf("\n",0)>-1) {
            tekst=tekst.replace("\n","<br />");
        }
        while(tekst.indexOf("'",0)>-1) {
            tekst=tekst.replace("'","");
        }
        return(tekst)
}

Når jeg så vil rette teksten og sende den tilbage til databasen får jeg så et nyt problem.
Når teksten bliver sat ind i et tekstfelt i FORM'en vælger den at skrive <br /> ud i teksten, samtidig med at den laver linieskiftet. Det kan se sådan ud:

tekst tekst tekst
<br /> mere tekst mere tekst

Det duer jo ikke. Men hvis jeg vil fjerne <br /> fra den viste tekst er jeg åbenbart nødt til at kalde HtmlEncode på den igen og så vil den jo lave eksempelvis æ, ø og å om.

Hvad jeg i virkeligheden nok spørger om er, hvordan styrer jeg de linieskift mine brugere skriver i formen???

Håber i kan hjælpe

/Rune
Avatar billede erikjacobsen Ekspert
24. september 2005 - 14:25 #1
Gem data i databasen præcis som de står. Ikke HTML-encode, ikke replace til <br>

Så kan du vælge om du skal have htmlencode og/eller replace til <br> når du skriver ud.
Avatar billede bombur Nybegynder
24. september 2005 - 14:27 #2
Tjaa, det var vel egentligt en mulighed. Jeg prøver det lige
Avatar billede bombur Nybegynder
24. september 2005 - 14:30 #3
Der er vist lige et problem med det. Hvis brugerne indtaster nogle tegn som SQL'en bruger vil der gå ged i det!
Avatar billede erikjacobsen Ekspert
24. september 2005 - 14:33 #4
Du skal naturligvis sikre dig mod sql-injection ved at erstatte eet ' med 2 '-ere
Det er det der menes med "Gem data i databasen præcis som de står"
Avatar billede bombur Nybegynder
24. september 2005 - 14:35 #5
Der er et problem mere. Databasen gemmer ikke linieskiftet hvis ikke man htmlEncoder teksten. Så der vil ikke være mulighed for senere at lave det der hvor de er blevet sat.

Jeg kan da ikke være den eneste der har det her problem :)
Avatar billede bombur Nybegynder
24. september 2005 - 14:36 #6
Hvordan skal jeg kunne erstatte ' med 2 af slagsen uden HtmlEncode?
Avatar billede bombur Nybegynder
24. september 2005 - 15:01 #7
Ingen der har en ide til mig. I kan også bare sige hvis det er et problem alle har, så jeg ved at det måske ikke kan lade sig gøre :D
Avatar billede erikjacobsen Ekspert
24. september 2005 - 18:44 #8
Du bruger 
  tekst=tekst.replace("'","''");
Og det er et problem andre har, men det kan sagtens lade sig gøre ;)
Avatar billede bombur Nybegynder
24. september 2005 - 19:07 #9
ok :)
Men jeg ved stadig ikke hvordan jeg skal gemme mine linieskift.
Avatar billede erikjacobsen Ekspert
24. september 2005 - 19:17 #10
Du skal ikke gøre noget ved dine linieskift når de skrives i databasen.
Avatar billede bombur Nybegynder
25. september 2005 - 11:36 #11
Jeg kan ikke få det til at virke, måske er det fordi funktionen ikke findes i JScript jeg får følgende fejl:

Microsoft JScript runtime error '800a01b6'

Object doesn't support this property or method

Jeg gør sådan her:

var tekst = Request.Form("tekst");
tekst = tekst.replace("'","''");
Avatar billede bombur Nybegynder
25. september 2005 - 11:50 #12
Ja, det er sådan set også det problem der har været hele tiden. Jeg kan ikke køre replace på en tekst der ikke har været igennem HtmlEncode først. medmindre der da er noget andet man kan gøre i stedet.
Avatar billede bombur Nybegynder
25. september 2005 - 11:57 #13
:) Fandt selv ud af det. Den vidste jo ikke det var en str så jeg skulle lige sige tekst = tekst + "" først
Avatar billede bombur Nybegynder
25. september 2005 - 11:57 #14
Så, må du gerne få dine point :D
Avatar billede erikjacobsen Ekspert
25. september 2005 - 15:27 #15
Jeg samler slet ikke på point, tak.
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