Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Tecknet " klipper mina strängar

Postades av 2005-11-10 10:07:49 - Mikael Alfredsson, i forum asp - allmänt, Tråden har 29 Kommentarer och lästs av 546 personer

Hejsan

Försöker att uppdatera ett fält i min databas. Men så fort teckent " finns med så klipps texten där.
Har testat med olika replace-varianter som """", """"", men utan resultat.

Någon som har tips på hur jag ska göra?


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-10 10:35:18 - Johan Djupmarker

Vad är det för databas? Hur uppdaterar du den? Testa att byta ut " mot "" eller \".

/johan


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-10 11:03:11 - Mikael Alfredsson

Det är en mySQL databas. Jag uppdaterar den med koden:
strSQL = "Update set... bla bla Where tabell_Id = " & Id

Har testat båda varianterna du tipsade om men ingen av dessa fungerar...


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-10 11:05:09 - Thomas Vanhaniemi

Testa skriv ut din SQL sträng och posta hit den, svårt att se vad som är fel annars...


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-10 11:12:12 - Mikael Alfredsson

Ok, råkade fippla till det lite med uppdateringen så nu matas inte datumet in rätt...
Någon aning om hur jag fixar det?

Koden ser ut så här:

strSQL = "UPDATE tblRules"
			strSQL = strSQL & " SET RuleName = '" & RemoveBadChars(strRuleName) & "', "
			strSQL = strSQL & " RuleText = '" & RemoveBadChars(strRuleText) & "', "
			strSQL = strSQL & " RuleLastEdit = " & Now()
			strSQL = strSQL & " WHERE RuleID = " & intRuleID
Set objRs = objConn.Execute(strSQL)



Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-10 11:21:23 - Thomas Vanhaniemi

Ok, datumet behöver du inte ta från ASP utan det finns redan klart i databashanteraren och kan hämtas med hjälp av Now().
Annars ser jag inga problem med koden utan den borde fungera, förutsatt att du i funktionen RemoveBadChars byter ut ' mot \', \ mot \\ och ´ mot \´
Tänk också på att ordningen är viktig, först byter du ut alla \ sedan resten.
<code>
strSQL = "UPDATE tblRules"
strSQL = strSQL & " SET RuleName = '" & RemoveBadChars(strRuleName) & "',"
strSQL = strSQL & " RuleText = '" & RemoveBadChars(strRuleText) & "',"
strSQL = strSQL & " RuleLastEdit = Now()"
strSQL = strSQL & " WHERE RuleID = " & intRuleID
Set objRs = objConn.Execute(strSQL)
</code>


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-10 11:44:54 - Mikael Alfredsson

Tack för tipset om now(), funkade.
Dock fungerar fortfarande inte funktionen.
Funderade på att göra något i stil med Replace(strText,chr(34),"[q]")
men även detta misslyckades...

EDIT:

Misstänker att det beror på datatypen i databasen.
På en annan sida som jag har kan jag mata in både ' och " utan några problem.
Det fältet har varChar det andra som strular är av typen text.


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-10 12:06:09 - Thomas Vanhaniemi

Jadu, svårt att säga något mer eftersom man inte kan ta en titt på databasen...
Men det borde fungera fint även om ett fält är varchar och ett är text...

Funktionen som ska göra en text valid ska se ut ungefär som följer.
<code>
Function GetValidString(strText)
strText = Replace(strText, "\","\\")
strText = Replace(strText, "'","\'")
strText = Replace(strText, "´","\´")
GetValidString = strText
End Function
</code>


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-10 12:51:07 - Mikael Alfredsson

Nu har jag testat alla möjliga varianter, men den klipper fortfarande texten.
Verkar inte bero på datatypen utan hur jag väljer att uppdatera texten.
Använder jag:
objRS("Field") = Text
objRS.Update
etc så fungerar det.

Använder jag:
Update set.... bla bla så går det ej.


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-10 13:34:52 - Thomas Vanhaniemi

En sak som kan orsaka fel är hur du försöker uppdatera databasen.
Är ett tag sedan jag använde gammal ASP och har aldrig gjort det med en mySQL databas, men det verkar som att du försöker köra med samma kod som du använder för att hämta datat med en SELECT sats, vilket är fel.
En UPDATE och INSERT returnerar ingen reader av något slag och du ska använda ett Command object för att utföra kommandon.
<code>
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = "Connectionstring här"
cmd.CommandText = "UPDATE eller INSERT här"
cmd.Execute
cmd.ActiveConnection.Close
</code>
Som sagt, är nu ett tag sedan jag använde mig av vanlig ASP men tror nog att du ska göra ungefär som ovan om du vill updatera med hjälp av en SQL sats.


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-10 13:54:59 - Mikael Alfredsson

Har bytt ut update koden med den du gav, men utan resultat, den klipper fortfarande vid "-tecken.
Blir galen på den här skiten.


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-10 13:54:59 - Mikael Alfredsson

Ooops, dubbelpost...


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-10 14:24:42 - Thomas Vanhaniemi

Hur skrivs det ut om du använder följande kod?
<code>
Function GetValidString(strText)
strText = Replace(strText, "\","\\")
strText = Replace(strText, "'","\'")
strText = Replace(strText, """","\""")
strText = Replace(strText, "´","\´")
GetValidString = strText
End Function

strSQL = "UPDATE tblRules"
strSQL = strSQL & " SET RuleName = '" & GetValidString(strRuleName) & "',"
strSQL = strSQL & " RuleText = '" & GetValidString(strRuleText) & "',"
strSQL = strSQL & " RuleLastEdit = Now()"
strSQL = strSQL & " WHERE RuleID = " & intRuleID

Response.Write strSQL
Response.End
</code>


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-10 14:47:52 - Mikael Alfredsson

Matar in följande i "RuleText" : test "test" 'test'

Response.Write:
UPDATE tblRules SET RuleName = 'Test Rule', RuleText = 'test ', RuleLastEdit = Now() WHERE RuleID = 13


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-10 14:52:49 - Thomas Vanhaniemi

Hur hanterar du strängarna?
Om du vill få en " i en sträng måste du skriva ut dubbla sådana ("")

Ex.
<code>
Dim strText

strText = "Test ""Test"" 'test'"
</code>


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-10 15:54:31 - Mikael Alfredsson

Har provat både Replace(sträng, """", """"") &
Replace(sträng, chr(32), chr(32) & chr(32)

Men inget biter...


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-10 16:20:45 - Thomas Vanhaniemi

Vad ger följande kod för resultat då?
<code>
Function GetValidString(strText)
strText = Replace(strText, "\","\\")
strText = Replace(strText, "'","\'")
strText = Replace(strText, "´","\´")
GetValidString = strText
End Function

strRuleName = "Test Rule"
strRuleText = "test ""test"" 'test'"
intRuleID = 13

strSQL = "UPDATE tblRules"
strSQL = strSQL & " SET RuleName = '" & GetValidString(strRuleName) & "',"
strSQL = strSQL & " RuleText = '" & GetValidString(strRuleText) & "',"
strSQL = strSQL & " RuleLastEdit = Now()"
strSQL = strSQL & " WHERE RuleID = " & intRuleID

Response.Write strSQL
Response.End
</code>


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-10 16:48:04 - Mikael Alfredsson

Resultat:
UPDATE tblRules SET RuleName = 'test rule', RuleText = 'test "test" \'test\'', RuleLastEdit = Now() WHERE RuleID = 14


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-10 16:52:43 - Thomas Vanhaniemi

Men är det inte rätt då?
Där är det ju ingenting som brutits...

Annars förstår jag inte problemet.


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-10 17:12:31 - Mikael Alfredsson

Tycker det hela är mycket märkligt...
Om någon kommer på en lösning på det hela är jag MYCKET tacksam.

// MA


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-10 17:56:14 - Thomas Vanhaniemi

Felet sitter nog där du sätter värdet på variablerna, eller ändrar på värdet...
Posta koden där du sätter värdet...


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-11 12:56:21 - Mikael Alfredsson

Ok, så här ser all kod ut:
----------------------------
"sidan.asp":
----------------------------

<%
RuleID = Request.Form("hidUpdRuleID")
RuleName = Request.Form("hidUpdRuleRuleName")
RuleText = Request.Form("hidUpdRuleText")

Dim UpdateRuleResult
UpdateRuleResult = UpdateRule(RuleID, RuleName, RuleText)
%>


----------------------------
Funktionen som uppdaterar (ska bytas till en sub)
----------------------------

<%
Function UpdateRule(intRuleID, strRuleName, strRuleText)

strSQL = "UPDATE tblRules"
strSQL = strSQL & " SET RuleName = '" & RemoveBadChars(strRuleName) & "',"
strSQL = strSQL & " RuleText = '" & RemoveBadChars(strRuleText) & "',"
strSQL = strSQL & " RuleLastEdit = Now()"
strSQL = strSQL & " WHERE RuleID = " & intRuleID

Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = objConn
cmd.CommandText = strSQL 
cmd.Execute
Set cmd = Nothing

End Function
%>


----------------------------
Funktionen som tar bort dumma tecken:
----------------------------

<%
Function RemoveBadChars(strTextToConvert)  

strTextToConvert = Replace(strTextToConvert, "\","\\")
strTextToConvert = Replace(strTextToConvert, "'","\'")
strTextToConvert = Replace(strTextToConvert, "´","\´")

RemoveBadChars = strTextToConvert
End Function
%>




Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-15 15:31:17 - Fredrik Svanberg

Detta skulle kunna vara ett problem med html. Hur ser formuläret ut som du matar in uppgifterna i?


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-15 17:24:15 - Andreas Hillqvist

Din parameter RuleID är inte skyddad från SQL inject. Du bör kontrollera att det är ett tal med IsNumeric eller konvertera det till ett tal med CLng(). För att hindra någon från att köra SQL kod på din server.


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-15 21:44:50 - Mikael Alfredsson

Anledningen till att jag använder dolda fält är för att detta är en "preview" sida.
Personen ser alltså bara texten och en spara samt en back knapp.

Går man tillbaka så kan man ändra något man tyckte var fult och när man väl väljer att spara så
är det dessa 3 dolda fält som skickas

<form action="o_rules_save.asp" method="post" name="frmUpdateAddRule">
<input name="hidUpdRuleID" type="hidden" value="<%= RuleID %>">
<input name="hidUpdRuleRuleName" type="hidden" value="<%= RuleName %>">
<input name="hidUpdRuleText" type="hidden" value="<%= RuleTextClean %>">
Samt en knapp som "submitar"
</form>


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-15 23:52:18 - Ola Lindfeldt

Problemet är nog att om texten innehåller
"
så blir resultatet i din html:
<input name="hidUpdRuleText" type="hidden" value="här kommer det ett" och detta hamnar utanför">

Du löser detta genom att ersätta " med &quote;
Replace(strinput, """", "&quot;")
eller med JS på klientsidan: .value = escape(str);

(de andra förslagen om att fixa SQL-strängar och se upp med SQL-inject gäller ändå!)


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-16 09:49:54 - Thomas Vanhaniemi

Som Ola säger, det är nog där ditt fel uppstår...
Men du kan skriva Server.HTMLEncode(RuleName) istället så ersätts alla "dåliga" tecken för HTML.

<form action="o_rules_save.asp" method="post" name="frmUpdateAddRule">
<input name="hidUpdRuleID" type="hidden" value="<%= Server.HTMLEncode(RuleID) %>">
<input name="hidUpdRuleRuleName" type="hidden" value="<%= Server.HTMLEncode(RuleName) %>">
<input name="hidUpdRuleText" type="hidden" value="<%= Server.HTMLEncode(RuleTextClean) %>">
Samt en knapp som "submitar"
</form>


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-16 10:47:39 - Mikael Alfredsson

Tack för tipsen, ska prova direkt efter jobbet.
Älskar er alla Pellesoftare.


Svara

Sv:Tecknet " klipper mina strängar

Postades av 2005-11-16 16:59:12 - Andreas Hillqvist

JAg tror du har rätt Thomas, du han före mig.
Vill tälläg att man altid bör formatera värden från databasen innan man skriver dem till svaret.

Om värdet ingår i en url bör urlEncode användas:

<FORM action="test.asp?id=<%=Server.URLEncode(rs("id"))%>">


Svara

Sv: Tecknet " klipper mina strängar

Postades av 2005-11-25 13:19:47 - Mikael Alfredsson

Problemet är nu löst.
Förlåt att jag inte svarat tidigare.

Det funkade med HTMLEncode, jag hade bara satt det på fel ställe.
Skulle vara på en föregående sida för att det skulle fungera.

Tack för all hjälp, jag är skyldiga er alla en stor tjänst.

// Mikael


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 602
27 953
271 705
614
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies