/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
2 logins
Fra : jeppe


Dato : 01-03-06 17:37

Jeg har en simpel login kode...
Den har et login "brugernavn" og et "password"
Sådan så der kun er en "bruger"
På den måde kunne jeg godt tænke mig der var lidt flere
"brugere". Lad os fx sige der skulle være to brugere.. altså to
brugernavn+password
Nogen der kan sige mig hvordan det gøres?
Håber i kan hjælpe mig.. :)

mvh Jeppe

:-Koden-:

<%
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("database.mdb")
sql = "select * from brugerinfo ORDER BY id desc"
Set rs = Server.CreateObject("ADODB.Recordset")
set rs = Connect.execute(SQL)

count = 25
While not rs.eof and count > 0
count = count -1
%>

<%
' Tjek om login og password er korrekte
If Request.Form("login") = rs("brugernavn") AND
Request.Form("password") = rs("password") Then

' Hvis korrekt sættes session til godkend
Session("login") = "godkend"
Session.Timeout = 30
Response.Write "<h1>Du er nu logget korrekt ind</h1>"
Response.Write "<p><a href='menu.asp'>videre</a></p>"

Else

' Hvis forkert sættes ingen session til NEJ
Session("login") = "NEJ"
Session.Timeout = 30
Response.Write "<h1>Dit brugernavn eller password var
forkert</h1>"
Response.Write "<p><a href='logon.asp'>prøv igen</a></p>"

End If
%>
<%
rs.MoveNext
Wend
%>


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jørn Andersen (01-03-2006)
Kommentar
Fra : Jørn Andersen


Dato : 01-03-06 18:59

On 01 Mar 2006 16:36:31 GMT, jeppe <marci@cssyd.dk> wrote:

>Jeg har en simpel login kode...
>Den har et login "brugernavn" og et "password"
>Sådan så der kun er en "bruger"
>På den måde kunne jeg godt tænke mig der var lidt flere
>"brugere". Lad os fx sige der skulle være to brugere.. altså to
>brugernavn+password

Jeg forstår ikke helt, hvad du vil opnå?
Selv om din kode ikke er optimal, vil den fange alle de brugere, der
er lagt ind (op til 25).
Hvad er det mere, du ønsker?

>Nogen der kan sige mig hvordan det gøres?
>Håber i kan hjælpe mig.. :)
<snip>

>:-Koden-:
Det er ikke særligt hensigtsmæssigt, at man skal gennemløbe hele
bruger-databasen og checke på match for hver enkelt af dem.

Det er langt bedre, at "lade databasen gøre arbejdet"
<snip>

' Hent brugernavn fra formular og validér input
strLogin = Request.Form("login")
strLogin = Replace(strLogin & "", "'", "''")
' Ditto med password
strPassword = Request.Form("password")
strPassword = Replace(strPassword & "", "'", "''")

sql = "SELECT * FROM brugerinfo" & _
" WHERE brugernavn = '" & strLogin & "'" & _
" AND password = '" & strPassword & "';"

' Check om der returneres noget
If rs.eof Then
' Hvis forkert sættes ingen session til NEJ
Session("login") = "NEJ"
Response.Write "<h1>Dit brugernavn eller password var
forkert</h1>"
Response.Write "<p><a href='logon.asp'>prøv igen</a></p>"
Else
' Hvis korrekt sættes session til godkend
Session("login") = "godkend"
Response.Write "<h1>Du er nu logget korrekt ind</h1>"
Response.Write "<p><a href='menu.asp'>videre</a></p>"
End If

På den måde laver du en specifik forespørgsel til din database og
checker kun på, om det du spørger om eksisterer.
NB: Der er ingen grund til at sætte
Session.Timeout = 30
inde i If'en - sæt den i toppen.


Et par links:
Hvorfor validere?
<url: http://www.asp-faq.dk/article/?id=95>

Desuden er det en god idé *ikke* at gemme passwords i læsbar form i en
database. Til det formål bruger man en "hash"- ("krypterings"-)
funktion, som fx MD5 eller SHA. Se fx:
<url: http://www.asp-faq.dk/article/?id=52>
- man hasher så password, inden det indsættes i db'en og hasher
pw-input fra formular, inden man sammenligner med værdien i db'en.

Man bør *altid* hash'e passwords, også selv om man ikke har en
voldsomt stram beskyttelse - af den simple grund, at folk ofte bruger
samme passwords til seriøse og mindre seriøse ting.
Du vil således (som administrator el. lign.) kunne aflæse folks
passwords, hvis de står i klartekst. Så alene for at beskytte dig selv
for mistanken om at have misbrugt folks passwords er det en god ting.


Good luck!

--
Jørn Andersen,
Brønshøj

jeppe (01-03-2006)
Kommentar
Fra : jeppe


Dato : 01-03-06 20:00

