Ok, jag har fått ordning på själva anskrivningen i databsen av ny användare nu iaf.
Blev visst ganska mkt text+kod här så det är möjligt att det blir en redigering senare... håll till godo så länge.
Jag antar att det hade att göra med följande:
stm = "SELECT * FROM users WHERE username = '"& fixa(username) &"' OR email = '"& fixa(email) &"' "
där username tilldelas ytterligare en ' vilket i slutändan leder till att username blir Peter''''s istället för Peter's när det skrivs in, eftersom jag längre ner körde:
stm = "INSERT INTO users (username,nick,password,email,age,city,country,uppkoppling,lagid,registrering) "
stm = stm & " VALUES ('"&fixa(username)&"','"&nick&"','"&pwd&"','"&email&"','"&age&"','"&city&"','"&usercountry&"','"&uppkoppling&"',100,'#"&now&"#') "
connection.execute(stm)
Själva Jmail problemet löste jag genom att köra request.form("värde") på allt som skulle med i mailet och får ju på så sätt exakt den data som användaren har knapat in i formuläret.
Hela sidan efter att ha fixat problemet:
<%
function fixa(fix)
fix = Replace(fix,"'", "''")
fix = Replace(fix,"|","")
fixa = fix
end function
username = fixa(Request.Form("username"))
nick = fixa(Request.Form("nick"))
email = fixa(Request.Form("email"))
city = fixa(Request.Form("city"))
age = fixa(Request.Form("age"))
usercountry = fixa(Request.Form("usercountry"))
uppkoppling = fixa(Request.Form("userconnection"))
admin = 0
approved = 0
if username ="" then
MYMESSAGE = Server.URLEncode("An error has accured!<p>You must enter a <b>username</b>!<br>Please wait...")
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=javascript:history.back(1)")
End if
if nick ="" then
MYMESSAGE = Server.URLEncode("An error has accured!<p>You must enter a <b>nick</b>!<br>Please wait...")
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=javascript:history.back(1)")
End if
if email ="" then
MYMESSAGE = Server.URLEncode("An error has accured!<p>You must enter an <b>e-mail address</b>!<br>Please wait...")
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=javascript:history.back(1)")
End if
if city ="" then
MYMESSAGE = Server.URLEncode("An error has accured!<p>You must enter a <b>city</b>!<br>Please wait...")
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=javascript:history.back(1)")
End if
if NOT isnumeric(age) then
MYMESSAGE = Server.URLEncode("An error has accured!<p>Only digits are allowed in the <b>age</b> field!<br>Please wait...")
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=javascript:history.back(1)")
End if
if age ="" then
MYMESSAGE = Server.URLEncode("An error has accured!<p>You must enter your <b>age</b>!<br>Please wait...")
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=javascript:history.back(1)")
else
admember
end if
sub admember
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "databasen"
set rs = Server.CreateObject("ADODB.Recordset")
stm = "SELECT * FROM users WHERE username = '"& username &"' OR email = '"& email &"' "
Set rs = connection.execute(STM)
if rs.eof then
'##Randomize lösenord
randomize
pwdlen=8 'Hur långt ska lösenordet vara?
pwd=""
pwdchr="abcdefghjkmpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ123456789" 'Vilka tecken ska genereras
chrlen=len(pwdchr)
for n=1 to pwdlen
x=Int((chrlen - 1 + 1) * Rnd + 1)
pwd=pwd & mid(pwdchr,x,1)
next
stm = "SELECT * FROM users WHERE 1 = 2 "
stm = "INSERT INTO users (username,nick,password,email,age,city,country,uppkoppling,lagid,registrering) "
stm = stm & " VALUES ('"&username&"','"&nick&"','"&pwd&"','"&email&"','"&age&"','"&city&"','"&usercountry&"','"&uppkoppling&"',100,'#"&now&"#') "
connection.execute(stm)
'##Jmail
set msg = Server.CreateOBject( "JMail.Message" )
msg.Logging = true
msg.silent = true
msg.From = "noreply@mittdomän.com"
msg.FromName = "mittdomän.com"
msg.AddRecipient request.form("email"), request.form("nick")
msg.Subject = "Welcome to Mittdomän.com"
msg.Body = "Here is the information that you have registered with us:" & vbCrLf & "Username: "& request.form("username")
if not msg.Send("mail.webhotell.se" ) then
Response.write "<pre>" & msg.log & "</pre>"
else
MYMESSAGE = Server.URLEncode("Welcome to Mittdomän.com<br>Please wait...")
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=default.asp")
end if
else
MYMESSAGE = Server.URLEncode("Username is already taken.<br><br>Please wait...")
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=javascript:history.back(1)")
end if
end sub
%>
Nu är det bara problemet med inloggningen kvar där jag inte kan logga in med ett användarnamn som innehåller '...
<%
response.buffer=true
function fixa(fix)
fix = Replace(fix,"'","''")
fix = Replace(fix,"|","")
fixa = fix
end function
username = Request.Form("username")
password = Request.Form("password")
If Request.Form("rem") = "true" Then
Response.Cookies("username") = username
Response.Cookies("username").Expires = date() + 365
Response.Cookies("password") = password
Response.Cookies("password").Expires = date() + 365
End If
set connection = Server.CreateObject("ADODB.Connection")
Connection.Open "databasen"
stm = "SELECT username, password, inactive, id FROM Users WHERE username = '"& fixa(username) &"' AND password= '"&fixa(password)&"' AND Inactive = 0"
set rs = connection.execute(stm)
If NOT(Rs.BOF AND Rs.EOF) Then
session("userid") = rs("id")
session("user") = rs("id") & status
session("username") = rs("username")
session("password") = rs("password")
URL = request.querystring("URL")
MYMESSAGE = Server.URLEncode("Logging in.<p>Please wait...")
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL="&URL&"")
Else
MYMESSAGE = Server.URLEncode("An error has accured.<p>Please check your username and password!<p>Please wait...<p>")
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=javascript:history.back(1)")
End If
rs.close
set rs = nothing
connection.close
set connection = nothing
%>
Peter's blir föjldaktligen Peter''s, och eftersom att det inte finns något konto med två ' så kan jag inte logga in... hur ska man lösa detta enklast? Väljer jag bort fixa() så avbryter jag ju SQLsträngen...
Tack för all hjälp hittils
//G8