Avatar billede Slettet bruger
04. februar 2005 - 15:42 Der er 6 kommentarer og
1 løsning

Finjustering af eksisterende script.

Hejsa.

Jeg behøver hjælp til finjustering af eksisterende script.

Her er hvad jeg ønsker:
A: "Autologin" må gerne fjernes helt.

B: "Husk mig"-chekboxén skal repareres, da den nogengange lukker mig automatisk ind. Det skal den jo ikke, den skal kun huske mig.

C: For at forhindre, at en bruger kopierer det direkte URL fra adresselinien i en browser, og derved kan komme ind i mit forum udenom logind-funktionen, skal der så ikke sættes en chek af session/cookie i toppen af hvert dokument inde i mit forum? Eller hvordan kan jeg forhindre det?

D: En logout-funktion.


Nedenunder kommer selve scriptet.

På forhånd rigtigt mange tak: Flemming
Avatar billede Slettet bruger
04. februar 2005 - 15:43 #1
Her er selve scriptet:

=============================================================
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<%

'//SÆTTER UDLØB PÅ ASP-KODEN, BUFFER OG STANDARDER (DK)
Response.Expires = - 180
Response.Buffer = True
Session.LCID = 1030

'//KONTROLLERE OM PERSONEN ALLEREDE ER LOGGET IND
If Not IsEmpty(Session("valid-login")) Then

    '//SENDER PERSONEN DIREKTE TIL LOGGED_IN
    Response.Redirect "logged_in.asp"

'//AFSLUT KONTROL OM ALLEREDE LOGGET IND
End If

'//BEDER OM COOKIEOPLYSNINGER (Navn, emailad, huskmig, autologin)
strname = Request.Cookies("flje")("name")
stremailad = Request.Cookies("flje")("emailad")
strremember = Request.Cookies("flje")("remember")
strlogin = Request.Cookies("flje")("login")

'//HVIS DER SKAL BRUGES AUTOLOGIN
If strlogin = "yes" Then

    '//FORBINDER TIL DATABASEN
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/mailing.mdb")

    '//SØGER EFTER MATCH I DATABASEN I FORHOLD TIL FORM-OPLYSNINGER
    strSQL = "Select id, name, emailad From mailinglist Where name = '" & strname & "' And emailad = '" & stremailad & "' "
    Set RS = Conn.Execute(strSQL)

    '//HVIS DER IKKE ER EN MATCH
    If RS.BOF Or RS.EOF Then

        '//LUKKER DATABASEN OG SÆTTER FEJLMEDDELELSE
        Conn.Close
        Set Conn = Nothing
        strErr = "Du har ikke adgang!"

    '//ELLERS ER DER MATCH
    Else

        '//SÆTTER SESSION
        Session("valid-login") = RS("id")
        Session.TimeOut = 30

        '//SÆTTER Cookies
        'Response.Cookies("flje").Expires = Date+365
        Response.Cookies("flje").Secure = False
        Response.Cookies("flje").HasKeys
        Response.Cookies("flje")("name") = strformname
        Response.Cookies("flje")("emailad") = strformemailad
        Response.Cookies("flje")("remember") = strformremember
        Response.Cookies("flje")("login") = strformlogin

        '//LUKKER DATABASE OG SENDER VIDERE
        Conn.Close
        Set Conn = Nothing
        Response.Redirect "logged_in.asp"

    '//AFSLUT MATCHSØGNING
    End If

'//AFSLUT AUTOLOGIN
End If

'//HVIS DER LOGGES IND
If Lcase(Request.ServerVariables("REQUEST_METHOD")) = "post" Then

    '//HENTER FORMELEMENTERNE OG FJERNE UØNSKET MELLEMRUM I START OG SLUT
    strformname = Trim(Request.Form("name"))
    strformemailad = Trim(Request.Form("emailad"))
    strformremember = Trim(Request.Form("remember"))
    strformlogin = Trim(Request.Form("login"))

    '//TJECKER OM NAVN OG MAIL ER UDFYLDT
    If strformname = "" Or strformemailad = "" Then

        '//SÆTTER FEJLMEDDELELSEN
        strErr = "Du skal udfylde begge felter!"

    '//ELLERS ER BEGGE FELTER UDFYLDT
    Else

        '//FJERNER UØNSKEDE TEGN FRA FORMFELTERNE (så kan hack undgås)
        strformname = Replace(strformname,"'","''")
        strformemailad = Replace(strformemailad,"'","''")

        '//HVIS DER IKKE ER FLUEBEN VED HUSK MIG
        If strformremember = "" Then
            '//SÆTTER HUSK MIG TIL NEJ
            strformremember = "no"
        '//ELLERS ER DER FLUEBEN VED HUSK MIG
        Else
            '//SÆTTER HUSK MIG TIL JA
            strformremember = "yes"
        '//AFSLUT FLUEBEN VED HUSK MIG
        End If

        '//HVIS DER IKKE ER FLUEBEN VED AUTOLOGIN
        If strformlogin = "" Then
            '//SÆTTER AUTOLOGIN TIL NEJ
            strformlogin = "no"
        '//ELLERS ER DER FLUEBEN VED AUTOLOGIN
        Else
            '//SÆTTER AUTOLOGIN TIL JA
            strformlogin = "yes"
        '//AFSLUT FLUEBEN VED AUTOLOGIN
        End If

        '//FORBINDER TIL DATABASEN
        Set Conn = Server.CreateObject("ADODB.Connection")
        Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/mailing.mdb")

        '//SØGER EFTER MATCH I DATABASEN I FORHOLD TIL FORM-OPLYSNINGER
        strSQL = "Select id, name, emailad From mailinglist Where name = '" & strformname & "' And emailad = '" & strformemailad & "' "
        Set RS = Conn.Execute(strSQL)

        '//HVIS DER IKKE ER EN MATCH
        If RS.BOF Or RS.EOF Then

            '//LUKKER DATABASEN OG SÆTTER FEJLMEDDELELSE
            Conn.Close
            Set Conn = Nothing
            strErr = "Du har ikke adgang!"

        '//ELLERS ER DER MATCH
        Else

            '//SÆTTER SESSION
            Session("valid-login") = RS("id")

            '//SÆTTER Cookies
            Response.Cookies("flje").Expires = Date+365
            Response.Cookies("flje").Secure = False
            Response.Cookies("flje").HasKeys
            Response.Cookies("flje")("name") = strformname
            Response.Cookies("flje")("emailad") = strformemailad
            Response.Cookies("flje")("remember") = strformremember
            Response.Cookies("flje")("login") = strformlogin

            '//LUKKER DATABASE OG SENDER VIDERE
            Conn.Close
            Set Conn = Nothing
            Response.Redirect "logged_in.asp"

        '//AFSLUT MATCHSØGNING
        End If

    '//AFSLUT FELTKONTROL
    End If

'//AFSLUT HVIS DER LOGGES IND
End If

'//SIDEN SKRIVES
Response.write "<html xmlns="" http://www.w3.org/1999/xhtml""  xml:lang=""da"">" & vbCrLf

Response.write "<head>" & vbCrLf
Response.write "<title>..:: LOGIN ::..</title>" & vbCrLf
Response.write "<meta name=""title""  content=""login"" />" & vbCrLf
Response.write "<meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1"" />" & vbCrLf
Response.write "<meta http-equiv=""pragma"" content=""dan"" />" & vbCrLf
Response.write "<meta name=""author"" content=""LEGOmanden"" />" & vbCrLf
Response.write "<meta http-equiv=""imagetoolbar"" content=""no"" />" & vbCrLf
Response.write "<meta name=""robots"" content=""noindex,nofollow"" />" & vbCrLf
Response.write "<meta name=""Revisit-after"" content=""30"" />" & vbCrLf
Response.write "<meta http-equiv=""expires"" content=""0"" />" & vbCrLf
Response.write "<meta http-equiv=""pragma"" content=""no-cache"" />" & vbCrLf
Response.write "<meta http-equiv=""chace-control"" content=""no-store"" />" & vbCrLf
Response.write "<meta name=""ratin"" content=""general"" />" & vbCrLf

Response.write "<style type=""text/css"">" & vbCrLf
Response.write "    body {background: #ffffff; font: 85% tahoma, sans-serif; color: #000000; text-align: center; padding: 25px; }" & vbCrLf
Response.write "    form {background: #ffffff; width: 500px; text-align: left; }" & vbCrLf
Response.write "    fieldset {background: #ffffff; width: 100%; }" & vbCrLf
Response.write "    legend {text-transform: capitalize; font-weight: bold; }" & vbCrLf
Response.write "    label {width: 50%; text-transform: capitalize; padding-left: 10%; }" & vbCrLf
Response.write "    #button {text-transform: capitalize; margin: 10px; }"
Response.write "</style>" & vbCrLf
Response.write "</head>" & vbCrLf

Response.write "<body>" & vbCrLf
Response.write "    <form action=""login.asp"" method=""post"">" & vbCrLf
Response.write "        <fieldset>" & vbCrLf
Response.write "            <legend>Log ind</legend>" & vbCrLf
Response.write "            <br />" & vbCrLf
Response.write "            <label>Brugernavn:</label>" & vbCrLf
If strremember = "no" Then
    Response.write "            <input type=""text"" name=""name"" size=""25"" /><br />" & vbCrLf
Else
    Response.write "            <input type=""text"" name=""name"" size=""25"" value=""" & strname & """ /><br />" & vbCrLf
End If
Response.write "            <label>Email-adresse:</label>" & vbCrLf
If strremember = "no" Then
    Response.write "            <input type=""text"" name=""emailad"" size=""25"" /><br />" & vbCrLf
Else
    Response.write "            <input type=""text"" name=""emailad"" size=""25"" value=""" & stremailad & """ /><br />" & vbCrLf
End If
Response.write "            <label>husk mig:</label>"
If strremember = "no" Then
    Response.write "            <input type=""checkbox"" name=""remember"" value=""yes"" /><br />" & vbCrLf
Else
    Response.write "            <input type=""checkbox"" name=""remember"" value=""yes"" /><br />" & vbCrLf
End If
Response.write "            <label>log mig ind automatisk:</label>" & vbCrLf
If strremember = "no" Then
    Response.write "            <input type=""checkbox"" name=""login"" value=""yes"" /><br />" & vbCrLf
Else
    If strlogin = "yes" Then
        Response.write "            <input type=""checkbox"" name=""login"" value=""yes"" /><br />" & vbCrLf
    Else
        Response.write "            <input type=""checkbox"" name=""login"" value=""yes"" /><br />" & vbCrLf
    End If
End If
If strErr <> "" Then
    Response.write "            <label style=""color: #990000; "">#NOTE:</label>" & vbCrLf
    Response.write "            <span style=""color: #990000; "">" & strErr & "</span><br />" & vbCrLf
End If
Response.write "            <br />" & vbCrLf
Response.write "        </fieldset>" & vbCrLf
Response.write "        <span><input id=""button"" type=""submit"" value=""login"" /></span>" & vbCrLf
Response.write "    </form>" & vbCrLf
Response.write "</body>" & vbCrLf

%>

</html>
=============================================================
Avatar billede Slettet bruger
04. februar 2005 - 15:45 #2
Databasen er en Access-database, fylder 208 kb., og kan downloades her:
http://www.extend.dk/test3/db/mailing.mdb
Avatar billede Slettet bruger
04. februar 2005 - 15:49 #3
Og filen "logged_in.asp" er også nødvendig, da scriptet ellers ikke kan finde ud af det, når man logger sig ind.
Den indeholder ingenting, den skal bare være der for funktionens skyld. Den kan downloades her: http://www.extend.dk/test3/logged_in.asp
Avatar billede Slettet bruger
04. februar 2005 - 15:52 #4
Logind-oplysninger:
Navn: q
Mail: q@q.dk

Igen: På forhånd rigtigt mange tak: Flemming
Avatar billede eagleeye Praktikant
04. februar 2005 - 19:26 #5
A: Her er koden hvor autologin er fjernet, der er også tilføjet en logud funktion på login.asp siden. Hvis man overføre mode=logud som querystring logger den en person ud. Lige nu laver den en redirect til sig selv men du kan vælge en anden side den skal til når man er logget ud.


<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<%

'//SÆTTER UDLØB PÅ ASP-KODEN, BUFFER OG STANDARDER (DK)
Response.Expires = - 180
Response.Buffer = True
Session.LCID = 1030

'TJEK OM DER SKAL LOGGES UD:
if request.QueryString("mode")="logud" then
  Session("valid-login")=""
  Session.Abandon
  'DU KAN VÆLGE EN ANDEN SIDE DEN SKAL REDIRECTE TIL EFTER MAN ER LOGGET UD
  Response.Redirect("login.asp")
End If


'//KONTROLLERE OM PERSONEN ALLEREDE ER LOGGET IND
If Not IsEmpty(Session("valid-login")) Then

    '//SENDER PERSONEN DIREKTE TIL LOGGED_IN
    Response.Redirect "logged_in.asp"

'//AFSLUT KONTROL OM ALLEREDE LOGGET IND
End If

'//BEDER OM COOKIEOPLYSNINGER (Navn, emailad, huskmig, autologin)
strname = Request.Cookies("flje")("name")
stremailad = Request.Cookies("flje")("emailad")
strremember = Request.Cookies("flje")("remember")

'//HVIS DER LOGGES IND
If Lcase(Request.ServerVariables("REQUEST_METHOD")) = "post" Then

    '//HENTER FORMELEMENTERNE OG FJERNE UØNSKET MELLEMRUM I START OG SLUT
    strformname = Trim(Request.Form("name"))
    strformemailad = Trim(Request.Form("emailad"))
    strformremember = Trim(Request.Form("remember"))

    '//TJECKER OM NAVN OG MAIL ER UDFYLDT
    If strformname = "" Or strformemailad = "" Then

        '//SÆTTER FEJLMEDDELELSEN
        strErr = "Du skal udfylde begge felter!"

    '//ELLERS ER BEGGE FELTER UDFYLDT
    Else

        '//FJERNER UØNSKEDE TEGN FRA FORMFELTERNE (så kan hack undgås)
        strformname = Replace(strformname,"'","''")
        strformemailad = Replace(strformemailad,"'","''")

        '//HVIS DER IKKE ER FLUEBEN VED HUSK MIG
        If strformremember = "" Then
            '//SÆTTER HUSK MIG TIL NEJ
            strformremember = "no"
        '//ELLERS ER DER FLUEBEN VED HUSK MIG
        Else
            '//SÆTTER HUSK MIG TIL JA
            strformremember = "yes"
        '//AFSLUT FLUEBEN VED HUSK MIG
        End If


        '//FORBINDER TIL DATABASEN
        Set Conn = Server.CreateObject("ADODB.Connection")
        Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/mailing.mdb")

        '//SØGER EFTER MATCH I DATABASEN I FORHOLD TIL FORM-OPLYSNINGER
        strSQL = "Select id, name, emailad From mailinglist Where name = '" & strformname & "' And emailad = '" & strformemailad & "' "
        Set RS = Conn.Execute(strSQL)

        '//HVIS DER IKKE ER EN MATCH
        If RS.BOF Or RS.EOF Then

            '//LUKKER DATABASEN OG SÆTTER FEJLMEDDELELSE
            Conn.Close
            Set Conn = Nothing
            strErr = "Du har ikke adgang!"

        '//ELLERS ER DER MATCH
        Else

            '//SÆTTER SESSION
            Session("valid-login") = RS("id")

            '//SÆTTER Cookies
            Response.Cookies("flje").Expires = Date+365
            Response.Cookies("flje").Secure = False
            Response.Cookies("flje").HasKeys
            Response.Cookies("flje")("name") = strformname
            Response.Cookies("flje")("emailad") = strformemailad
            Response.Cookies("flje")("remember") = strformremember

            '//LUKKER DATABASE OG SENDER VIDERE
            Conn.Close
            Set Conn = Nothing
            Response.Redirect "logged_in.asp"

        '//AFSLUT MATCHSØGNING
        End If

    '//AFSLUT FELTKONTROL
    End If

'//AFSLUT HVIS DER LOGGES IND
End If

'//SIDEN SKRIVES
Response.write "<html xmlns="" http://www.w3.org/1999/xhtml""  xml:lang=""da"">" & vbCrLf

Response.write "<head>" & vbCrLf
Response.write "<title>..:: LOGIN ::..</title>" & vbCrLf
Response.write "<meta name=""title""  content=""login"" />" & vbCrLf
Response.write "<meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1"" />" & vbCrLf
Response.write "<meta http-equiv=""pragma"" content=""dan"" />" & vbCrLf
Response.write "<meta name=""author"" content=""LEGOmanden"" />" & vbCrLf
Response.write "<meta http-equiv=""imagetoolbar"" content=""no"" />" & vbCrLf
Response.write "<meta name=""robots"" content=""noindex,nofollow"" />" & vbCrLf
Response.write "<meta name=""Revisit-after"" content=""30"" />" & vbCrLf
Response.write "<meta http-equiv=""expires"" content=""0"" />" & vbCrLf
Response.write "<meta http-equiv=""pragma"" content=""no-cache"" />" & vbCrLf
Response.write "<meta http-equiv=""chace-control"" content=""no-store"" />" & vbCrLf
Response.write "<meta name=""ratin"" content=""general"" />" & vbCrLf

Response.write "<style type=""text/css"">" & vbCrLf
Response.write "    body {background: #ffffff; font: 85% tahoma, sans-serif; color: #000000; text-align: center; padding: 25px; }" & vbCrLf
Response.write "    form {background: #ffffff; width: 500px; text-align: left; }" & vbCrLf
Response.write "    fieldset {background: #ffffff; width: 100%; }" & vbCrLf
Response.write "    legend {text-transform: capitalize; font-weight: bold; }" & vbCrLf
Response.write "    label {width: 50%; text-transform: capitalize; padding-left: 10%; }" & vbCrLf
Response.write "    #button {text-transform: capitalize; margin: 10px; }"
Response.write "</style>" & vbCrLf
Response.write "</head>" & vbCrLf

Response.write "<body>" & vbCrLf
Response.write "    <form action=""login.asp"" method=""post"">" & vbCrLf
Response.write "        <fieldset>" & vbCrLf
Response.write "            <legend>Log ind</legend>" & vbCrLf
Response.write "            <br />" & vbCrLf
Response.write "            <label>Brugernavn:</label>" & vbCrLf
If strremember = "no" Then
    Response.write "            <input type=""text"" name=""name"" size=""25"" /><br />" & vbCrLf
Else
    Response.write "            <input type=""text"" name=""name"" size=""25"" value=""" & strname & """ /><br />" & vbCrLf
End If
Response.write "            <label>Email-adresse:</label>" & vbCrLf
If strremember = "no" Then
    Response.write "            <input type=""text"" name=""emailad"" size=""25"" /><br />" & vbCrLf
Else
    Response.write "            <input type=""text"" name=""emailad"" size=""25"" value=""" & stremailad & """ /><br />" & vbCrLf
End If
Response.write "            <label>husk mig:</label>"
If strremember = "no" Then
    Response.write "            <input type=""checkbox"" name=""remember"" value=""yes"" /><br />" & vbCrLf
Else
    Response.write "            <input type=""checkbox"" name=""remember"" value=""yes"" checked/><br />" & vbCrLf
End If
If strErr <> "" Then
    Response.write "            <label style=""color: #990000; "">#NOTE:</label>" & vbCrLf
    Response.write "            <span style=""color: #990000; "">" & strErr & "</span><br />" & vbCrLf
End If
Response.write "            <br />" & vbCrLf
Response.write "        </fieldset>" & vbCrLf
Response.write "        <span><input id=""button"" type=""submit"" value=""login"" /></span>" & vbCrLf
Response.write "    </form>" & vbCrLf
Response.write "</body>" & vbCrLf

%>

</html>




B: Det forstår jeg ikke hetl?


C: Ja du skal havde lagt en linie i toppen af de sider som er beskyttet med login. Som din kode er lave kan du tilføje denne if sætning i filerne som tjekke om session variablen er tom, hvis den er tom redirectes til login.asp siden så folk kan logge.

<% if Session("valid-login")="" then Response.Redirect("login.asp") %>

D: En logud funtion du kan tilføje et link som dettte:

<a href="login.asp?mode=logud">Log Ud</a>
Avatar billede eagleeye Praktikant
04. februar 2005 - 19:28 #6
Jeg er nød til at smutter for i aften. Måske kigger jeg ind senere på aftenen ellers bliver det i morgen en gang :)
Avatar billede Slettet bruger
21. februar 2005 - 22:46 #7
Hejsa igen, Eagleeye.

Jeps, så fik jeg både testet og rettet i scriptet, så det passer til det formål, jeg skal bruge det til.

Mange, mange tak for hjælpen!  :-)

Håber ikke at det gjorde noget, at det tog lidt tid?  :-/

Hejsa igen: FLJE
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester