06. december 2004 - 01:52Der er
15 kommentarer og 1 løsning
Problem med login system (ASP)
Jeg er nu sådan godt i gang med at lege med asp og jeg har da også fundet ud af en del, MEN jeg støder tit på problemer og så er det dejligt at have jer.
Jeg har lavet en side (index.htm) som indeholder formen. Denne side videresender formens data til login.asp, som så skal scanne disse data igennem.
Men hvordan gør jeg det?
Hvis vi siger at tabellen i db hedder "admin", brugeren er "mus" og kodeordet er "ost".
Jeg faldt i problemet fordi at hvis nu der er en bruger der hedder mus (kode:ost) en anden der hedder kat(kode:mælk) at jeg så kan komme ind med brugernavnet mus og koden mælk.
Hvordan kan jeg sikre mig at de brugernavn og pass hænger sammen?
<% If isEmpty(Session("UserID")) Then Response.Redirect("default.asp") End If %>
Login filen :
<% ' Hvis der er blevet trykket på knappen "Login" If Request.Form("Action") = "Login" Then ' Her forberedes de indtastede værdier til validering strUID = Trim(Replace(Request.Form("Brugernavn"),"'","")) strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))
' Hvis der er skrevet noget i både brugernavn og adgangskode If Len(strUID) > 0 And Len(strPWD) > 0 Then
' DSNLess forbindelse til databasen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../din database")
' Opbygning af SQL streng
strSQL = "SELECT UserID FROM pass"&_ " WHERE (user = '" & strUID & "')"&_ " AND (Password = '" & strPWD & "')"
Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then ' Hvis brugeren fandtes i databasen intUID = rs("UserID") Else ' Hvis brugeren ikke fandtes i databasen strERR = "Du blev ikke godkendt af systemet" End If
' Rydder op i vores connection objekt myConn.Close Set myConn = Nothing
If Len(intUID) Then ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre Session("UserID") = intUID Response.Redirect("loggedin.asp") End If Else ' Hvis der ikke var angivet brugernavn og adgangskode strErr = "Du skal skrive både brugernavn og adgangskode" End If
If Len(strErr) > 0 Then ' Her laves fejlmeddelsen om til rød skrift strErr = "<p><font color=red>" & strErr & "</font></p>" End If End If %>
Det virker for mig meget besværligt. Er det ikke bare at tage de data jeg har fra min form (request.form("brugernavn") og request.form("kodeord") og så sammenligne dem med databasen? Er: strUID = Trim(Replace(Request.Form("Brugernavn"),"'","")) strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))
bare for at gøre det lettere at indsætte i strSQL? Eller er det fordi at den ikke kan vises flere gange normalt?
Nu må I have mig undskyldt, manden er ny med asp, så det er nok ikke det smarteste at sende ham en kode som er ubrugelig, uoverskuelig go direkte en gang L O R T.
Eksperten er et sted hvor vi hjælper. Det som T-rex du har gang i er at gøre det endnu værre for ham.
Jeg sidder som asp programmør i eget firma gennem 3 år, og jeg ved hvor vigtigt det er at lave det simpelt og overskueligt og hjælpe nye på vej med en god start.
Jeg ser med åben mund og grædende øjne på det script og tager mig til hovedet et par gange inden jeg kniber mig i kinden for at se om det kan være rigtigt, mage til dårligt script, ubrugeligt script skal man lede længe efter.
Min sidste kommentar er at du kan kontakte mig på thomas @ codevision .dk og så ser vi på noget simpelt, det andet er efter min mening en gang kode som lige så godt ku være taget fra et hvilket som helst nybegynder kode sted.
Min mening, mit ansvar, men for mig skal mine løsninger kører stabilt og uden unødvendigt kode stumper som forsinker afviklingen af scriptet.
Puhh det var en lang smører, men jeg er her for at hjælpe.
Jeg ved jeg har angrebet T-rex nu og burde nok smide et login script op her for at vise at det jeg siger er sandt, men er i mod at blowe scripts.
Det script T-rex har her, minder til forveksling meget det som kan findes inde på asp.dk, men det er nok bare en tilfældighed og han aner garanteret ikke hvad der er galt i det ;-)
Som jeg forstår det, har jannikf ikke brug for et färdigt script, men hjälp til at komme videre med sit eget. Eller er jeg helt forkert på den jannikf? Det var da en ubehagelig fremtonong du har der coolstar.
Det er ellers ikke god eksperten-etik at löse problemer på den måde. Så er der jo ligesom ingen ide med ekspertens system. Det skal jo helst väre sådan at hvis en person söger på f eks login, så skal han finde en lösning på det han söger. Det kan han ikke på denne måde uden at maile dig. //Michael
Har jeg antydet at jeg vil anmelde dig? Jeg pröver at före en dialog, så du kan forstå hvorfor der er lavet regler her på eksperten. Accepterer man ikke de regler vil eksperten ikke fungere, altså folk kan ikke få den hjälp de behöver. Og dine metoder fungerer ikke her, hverken for brugeren eller dig selv. Så enten er det bare at acceptere reglerne og tiltale folk på en ordentlig måde, eller blive väk.
Jeg vil ikke paste mit login script her, som jeg bruger til kunder landet over, tror du mit arbejde ikke er penge værd. Men jeg kan hjælpe folk på vej med et andet slags script.
<% If Session("login") = "nej" Then Response.Redirect("index.asp?besked=Du skal først logge ind i systemet!") Elseif Session("login") = "" Then Response.Redirect("index.asp?besked=Du skal først logge ind i systemet!") End If %>
Coolstar jeg sidder selv med nogle problemer vedrørende Login.asp? jeg har et Script som jeg kan sende til dig hvis du da vil hjælpe mig? kan jeg få din e-mail adresse? Her er min: bofar@paradis.dk
Synes godt om
Ny brugerNybegynder
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.