Jørn Andersen wrote:
>
> Jeg forstår ikke helt, hvad du vil opnå?
> Selv om din kode ikke er optimal, vil den fange alle de brugere, der
> er lagt ind (op til 25).
> Hvad er det mere, du ønsker?
>
Det jeg tænkte på var at der ikke kun er Ét password og Ét brugernavn
>
> >:-Koden-:
> Det er ikke særligt hensigtsmæssigt, at man skal gennemløbe hele
> bruger-databasen og checke på match for hver enkelt af dem.
>
> Det er langt bedre, at "lade databasen gøre arbejdet"
> <snip>
>
> ' Hent brugernavn fra formular og validér input
> strLogin = Request.Form("login")
> strLogin = Replace(strLogin & "", "'", "''")
> ' Ditto med password
> strPassword = Request.Form("password")
> strPassword = Replace(strPassword & "", "'", "''")
>
> sql = "SELECT * FROM brugerinfo" & _
> " WHERE brugernavn = '" & strLogin & "'" & _
> " AND password = '" & strPassword & "';"
>
> ' Check om der returneres noget
> If rs.eof Then
> ' Hvis forkert sættes ingen session til NEJ
> Session("login") = "NEJ"
> Response.Write "<h1>Dit brugernavn eller password var
> forkert</h1>"
> Response.Write "<p><a href='logon.asp'>prøv igen</a></p>"
> Else
> ' Hvis korrekt sættes session til godkend
> Session("login") = "godkend"
> Response.Write "<h1>Du er nu logget korrekt ind</h1>"
> Response.Write "<p><a href='menu.asp'>videre</a></p>"
> End If
>
> På den måde laver du en specifik forespørgsel til din database og
> checker kun på, om det du spørger om eksisterer.
> NB: Der er ingen grund til at sætte
> Session.Timeout = 30
> inde i If'en - sæt den i toppen.
>
Okay... Som du nok kunne se på koden af lidt nybegynder... - hehe men
det virkede da ;) ... men jeg kan godt forstå hvad du mener ...

> Et par links:
> Hvorfor validere?
> <url: http://www.asp-faq.dk/article/?id=95>
>
> Desuden er det en god idé *ikke* at gemme passwords i læsbar form i
en
> database. Til det formål bruger man en "hash"- ("krypterings"-)
> funktion, som fx MD5 eller SHA. Se fx:
> <url: http://www.asp-faq.dk/article/?id=52>
> - man hasher så password, inden det indsættes i db'en og hasher
> pw-input fra formular, inden man sammenligner med værdien i db'en.
>
> Man bør *altid* hash'e passwords, også selv om man ikke har en
> voldsomt stram beskyttelse - af den simple grund, at folk ofte bruger
> samme passwords til seriøse og mindre seriøse ting.
> Du vil således (som administrator el. lign.) kunne aflæse folks
> passwords, hvis de står i klartekst. Så alene for at beskytte dig
selv
> for mistanken om at have misbrugt folks passwords er det en god ting.
>
Okay.. Det havde jeg slet ikke tænkt på... Men niCe du fortalte mig
det.. det vil jeg da så se lidt på :)


Mange tak for hjælpen :)

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

jeppe (01-03-2006)
Kommentar
Fra : jeppe


Dato : 01-03-06 23:00

Men din kode virker da ikke?
Den godkender alt lige meget om man skriver den rigtigt eller
forkert,,??

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (01-03-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-03-06 23:55

jeppe skrev:

> Men din kode virker da ikke?
> Den godkender alt lige meget om man skriver den rigtigt eller
> forkert,,??

Hvem svarer du og hvad svarer du på?

Det er svært at se når du ikke citerer noget - læs gerne min signatur.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

jeppe (02-03-2006)
Kommentar
Fra : jeppe


Dato : 02-03-06 15:06

Jens Gyldenkærne Clausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> jeppe skrev:
>
> > Men din kode virker da ikke?
> > Den godkender alt lige meget om man skriver den rigtigt eller
> > forkert,,??
>
> Hvem svarer du og hvad svarer du på?
>
> Det er svært at se når du ikke citerer noget - læs gerne min signatur.
>
jo jøren skrev denne "kode"

' Hent brugernavn fra formular og validér input
strLogin = Request.Form("login")
strLogin = Replace(strLogin & "", "'", "''")
' Ditto med password
strPassword = Request.Form("password")
strPassword = Replace(strPassword & "", "'", "''")

sql = "SELECT * FROM brugerinfo" & _
" WHERE brugernavn = '" & strLogin & "'" & _
" AND password = '" & strPassword & "';"

' Check om der returneres noget
If rs.eof Then
' Hvis forkert sættes ingen session til NEJ
Session("login") = "NEJ"
Response.Write "<h1>Dit brugernavn eller password var
forkert</h1>"
Response.Write "<p><a href='logon.asp'>prøv igen</a></p>"
Else
' Hvis korrekt sættes session til godkend
Session("login") = "godkend"
Response.Write "<h1>Du er nu logget korrekt ind</h1>"
Response.Write "<p><a href='menu.asp'>videre</a></p>"
End If

Den ville jeg så prøve...men når jeg så skriver et brugernavn/password
bliver session sat til godkend.
Lige meget om man skriver det rigtige brugernavn/password eller det
forkerte brugernavn/password?

Og det var så det jeg ikke forstod...
Fordi hvis den bare godkender alt virker den jo ikke?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

jeppe (02-03-2006)
Kommentar
Fra : jeppe


Dato : 02-03-06 15:08

jeppe wrote:
> jo jøren skrev denne "kode"
sorry... Jeg mener selvfølgelig Jørn :)

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (02-03-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-03-06 15:51

jeppe skrev:

> ' Hent brugernavn fra formular og validér input
> strLogin = Request.Form("login")
> strLogin = Replace(strLogin & "", "'", "''")
> ' Ditto med password
> strPassword = Request.Form("password")
> strPassword = Replace(strPassword & "", "'", "''")
>
> sql = "SELECT * FROM brugerinfo" & _
> " WHERE brugernavn = '" & strLogin & "'" & _
> " AND password = '" & strPassword & "';"
>
> ' Check om der returneres noget

Her har Jørn udeladt noget. For at bruge databasen til noget, skal
man sende en forespørgsel til den - det står ikke i koden.

Du skal have en linje a la:

   Set rs = Conn.Execute (sql)

- ind før du tjekker med rs.EOF.

Conn er et connectionobjekt - se evt. mere her:
<http://www.html.dk/tutorials/asp/lektion19.asp>


--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

jeppe (02-03-2006)
Kommentar
Fra : jeppe


Dato : 02-03-06 16:20

Jens GyldenkærneClausen wrote:
>
> Du skal have en linje a la:
>
>    Set rs = Conn.Execute (sql)
>
> - ind før du tjekker med rs.EOF.
>
Hmm det forstår jeg ikke helt..
Kan du ikke prøve at skrive koden som den skal være så?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (02-03-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-03-06 22:10

jeppe skrev:

> Hmm det forstår jeg ikke helt..
> Kan du ikke prøve at skrive koden som den skal være så?

Jeg sakser lige fra dit første indlæg:

*****
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("database.mdb")
sql = "select * from brugerinfo ORDER BY id desc"
Set rs = Server.CreateObject("ADODB.Recordset")
set rs = Connect.execute(SQL)
*****

Ovenstående viser hvordan man returnerer noget fra databasen
(bortset fra at den næstsidste linje er overflødig - du skaber et
postsæt, men smider det så væk ved at lave et nyt i sidste linje).

Hvis du erstatter linjen der opbygger sql-sætningen
(sql = "select...") med sql-opbygningen i Jørns forslag:

' Hent brugernavn fra formular og validér input
strLogin = Request.Form("login")
strLogin = Replace(strLogin & "", "'", "''")
' Ditto med password
strPassword = Request.Form("password")
strPassword = Replace(strPassword & "", "'", "''")

sql = "SELECT * FROM brugerinfo" & _
" WHERE brugernavn = '" & strLogin & "'" & _
" AND password = '" & strPassword & "';"


- så skulle det gerne virke.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

jeppe (02-03-2006)
Kommentar
Fra : jeppe


Dato : 02-03-06 22:53

Jens GyldenkærneClausen wrote:
> Jeg sakser lige fra dit første indlæg:
>
> *****
> Set connect = Server.CreateObject("ADODB.Connection")
> Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
> Server.MapPath("database.mdb")
> sql = "select * from brugerinfo ORDER BY id desc"
> Set rs = Server.CreateObject("ADODB.Recordset")
> set rs = Connect.execute(SQL)
> *****
>
> Ovenstående viser hvordan man returnerer noget fra databasen
> (bortset fra at den næstsidste linje er overflødig - du skaber et
> postsæt, men smider det så væk ved at lave et nyt i sidste linje).
>
> Hvis du erstatter linjen der opbygger sql-sætningen
> (sql = "select...") med sql-opbygningen i Jørns forslag:
>
> ' Hent brugernavn fra formular og validér input
> strLogin = Request.Form("login")
> strLogin = Replace(strLogin & "", "'", "''")
> ' Ditto med password
> strPassword = Request.Form("password")
> strPassword = Replace(strPassword & "", "'", "''")
>
> sql = "SELECT * FROM brugerinfo" & _
> " WHERE brugernavn = '" & strLogin & "'" & _
> " AND password = '" & strPassword & "';"
>
>
> - så skulle det gerne virke.
>
Ja :)
Det gør det ... mange gange tak..


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Christian Kragh (01-03-2006)
Kommentar
Fra : Christian Kragh


Dato : 01-03-06 19:17

Hej.

Jeg ville bruge følgende.

Christian

Set Conn= Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("database.mdb")

strSQL = "Select brugerinfo.brugernavn from brugerinfo where
brugerinfo.brugernavn = '" &
Replace(Request.Form("login"),"'","") & "'" AND
brugerinfo.password = '" & Replace(Request.Form("login"),"'","")
& "'"


Set RS = Conn.Execute(strSQL)

Do While not rs.eof
Session("login") = "godkend"
Session.Timeout = 30
Response.Write "<h1>Du er nu logget korrekt ind</h1>"
Response.Write "<p><a href='menu.asp'>videre</a></p>"

rs.MoveNext
Loop

rs.Close
Set rs = Nothing

Conn.Close
Set Conn = Nothing

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408491
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste