Jeg har skrevet en gæstebog til min side, men er løbet ind i lidt af et problem.
Problemet består i at, hvis en "ondsindet" bruger indsætter en meget lang streng bestående af f.eks. 1-taller uden mellemrum eller linjeskift, så vil sidens design bliver ødelagt da tabel-elementet vil tilpasse sig indholdet.
Her er en lille test.. Erstat indholdet af "tekst" med en masse 1-taller hvis du vil.. Scriptet laver en ny linie efter 50 tegn. Den tager ikke hensyn til ord, og mellemrum. Det bør man tilføje. Du ændrer bare max.
<script type="text/JavaScript"> var tekst = "Problemet består i at, hvis en \"ondsindet\" bruger indsætter en meget lang streng bestående af f.eks. 1-taller uden mellemrum eller linjeskift, så vil sidens design bliver ødelagt da tabel-elementet vil tilpasse sig indholdet."
document.write("<br><br><nobr>" + tekst + "<br><br>"); // sådan der teksten ud
var max = 50; // max antal tegn per linie.
for (i = 0; i < tekst.length / max; i++) { document.write( tekst.substring(max * i, i * max + max) + "<br>"); } </script>
Du kan jo bare lave det i ASP, når du har adgang til det.. du kalder bare funktionen, lige meget hvor i dokumentet du er..
<% dim kommentar, max dim start, slut dim i
function FixTekst(kommentar) for i = 0 to len(kommentar) / max start = max * i response.write mid(kommentar, start + 1, max) & "<br>" next end function
max = 50 ' antal tegn per linie
' kommentar = rs("Kommentar") ' hentes fra databasen
' Da jeg ikke har databasen, laver jeg en test: kommentar = "Problemet består i at, hvis en ""ondsindet"" bruger indsætter en meget lang streng bestående af f.eks. 1-taller uden mellemrum eller linjeskift, så vil sidens design bliver ødelagt da tabel-elementet vil tilpasse sig indholdet."
response.write "<br><nobr>" & kommentar & "<br><br>" ' Så kan du se teksten
FixTekst(kommentar) ' funktionen FixTekst kaldes med indholdet af kommentaren %>
Jeg har tænkt lidt over det, ville det ikke være nemmere at teste strengen inden den bliver postet til database? jeg har forsøgt at lave et javascript, det virker dog ikke i sin nuværende form. var tekst = document.forms[0].Kommentar.value; //kontrollere kommentaren
for (i = 0; i < tekst.length; i++) { if ((tekst.substring(i)).length>50); { alert('teksten indeholder et udgyldigt ord!'); error= 1; }; }
<form> <textarea name="Kommentar" cols="80" rows="10"> Det er er noget tekst.. yeps.. det er det.. som så et langt ord på 53 tegn: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa53 </textarea> </form>
<script type="text/JavaScript"> var max = 50; // max længde per ord var tekst = document.forms[0].Kommentar.value; //kontrollere kommentaren var arrTekst; // arrayen som skal bruges var fejl; // fejl-kontrol var i; // tæller
arrTekst = tekst.split(" ") // del teksten ved mellemrum for (i = 0; i < arrTekst.length; i++) { // så længe at tælleren i, er mindre en længden på arrayen, forhøj i med 1 if (arrTekst[i].length > max) { fejl = 'ja'; } // hvis et det nuværende ord er længere end max, sæt fejl til "ja" document.write ('i: ' + i + ' - ' + arrTekst[i] + '<br>'); // skriv nummeret på ordet, og selve ordet. }
if (fejl == 'ja') alert('teksten indeholder et udgyldigt ord!'); // hvis fejl, hvis fejl er sat til "ja" </script>
Det ville nok være en god ide, at checke om ordet starter med http:// , https:// , telnet:// , ftp:// , www eller anden url-tegn.. Det kunne jo være et link, og links kan jo godt være 50 tegn lang.. :)
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.