Avatar billede eva Nybegynder
12. maj 2001 - 07:35 Der er 10 kommentarer og
1 løsning

Oprettelse af kunder med password

Jeg har en kundetabel, hvor man fra en hjemmeside skal kunne tilføje sig som ny kunde, det kræver et brugernavn og password,
Inden man kan blive oprettet skal undersøges om det anvendte password findes i forvejen, hvis ja bede om et nyt, hvis nej skal kunden oprettes med det indtastede. Jeg er ikke ret skrap til det her, så er der nogen hjælp at hente databassen er Access, og koden skal være i ASP
Avatar billede erikjacobsen Ekspert
12. maj 2001 - 07:49 #1
Hvorfor skal man undersøge om det password findes i forvejen? Det plejer man altså
ikke. Forestil en ganske almindelig kunde, der får et brugernavn, og vælger et
password, og så: \"Passwordet findes allerede\". Så bliver den almindelige kunde måske
til en \"hacker\", der vil prøve at finde den anden kunde med det password...

Men måske du mener \"...om det anvendte brugernavn findes i forvejen...\"

Gør du det?
Avatar billede muppe Nybegynder
12. maj 2001 - 08:21 #2
Bjarke!
Avatar billede eva Nybegynder
12. maj 2001 - 08:51 #3
Ja kald det hvad du vil, det kan vel være lige meget om du tjekker det ene eller det andet
bare samme ikke oprettes to gange, så for min skyld må du gerne kalde det brugernavn
Avatar billede muppe Nybegynder
12. maj 2001 - 09:59 #4
Eva du forstår ikke.
Hvis du laver tjekket på Password og præsenterer brugeren for en besked om at passwordet allerede er taget.
Du har nu foræret passwordet til en det ikke tilhører. Hvis du så f.eks. samtidig har en liste over tilmeldte brugere + deres brugernavne - så er det lige pludselig en smal sag at logge på - med en andens logon.

Du SKAL derfor lave tjekket ved oprettelsen på brugernavnet.
Det er derefter ligegyldigt om brugeren vælger et password der allerede er taget.

Kort sagt.
Ved oprettelse skal du tjekke om brugernavnet findes.
Og ved brugerlogin skal du så tjekke både brugernavn og password (som skal passe sammen)
Avatar billede muppe Nybegynder
12. maj 2001 - 10:02 #5
PS: Husk på at access databaser kan hentes gennem en browser. Det er derfor ikke det smarteste format at gemme brugernavne og passwords i.

Sørg i det mindste for at databasen ligger i en mappe, der ikke er tilgang til udefra.
Avatar billede brian Nybegynder
12. maj 2001 - 10:14 #6
Er det noget i stil med http://213.237.16.203/pc-skole/test/indextest.asp du søger ?
Avatar billede okay Nybegynder
12. maj 2001 - 10:48 #7
.
Avatar billede sbm Nybegynder
12. maj 2001 - 11:57 #8
For det første vil jeg anbefale dig at lave en seperat oprettelse, og ikke bare opretter en bruger, hvis brugernavnet ikke eksisterer i forvejen. Hvis du har et brugernavn, men taster forkert, vil den nye - forkert indtastede - bruger jo blive oprettet.

Derfor: Normal login side, og et link over til en opret side, eller seperate indtastningsfelter på den samme side, hvor de første er til login, og længere nede på siden kan man indtaste nyt brugernavn, hvis man ikke allerede har et.

Jeg vil lave et forslag der går på det første.

Html-koden til indtastningfelterne på loginsiden:

<input type=text name=navn>
<input type=password name=pwd>

På opret-ny-bruger siden er der så yderligere en:

<input type=password name=pwd2>

...så man kan sammenligne de to indtastniger af password, og sikre sig at brugeren ikke har lavet en tastefejl.

Nu ved jeg ikke hvordan du holder styr på brugerne. Om de er logget ind, og hvem der er hvem hvis der er flere der er logget ind samtidig. I dette eksempel bruger jeg bare cookies. Hvis det er en commerciel side, skal du nok vælge en anden løsning, men jeg ved ikke nok om sikkerhed i ASP til at kunne give dig en forsvarlig løsning.

Asp-kode for login:

    brugernavn = Trim(Request.Form(\"navn\"))
    password = Trim(Request.Form(\"pwd\"))

    set conn = server.createobject(\"ADODB.connection\")

        \' Du skal naturligvis tilpasse path og filnavn på din mdb-fil
    strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"/dbfiler/kunder.mdb\")
    conn.open strDSN
   
    SQL = \"SELECT * FROM kunder WHERE brugernavn=\'\" & brugernavn & \"\' AND password=\'\" & password & \"\'\"
    set RS = conn.execute( SQL )

        \' Hvis der ikke kom noget retur, findes det brugernavn ikke.
    if RS.eof then
      Response.Cookies(\"login\")(\"login\") = \"nej\"
    else
          \' og ellers gemmer vi de ting der er værd at gemme til senere brug.
      do while not RS.eof
        Response.Cookies(\"login\")(\"login\") = \"ja\"
        Response.Cookies(\"login\")(\"brugernavn\") = RS(\"brugernavn\")
            RS.movenext
      loop
    end if
    set conn = Nothing

    if Request.Cookies(\"login\")(\"login\") = \"ja\"
          ...skriv det der skal skrive til en kunde der er logget ind...
        else
          ...skriv at enten brugernavn og/eller password var forkert, og de må prøve igen...
        end if

Sørg ligeledes for at lave en LOGINCHECK.ASP side, der kaldes fra alle de sider hvor man skal være logget ind, som sørger for at afvise kunden hvis de prøver at springe direkte ind uden at logge ind. Den skal bare smage på om cookiens login variabel er sat til JA, og ellers lave en rediret til en afvisnings-side.

asp-kode til oprettelses-siden:

<%
  ...opret igen forbindelse til database...

  \' check lige om der allerede findes en bruger med det navn...
  SQL = \"SELECT * FROM KUNDER WHERE brugernavn = \" & request.form(\"navn\")
  set RS = conn.execute( SQL )

  if RS.eof then  \' navnet er ikke brugt. Vi går videre

    if request.form(\"pwd\") = request.form(\"pwd2\") then \' test om indtastede passwords er ens

      SQL=\"INSERT INTO kunder(brugernavn,password) values (\'\" & request.form(\"navn\") & \"\',\'\" & request.form(\"pwd\") & \"\')\"
      Conn.Execute(SQL)
    else
      ... fejlmeddelelse om at de to indtastede passwords ikke var ens - prøv igen ...
    end if
  else \' else del for check af kundenavn
    ... fejlmeddelelse om at brugernavnet allerede er taget - prøv et andet ...
  end if

Jeg har tastet dette lige ud af landevejen idet jeg i øjeblikket ikke har mulighed for at prøve det af. Du må vende retur hvis der er nogen problemer. :)
Avatar billede eva Nybegynder
12. maj 2001 - 12:39 #9
Jeg prøver lige noget af ovenstående med hensyn til Brian, ja det var noget i den retning som jeg gerne ville frem til
Avatar billede brian Nybegynder
13. maj 2001 - 00:25 #10
Jeg vil meget gerne ligge koden her på eksperten men det er lidt omfattende. Istedet er den lagt til download på http://213.237.16.203/pc-skole/ under koder-asp.

På de sider som kun skal kunne ses af registrerede brugere indsættes følgende kode :<%
\'Her bliver der undersøgt om session(\"Adgang\") er sat til Godkendt, er den ikke det bliver man sendt tilbage til login.asp med en fejlmeddelelse
If Not Session(\"Adgang\") = \"Godkendt\" Then
    Response.Redirect(\"login.asp?valg=forbudt\")
End If
%>

Avatar billede dampnet Nybegynder
13. maj 2001 - 12:05 #11
kigge med....
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