23. september 2004 - 05:17Der er
16 kommentarer og 2 løsninger
Generere tilfældig tal til Access database
Hej Jeg har en side hvor medlemmer kan logge på og vedligeholde deres egne data. Som det virker i dag, hiver jeg deres email med over fra deres logon, til at hente deres data, hvilket gør at denne kan ses i URL'en. Hvis nu en snedig bruger kender en af de andres Email's, så er det bare at sætte denne ind i URL'en, og vedkommende kan så ændre dennes data - surt. ID'et fra data baesn er endnu værre, for det er det bare at lægger +1 til for at få fat i en anden bruger. Kan man når folk registrerer sig få genereret en unik nøgle. f.eks. ud fra dato og tid, som så gemmes i et felt i databasen lavet til formålet(sandsynligheden for at 2 registrerer sig samtidig er lig nul)??? Eller er der en anden løsning?
Jeg vil helt klart fortrække at bruge session. Du gemmer bare deres email/id i en sessionvariabel når de logger på, også er de knyttet til den browser/session. Du kan så kalde sessionvariablerne fra alle dine ASP sider.
Hej Det må være en session jeg har brug for. Jer ikke en asp haj, så jeg har brug for lidt yderligere forklareing. Jeg sender mail'en til næste side med denne logon kode:
Sql = "Select Count(*) as Found from user where (username = '" & strUsername & "') and (password ='" & strPassword & "')" Set LO = RS.Execute(Sql) if LO("Found") = 0 then Session("login") = "" error = "Du blev ikke godkendt af systemet" else strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../DB/database.mdb") Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN strSQL = "SELECT * FROM user where (username = '" & Request("username") & "') and (password ='" & Request("password") & "')" Set ez = myConn.Execute(strSQL) Session("login") = "yes mate" Response.Redirect "result.asp?username=" & request.form("username") EZ.Close RS.Close Conn.Close end if end if %>
Kan en af jer hjælpe mig med at rette koden til samt fortælle hvordan jeg henter koden på den side brugeren sendes til?
Hmm, nu er jeg i tvivl. Hvilken løsning vil være den mest normale og sikreste at lave? Eagleeye: Virker fint. Af dine forslag er jeg mest til løsning 2 da løsning 1 genererer et negativt tal. Jeg er ikke klar over om det kan give problemer senere hen med et negativt tal. Fennec: virker fint. /Kim
For mig (og vil tro, de fleste andre) er session det mest normale at bruge til login systemer af denne type.
Session er også rimlig sikker. Det eneste problem er at session, pr default, eksistere i 20 min (For hver gang man ændre siden tæller den forfra). Det vil sige at hvis en bruger forlader computeren uden at logge af eller lukke browseren ned, lever session stadig, og man kan gå tilbage og få adgang til hans/hendes info. Der findes dog måder til at minimere dette problem.
sapworld >> Vil du skire folk ikke kan se andre bruger profiler ved at pille ved ID'et skal du bruges session variablen til at gemme ID'et i. Du kan så overveje om folks ID skal være et autonummer tal som stiger med 1 for hver ny bruger du får, eller om det skal være et tilfældigt tal.
Så hvis spørgsmålet går ud på at undgå folk kan se andres profil skal man ikke burge querystring men sessions.
Det er ikke NASA, men det er en foreningshomepage. Derfor skal der ikke tages højde for at folk forlader deres PC, og der derved kan ske misbrug. Jeg vil undgå drengestreger, da de unge knægte er rimelige kvikke i dag. Da jeg har folks Email adresser vil jeg være sikker på at disse ikke kan misbruges. Der logges på med en email adresse, og jeg har prøvet at hente en persons data med denne streng: sql = "SELECT * FROM adresse WHERE email = " & session("username") & "" Men det kan den ikke lide: Syntax error (missing operator) in query expression
Det hjalp. Username er ikke tomt, men jeg ville ikke post min email her pga. fuck... spam :) Måske et dumt spørgsmål, men hvor gemmer "den" de sessions værdier? Har jeg dem hele tiden til rådighed, så længe browseren ikke har væet passiv i 20 min, eller skal de flyttes mellem siderne??? I den endelige løsning har jeg også ændret ID'et som eagleeye forslog, så vil denne point fordeling være fair: eagleeye:10 fennec: 20 Poster i et svar?
Session værdier gemmes på serveren samme med SessionID. SessionID sendes til browseren som en session-cookie og når browseren tilgår serveren igen kan severen bruge det sessionID til at finde den rigtige session varaible.
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.