webForumDet fria alternativet

Problem med Replace...

14 svar · 525 visningar · startad av Macce

MacceMedlem sedan apr. 2001398 inlägg
#1

I mitt forum så vill jag hindra att en användare
håller ner [enter] och får massor av radbrytningar
och sabbar designen...

Om jag kör koden nedan så vill jag att den även ska
förkorta resultatet av operationen. hoppas ni förstår vad jag menar.

Jag skulle helst vilja ha en funktion som tillåter max två radbrytningar i en följd, nån som har idéer på hur man kan lösa detta.

replace(strMess,VbCrlf&VbCrlf&VbCrlf,VbCrlf&VbCrlf)

Är det RegExp som gäller ?

mvh

OveRRidEMedlem sedan feb. 20018 509 inlägg
#2

Jag vet inte varför jag inte ser nödvändigheten i en sådan spärr. Enterslag är för mig en av de saker jag saknar på många ställen där man skriver i text i t.ex. formulär och liknande. Att begränsa detta känns mest som ett kontrollbegär. ;)

Sätt en rimlig gräns för hur många tecken fältet får innehålla istället.

MacceMedlem sedan apr. 2001398 inlägg
#3

ja, du kanske har rätt :)

Sätt en rimlig gräns för hur många tecken fältet får innehålla istället.

Har jag redan ;)

Engine^Medlem sedan dec. 20002 861 inlägg
#4

RegExp är säkert det smidigaste sättet att lösa det på.

Annars får du mha InStr() och InStrRev() söka efter förekomster av VbCrLf&VbCrLf&VbCrLf, kolla antal och strula... usch... kör med RegExp. ;)

MacceMedlem sedan apr. 2001398 inlägg
#5

Har inte satt mig in i "RegExp" kanske dags för det,
men OveRRidE har kanske rätt om mitt kontrollbegär... :)

OveRRidEMedlem sedan feb. 20018 509 inlägg
#6

Gör inte misstaget som alla andra gör bara, sitter och bygger in femhundrasjuttiotvå funktioner för smilies, enterslag, mellanslag, 'spamskydd' och diverse längdbegränsningar men totalt glömmer bort det viktigaste tecknet av dem alla; apostrofen. En sådan med fel databas och både du och din applikation är lika säkra som en vattendamm tillverkad av papier maché.

Talar av erfarenhet. :OO

MacceMedlem sedan apr. 2001398 inlägg
#7

Tack för omtanken, men apostrofen och pipe-tecknet är skyddat.:)

Jag tillåter faktiskt html, är det OK ?

Ingen säkerhetsrisk bara "Sabba"-risk...

OveRRidEMedlem sedan feb. 20018 509 inlägg
#8

iframe-taggen är ju lite halvskoj i det läget.

<iframe src="http://www.nissesporr.com"></iframe>
MacceMedlem sedan apr. 2001398 inlägg
#9

hmm, då kör vi:

replace(strMess,"iframe","")
replace(strMess,"src","")

Fler förslag ?

OveRRidEMedlem sedan feb. 20018 509 inlägg
#10

Svart eller vitt, brukar jag köra med. Alltså HTMLencode eller inte.

MacceMedlem sedan apr. 2001398 inlägg
#11

Oki, jag gör så här:

Först "HtmlEncode",längdbegränsning,tar bort pipe samt apostrof och sen sparar till databas.

vid presentation: replace(strMess,VbCrlf,"<br>") och smiley-kod

Det kanske är "lagom" kontrollbehov ;)

KermitMedlem sedan mars 200323 inlägg
#12

En stilla undran från en nybörjare...
Vad menas med "pipe" och "apostrof" ?

@ndersMedlem sedan juni 200026 914 inlägg
#13

Välkommen hit! :)

Pipe-tecknet : |
Apostrof: '

Apostrof används för att omsluta strängar i SQL, men varför man ska se till att kasta bort tecknet | har jag aldrig förstått. Någon med större visdom än vänstertecknad är mer än välkommen att upplysa. :)

Mvh

nikoMedlem sedan juni 20022 415 inlägg
#14

Pipe-tecknet används i Unix/Linux/PHP/Perl (och DOS) för redirecta outputen från ett program in i ett annat.

Elaka människor har ibland lyckats maila iväg innehållet i lösenordsfiler genom att skriva (ungefär):

;cat /etc/passwd | sendmail ..

i webformulär. I Windows och ASP är det inte lika aktuellt eftersom det inte finns några system, och exec-kommandon.

I VBScript är det kanske ungefär lika smart som att skriva:

Set Shell = Server.CreateObject("WScript.Shell") 
Shell.Run sMittKommando & request.form("whatever")

.. utan att kolla innehållet i request.form("whatever").

Det har alltså inte så mycket med SQL att göra ..

@ndersMedlem sedan juni 200026 914 inlägg
#15

Tack, mäster niko!

Mvh

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb