webForumDet fria alternativet

Några invändningar mot den?

ASP

31 svar · 1 026 visningar · startad av medialabs · sida 2 av 2

Frågan, av medialabs

df

Läs frågan i sin helhet →
Medlem sedan feb. 200112 078 inlägg
#21

RED. Där kom det en redigering, ja. :)

Klamra alla kolumn- och tabellnamn. Det gör jag.

SELECT * FROM [haxx0r] WHERE [user] = " & lUserId & " AND [sql] = '" & blaha & "'"
Medlem sedan mars 20023 686 inlägg
#22

OveRRidE skrev:

RED. Där kom det en redigering, ja. :)

Klamra alla kolumn- och tabellnamn. Det gör jag.

SELECT * FROM [haxx0r] WHERE [user] = " & lUserId & " AND [sql] = '" & blaha & "'"

:) , nu fungerar den,

Addera = "INSERT INTO tbluppgifter ([username], [password], [regIP], [lastIP], [fname], [lname], [authkey], [reggad]) VALUES " & _
Medlem sedan dec. 20003 887 inlägg
#23

OveRRidE skrev:

RED. Där kom det en redigering, ja. :)

Klamra alla kolumn- och tabellnamn. Det gör jag.

SELECT * FROM [haxx0r] WHERE [user] = " & lUserId & " AND [sql] = '" & blaha & "'"

Jag skulle vilja påpeka att en bättre lösning är att namnge variablerna efter vad dom är. Då slipper man riskera att använda reserverade ord och det kan underlätta fälsökning.

username -> strUsername
password -> strPassword
regIP -> strRegIP
lastIP -> strLastIP
fname -> strFName
lname -> strLName
authkey -> strAuthKey
reggad -> dteReggad

Medlem sedan mars 20023 686 inlägg
#24

Engine^ skrev:

OveRRidE skrev:

RED. Där kom det en redigering, ja. :)

Klamra alla kolumn- och tabellnamn. Det gör jag.

SELECT * FROM [haxx0r] WHERE [user] = " & lUserId & " AND [sql] = '" & blaha & "'"

Jag skulle vilja påpeka att en bättre lösning är att namnge variablerna efter vad dom är. Då slipper man riskera att använda reserverade ord och det kan underlätta fälsökning.

username -> strUsername
password -> strPassword
regIP -> strRegIP
lastIP -> strLastIP
fname -> strFName
lname -> strLName
authkey -> strAuthKey
reggad -> dteReggad

Tack så mycket, ska döpa om det när jag får tag på en dator med Access installerat :)

Medlem sedan mars 20023 686 inlägg
#25

Vi kan ta det samtidigt nu när vi endå håller på. Det jag satt och funderade på nu är inloggningsproceduren. Som det är nu så fungerar den, men jag skulle även vilja sätta in användarens Ip i kolummen LastIP samtidigt som han loggar in. Hur gör man då??

<%
'Skapa en cookie hos klienten

Medialabs_Plus = request.form("client")

response.cookies("Plus_login_namn") = Medialabs_Plus
response.cookies("Plus_login_namn").expires = "2010-01-01"
%>

<%
Function SQLText(Value)
    If Len(Value) Then
        SQLText = "'" & Replace(Value, "'", "''") & "'"
    Else
        SQLText = "Null"
    End If
End Function

    Set Con = Server.CreateObject("ADODB.Connection")
    Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=g:\home\sys\plus.mdb"

    strSQL = "Select * from tbluppgifter where username = " & SQLText(Request.Form("client")) & " and password = " & SQLText(Request.Form("password"))
    Set RecSet = Server.CreateObject("ADODB.Recordset")
    RecSet.Open strSQL, Con

    If not recset.eof then
        Session("authentication") = "yes" 
        Session("id") = recset("id")
	Response.Redirect "/Plus/index.asp"
else
	

	'Om inloggningen är misslyckad så sätts en cookie för att dokumentera detta.

	If session("minkaka")<>"" Then				' Kolla om sessionen "minkaka" finns
		session("minkaka") = session("minkaka")+1	'Lägg till ett på sessionen om sessionen finns
	Else
		session("minkaka") = 1				'Finns den inte, sätt sessionen på 1
	End If
 
								'Kontrollera antal inloggningsförsök

	if session("minkaka")>=1 then				'Om tre försök har misslyckats,
	response.redirect("/Plus/unauthorized.asp")		' Skicka verderbörande dit han hör hemma
	end if

	Response.Redirect "/index.asp"

end if

%>
Medlem sedan juni 200032 967 inlägg
#26

Jag kan bara hålla med Engine^ här. Ge tydliga namn som indikerar vad tabellerna / fälten innehåller. Man stöter lätt på problem om man tillåter sig själv att använda reserverade ord som namn på sina objekt.

Det är onödigt jobbigt att klamra vartenda objektsnamn, dessutom är det, vad jag vet, inte standard heller. Inte många dbms tillåter namnklamring.

Lycka till!

Medlem sedan dec. 20003 887 inlägg
#27

Första försöket...

<%
[blue]'Skapa en cookie hos klienten[/blue]
Medialabs_Plus = Request.Form("client")

Response.Cookies("Plus_login_namn") = Medialabs_Plus
Response.Cookies("Plus_login_namn").Expires = "2010-01-01"

Function SQLText(Value)
    If Len(Value) Then
        SQLText = "'" & Replace(Value, "'", "''") & "'"
    Else
        SQLText = "Null"
    End If
End Function

Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=g:\home\sys\plus.mdb"

strSQL = "Select id from tbluppgifter where username = " & _
  SQLText(Request.Form("client")) & " and password = " & _ 
  SQLText(Request.Form("password"))

Set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.Open strSQL, Con

If Not RecSet.EOF Then
  Session("authentication") = "yes" 
  Session("id") = RecSet("id")

  [blue]'Uppdatera databasen med användarens IP[/blue]
  strSQL = "UPDATE tbluppgifter SET LastIP = '" & Request.ServerVariables("REMOTE_ADDR") & "' WHERE id = " & RecSet("id")
  Con.Execute strSQL, , 128

  RecSet.Close
  Set RecSet = Nothing
  Con.Close
  Set Con = Nothing

  Response.Redirect "/Plus/index.asp"
Else
  [blue]'Stäng anslutningen till databasen[/blue]
  RecSet.Close
  Set RecSet = Nothing
  Con.Close
  Set Con = Nothing

[blue]'Om inloggningen är misslyckad så sätts en cookie för att dokumentera detta.[/blue]
  If Session("minkaka") <> "" Then
    [blue]'Kolla om sessionen "minkaka" finns
    'Lägg till ett på sessionen om sessionen finns[/blue]
    Session("minkaka") = Session("minkaka") + 1	
  Else
    [blue]'Finns den inte, sätt sessionen på 1[/blue]
    Session("minkaka") = 1
  End If
 
  [blue]'Kontrollera antal inloggningsförsök
  'Om tre försök har misslyckats så...[/blue]
  If Session("minkaka") = 3 Then
    [blue]'...skicka verderbörande dit han hör hemma[/blue]
    Response.Redirect("/Plus/unauthorized.asp")		
  End If

  Response.Redirect "/index.asp"
End If
%>
Medlem sedan mars 20023 686 inlägg
#28

Ett stort tack till dig Engine^, nu fungerar allt perfekt, den satte in IP't som den skulle :)

Jag tar och bjuder på en kall :bire

Medlem sedan dec. 20003 887 inlägg
#29

Man tackar. :birp

Medlem sedan mars 20023 686 inlägg
#30

Tjenare igen ;)

Har (försökt) impelenterat ett mailsystem på registreringssidan. Och det fungerar men det är lite skakigt, jag vet att det går att få den bättre, jag kanske har satt den på fel ställa i koden.

Sen kom jag att tänka på att om man försöker komma åt sidan direkt så visas ett felmeddelande. kan man göra på sidan att när nån försöker komma åt den så skickas dom vidare


<%

Option Explicit
Response.Buffer = True

' ## Funktion för att generera ett lösenord till användaren

Function Createpass(arg)
Dim vPasswd, i
const vPasschars = "qwCVBNM"
Randomize
For i =  1 To arg
vPasswd = vPasswd & mid ( vPasschars, Int(rnd*Len(vPasschars))+1, 1 )
Next
Createpass = vPasswd
End Function

' ## Filtrerar bort ogiltiga tecken

Function FixInject(strSource)
  FixInject = Replace(strSource, "'", "''")
End Function

Dim Addera, ConnectREG, lngRA, strConn, losenord

' ## Generera en 10-siffrigt lösenord

losenord = Createpass(10)

' ## öppnar en anslutning till access databasen

Set ConnectREG = Server.CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.Jet.OleDb.4.0;Data ;"

Addera = "UPDATE tbluppgifter SET strusername = strusername WHERE strusername = '" & FixInject(Request.Form("username")) & "'"

ConnectREG.Open strConn
ConnectREG.Execute Addera, lngRA, 128
ConnectREG.Close

' ## Fångar upp eventuellt felmeddelande ang. om användarnamnet är upptaget

If lngRA > 0 Then
  Session("meddelande") = " <font color=""red"">* Användarnamnet är upptaget *</font>"

  Set ConnectREG = Nothing

  Response.Redirect "/plus/fel.asp"
End If

' ## Här sätter vi in all information i databasen

Addera = " "'" & _
  ", '" & losenord & "'" & _
  ", '" & FixInject(Request.Form("epost")) & "'" & _
  ", '" & Request.ServerVariables("REMOTE_ADDR") & "'" & _
  ", '" & Request.ServerVariables("REMOTE_ADDR") & "'" & _
  ", '" & FixInject(Request.Form("fname")) & "'" & _
  ", '" & FixInject(Request.Form("lname")) & "'" & _
  ", #" & Now() & "#)"

[b]
' ## Här skapar vi mailet som ska skickas till användaren.

fran = ""
epost = Request.Form("epost")
fname = Request.Form("fname")
lname = Request.Form("lname")
username = Request.Form("username")
ip = Request.ServerVariables("REMOTE_ADDR")
arende = ""

Dim SmartMail, fran, arende, ip, username, epost, fname, lname, body 	
Set SmartMail = Server.CreateObject("aspSmartMail.SmartMail")  

SmartMail.Server = "" 	
	'SmartMail.ServerPort = 25 	
SmartMail.ServerTimeOut = 40

SmartMail.SenderName = "" & fran & ""	
SmartMail.SenderAddress = "" & fran & ""  

SmartMail.Recipients.Add "" & epost & "", "" & username & ""
SmartMail.Subject = "" & arende & ""

body = "<font face=verdana size=1>Dina användaruppgifter för 
body = body & "<br><br><br>---------------------------------------------------------------------------------------------------<br>"
body = body & "<b>Registrerad av:</b>  " & fname & " " & lname & "<br>"
body = body & "<b>Registrerad:</b>  " & Now & "<br>"
body = body & "<b>Användarnamn: </b> " & username & " <br>"
body = body & "<b>Lösenord: </b> " & losenord & " <br>"
body = body & "<b>E-mail: </b> " & epost & "<br>"
body = body & "<b>Registrerades ifrån: </b> " & ip & "<br>"
body = body & "» Börja med att logga in på och byt ut lösenordet mot ett som du själv vill ha. <br>"
body = body & "» <a href=""http:///"">Logga in här!</a><br>"
body = body & "---------------------------------------------------------------------------------------------------<br></font>"
SmartMail.Body = "" & body & ""

SmartMail.ContentType = "text/html" 
SmartMail.Charset = "iso-8859-1"	
SmartMail.SendMail

' ## Här slutar mailet som vi ska skicka till användaren.
[/b]

' ## Stänger anslutningen till databasen
ConnectREG.Open strConn
ConnectREG.Execute Addera, , 128
ConnectREG.Close
Set ConnectReg = Nothing

' ## Om registreringen och mailet har skickats så skickar vi användaren vidare

Response.Redirect "/Plus/grattis.asp"

%>
Medlem sedan mars 20023 686 inlägg
#31

Har sökt och sökt nu i forumet efter ett script som man lätt skulle kunna implementera in i sidan för att se att fälten

username
epost
fname
lname

bara innehåller följande tecken: a-z, 0-9, - _

har förstått att det har nått att göra med pattern eller reg, vet inte riktigt vad det kallas. Men skulle vara grymt tacksam att kunna filtrera ut lite andra tecken ur inputrutorna innnan dom når databasen.

Medlem sedan dec. 20003 887 inlägg
#32

Regular Expressions heter det du söker efter. Och en funktion för att testa dina strängar kan se ut såhär.

Function IsCharsAllowed(strTest)
  objRS = New RegExp

  objRS.Global = True
  objRS.IgnoreCase = True
  objRS.Pattern = "[^\w-]"

  If objRS.Test(strTest) Then
    IsCharsAllowed = False
  Else
    IsCharsAllowed = True
  End If
End Function

If IsCharsAllowed("password_-123") Then
  Response.Write "Ok!"
Else
  Response.Write "Ogiltiga tecken!"
End If
258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)