webForumDet fria alternativet

ÅÄÖ försvinner vil filtrering av HTML

ASP

6 svar · 1 527 visningar · startad av peppar

Medlem sedan dec. 2001873 inlägg
Frågan#1

Jag filtrerar kommentarsposter från all HTML med denna funktion, men det erkar som den tar bort åäö ur strängen... varför, eller rättare sagt hur kommer jag runt det problemet?

function ClearHTMLTags(strHTML, intWorkFlow)
	
		dim regEx, strTagLess

		strTagless = strHTML
		set regEx = New RegExp 
		'Creates a regexp object		
		regEx.IgnoreCase = True
		regEx.Global = True

		if intWorkFlow <> 1 then
			regEx.Pattern = "<[^>]*>"
			strTagLess = regEx.Replace(strTagLess, "")
		end if

		if intWorkFlow > 0 and intWorkFlow < 3 then
			regEx.Pattern = "[<]"
			strTagLess = regEx.Replace(strTagLess, "&lt;")
			regEx.Pattern = "[>]"
			strTagLess = regEx.Replace(strTagLess, "&gt;")
		end if

		set regEx = nothing
		ClearHTMLTags = strTagLess

end function
Medlem sedan dec. 2001873 inlägg
#2

Nope, verkar inte alls ha med det att göra... :r

Medlem sedan juni 200032 967 inlägg
#3

Vad är alltså problemet då? Tappar du åäö även när du inte kör funktionen? Var kommer informationen ifrån?

Medlem sedan dec. 2001873 inlägg
#4

Ja, jag tappar åäö även när jag inte kör funktionen. Jag postar ett kommentarsformulär genom jquery/ajax.

Jag har kört med GET för att posta formuläret för att med POST så tappar jag alla mellanslag radbrytningar osv, osv (det har jag inte heller någon aning om varför) men med POST så fungerar ÅÄÖ.
Men med GET så har jag alla radbrytningar kvar och även mellanslag osv... men då försvinner ÅÄÖ

Klistrar in lite kod (blir en smula utanför ASP också)

$(function() {
		$(".submit").click(function() 
		{
			var usr_name = $("#usr_name").val();
			var comment = $("#comment").val();
			var art_parent = $("#art_parent").val();
			var dataString = 'usr_name=' + usr_name + '&art_parent=' + art_parent + '&comment=' + comment;
			if(usr_name=='' ||  comment=='')
				{
				alert('Please Give Valid Details');
				}
		
			else
				{
				$("#flash").show();
				$("#flash").fadeIn(400).html('<img src="/images/ajax-loader.gif" />Loading Comment...');
				$.ajax({
				type: "GET",
				url: "http://***/default_insert_comment.asp",
				data: dataString,
				cache: false,
				success: function(html){
				$("ol#update").append(html);
				$("ol#update li:last").fadeIn("slow");
				$("#flash").hide();
				}
			});
		}return false;
	});

Och sidan som tar emot:

<% 
	sql = "select * from tbl_users where usr_login = '"&ClearHTMLTags(safeSql(request.querystring("usr_name")),0)&"' "
	set rsusers = ConnDb1.execute(sql)
	if not rsusers.eof then
		parentId		= safeSql(request.querystring("art_parent"))
		usrId			= rsusers("usr_id")
		usrLogin		= safeSql(request.querystring("usr_name"))
		usrComment		= ClearHTMLTags(safeSql(request.querystring("comment")),0)
		dteNow 			= now()
	sql	=	"insert into tbl_comments "&_
			"(com_parent,com_date,com_usrid,com_usrlogin,com_comment) "&_
			"values ("&_
			" " & parentid & " , "&_
			" #" & dteNow & "#, " &_
			" " & usrId & ", " &_
			" '" & usrLogin & "', " &_
			" '" & usrComment & "')"
			connDb1.execute(sql)
		response.write "<div class=""box""><img src="""& application("siteroot")&"/img/ico/user_comment.png"" border=""0"" class=""avatar""/>"&vbCrlf
		response.write "  		<div class=""text""><span>"& usrLogin &"</span><br/>"&vbCrlf
		response.write ""& usrComment &""&vbCrlf
        response.write "<div class=""date"">"& dteNow &"</div>"&vbCrlf
    	response.write "</div>"

	else
		response.write "Sorry! Something went wrong!"
	end if 
	rsusers.Close : Set rsusers = Nothing %>
Medlem sedan aug. 20039 340 inlägg
#5

Hur gör du när du postar datat? Bara byter ut GET mot POST?
Prova denna metod istället: http://docs.jquery.com/Ajax/jQuery.post

Dessutom, när du ska använda GET, kör encodeURIComponent på på alla argumenten innan du fogar samman strängen. (Dock kan jag svära på att jQuery har en funktion som gör det helt automatiskt åt dig.)

Dessutom, på serversidan är det nog mer "rätt" att köra ClearHTMLTags först och sedan safeSql.

safeSql(ClearHTMLTags(request.querystring("usr_name"),0))
Medlem sedan dec. 2001873 inlägg
#6

nitro2k01 skrev:

Hur gör du när du postar datat? Bara byter ut GET mot POST?

Ja! Så har jag provat...

nitro2k01 skrev:

Prova denna metod istället: http://docs.jquery.com/Ajax/jQuery.post

Dessutom, på serversidan är det nog mer "rätt" att köra ClearHTMLTags först och sedan safeSql.

safeSql(ClearHTMLTags(request.querystring("usr_name"),0))

Jag skall prova med json. Och naturligtvis, safesql före clearhtml.

Medlem sedan dec. 2001873 inlägg
#7

Men? Att sätta en datatype verkar fungera

$.ajax({
type: "POST",
[I][B]dataType: "application/x-www-form-urlencoded",[/B][/I]
url: "http://***/default_insert_comment.asp",
data: dataString,
cache: false,

Nope, det var något chachat som spökade. Aja, jag är lite i i fel forum så jag lägger ner denna tråden nu.

294 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
147 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
161 ms — ändringar (db)