sok = request.form("text")
sok = replace(sok,"'","''')
sök på SQL Injections på detta forum så får du svar
40 svar · 1 401 visningar · startad av Lorelie
På min sida har jag en sökfunktion som inte kan söka med ' i namnet, hur gör man för att det ska gå att göra? (https://www.aramennoc.se - > databasen)
sok = request.form("text")
sok = replace(sok,"'","''')
sök på SQL Injections på detta forum så får du svar
Har tittat runt lite, men hittar bara att man ska byta ut och säkra och grejja, jag vill kunna söka med ', tex namnet Hagens O'Boy går inte att söka på, då blir det felmeddelanden.
Det gör du ju
exempel:
sok = "O'Boy"
function secureText(str)
secureText= replace(str,"'","''')
end function
SQL = "Select * From något where sokord = '" & secureText(sok) &"'".....
skapar en (eller använd en av SQL injection exempel för färdiga funktioner)
Då i SQL bryter du en sträng med ':
Om vi inte har SQLinjection skyddet:
SELECT * FROM något WHERE Sokord = 'O'boy'
3 st ' i en SQL är aldrig bra ' måste gå jämt ut ... medans Skyddet ger:
SELECT * FROM något WHERE Sokord = 'O''boy'
men SQL tolkar ' = som en "text '" dvs den bryter inte sök strängen... och därför får man inget fel meddelande.
Nu tar vi det från början, jag kan inte jättemycket om sånt här :OO
Function SafeSQL(strText)
SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "\\'")
End Function
....
SQL = "SELECT namn, " & _
"hast_id, " & _
"bild_url " & _
"FROM hast " & _
"WHERE kon = '"& Request.Form("kon")&"' " & _
"AND namn like '" & Request.Form("hast")&"%' " & _
"And namn like '" & secureText(hast)&"%' " & _
"AND namn <> 'e' " & _
"AND namn <> 'u' " & _
"AND namn <> ' ' " & _
"AND ras <> 'Övrig' " & _
"AND ras = 'Connemara' " & _
"ORDER BY namn "
Jag har gjort något fel, men vad :l
är din variabel hast något?
annars:
.. secureText(Request.Form("hast") ...
osv...
där alla dina Request.forms är ska secureText också vara :D
SQL = "SELECT namn, " & _
"hast_id, " & _
"bild_url " & _
"FROM hast " & _
"WHERE kon = '"& SafeSQL(Request.Form("kon")) &"' " & _
"AND namn like '" & SafeSQL(Request.Form("hast"))&"%' " & _
"AND namn <> 'e' " & _
"AND namn <> 'u' " & _
"AND namn <> ' ' " & _
"AND ras <> 'Övrig' " & _
"AND ras = 'Connemara' " & _
"ORDER BY namn "
have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'B%' AND namn <> 'e' AND namn <> '
/connemara_hittat.asp, line 38
Blir det när jag skriver det du skrev sist
secureText Request.Form("hast")
måste ha () i din funktion... men secureText finns ju inte ;) det är SafeSQL
varför är det % bakom ena Request.Formen men inte bakom den andra?
i SQL så med like är % kan träffas framför eller bakom en sträng(konstigt skrivit sorry)
men du har skrivit nu att din sträng måste börja med det som står i request.form("hast") men den kan även innehålla något annat:
vi har en häst som heter Voigtan
om du skriver in voi så träffar du voigtan.. om du skriver "ta" så kommer du inte hitta Voigtan...
Bättre förklarat:
http://www.sql-tutorial.net/SQL-LIKE.asp
Det stämmer ja. Och skriver man "%ta" så kommer man hitta Voigtan .
Det funkar inte, vad är fel?
Error Type:
ADODB.Recordset.1 (0x80004005)
SQLState: 4 Native Error Code: 1064 [TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'b%' AND namn <> 'e' AND namn
/connemara_hittat.asp, line 39Browser Type:
Har skrivit den koden du skickade
Skriv gärna ut SQL-frågan så kan det bli lättare att upptäcka fel:
response.write SQL
response.end
Peter S skrev:
Skriv gärna ut SQL-frågan så kan det bli lättare att upptäcka fel:
response.write SQL response.end
Nu hände ingenting... Eller jo, bakgrundsfärgen kom upp, men ingen text
Lägg koden precis under voigtann1:s kod från inlägg #8.
Peter S skrev:
Lägg koden precis under voigtann1:s kod från inlägg #8.
Då blev det
SELECT namn, hast_id, bild_url FROM hast WHERE kon = 'Valack' AND namn like 'Hagens O\\'Boy%' AND namn <> 'e' AND namn <> 'u' AND namn <> ' ' AND ras <> 'Övrig' AND ras <> 'Okänd' AND ras = 'Connemara' ORDER BY namn
Då sitter felet här någonstans?
Function SafeSQL(strText)
SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "\\'")
End Function
Function SafeSQL(strText)
SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "''")
End Function
prova det..
voigtann1 skrev:
Function SafeSQL(strText) SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "''") End Functionprova det..
:e Funkar kanon!
Tur att det finns folk som orkar förklara för oss som är lite okunniga (y)