06. maj 2006 - 16:03Der er
31 kommentarer og 1 løsning
Tjek om brugernavn OG/ELLER email er taget ved tilmelding.
Jeg vil gerne tjekke om brugernavn OG/ELLER email er taget når en bruger tilmelder sig.
Det virker fint nu med brugernavn, har prøvet med følgende men email bliver ikke tjekket:
strSQL = "Select brugernavn From brugere Where brugernavn = '" & Replace(Request.Form("brugernavn"),"'","''") & "'" Set rs = Conn.Execute(strSQL)
If not rs.eof Then Response.Write("<script>java script:alert('Det valgte brugernavn er allerede taget, vælg venligst et andet.')</script>") Response.Write "<script>java script:history.back();</script>" rs.close rs.open "Select Email From brugere Where Email = '" & Replace(Request.Form("Email"),"'","''") & "'" Elseif not rs.eof Then Response.Write("<script>java script:alert('Den valgte mailadresse er allerede brugt af anden bruger, vælg venligst en andet.')</script>") Response.Write "<script>java script:history.back();</script>" Else
Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
strSQL = "Select brugernavn From brugere Where brugernavn = '" & Replace(Request.Form("brugernavn"),"'","''") & "'" Set rs = Conn.Execute(strSQL)
If not rs.eof Then Response.Write("<script>java script:alert('Det valgte brugernavn er allerede taget, vælg venligst et andet.')</script>") Response.Write "<script>java script:history.back();</script>" rs.close
else
strSQL2 = "Select Email From brugere Where Email = '" & Replace(Request.Form("Email"),"'","''") & "'" Set rs2 = Conn.Execute(strSQL2)
if not rs2.eof Then Response.Write("<script>java script:alert('Den valgte mailadresse er allerede brugt af anden bruger, vælg venligst en andet.')</script>") Response.Write "<script>java script:history.back();</script>" Else
Ang replace af email: I "email" er vel ingen grund til at erstatte ' med '', da ' ikke er tilladt i email.. :-) Derfor: email = Replace(Request.Form("Email"),"'","")
Primitivt? Der er da mere effektiv, og bruger garanteret færre ressourcer.
Du laver 2 opslag. Jeg laver kun 1.
Din metode: - Spørgsmål: eksisterer brugernavnet? -- Hvis svar er "nej": --- Spørgsmål: eksisterer emailadressen? ---- Hvis svar er "nej": ----- Opret bruger
Min metode: - Spørgsmål: eksisterer brugernavnet ELLER email adresse? -- Hvis svar er "nej" (dvs, hverken brugernavn eller emailadresse eksisterer): --- Opret bruger
Ja, det er jeg ikk i tvivl om. Men se hans egen struktur. Han vil gerne at man først ser om brugernavnet findes. Gør den ikke det, jamen så ska man tjekke om emailen findes. Dit forslag gir ikke et præcist svar på hvilket objekt der findes i forvejen :-). Så effektivt, tjae ;).
Din metode tager nok ikke så lang tid, men der snakker vi vist om 1/100 sek :)
Det synes jeg ikke er logisk.. Så kan man jo registrere flere/uendelige antal bruger til samme email adresse..??
Normalt er det: 1 bruger per email adresse
Hvis der er noget spørgeren ikke er klar over, eller der er en fejl / noget der kan forbedres, så bør man fortælle det.
Jeg svarer ud fra min konklusion, af hvad det er der skal ske ("person vil oprette ny bruger") / spørgeren højst sandsynligt..
Normalt scenarie:
- Personen ønsker at oprette en bruger - Den ønskede bruger må ikke allerede være oprettet - Den ønskede email må ikke allerede være benyttet (kan give "problemer" ved "glemt password"-script) - Hvis begge kriterier er opfyldt (hverken brugernavn eller email er taget), kan brugeren oprettes
Det man kan være lidt i tvivl om, er spørgerens brug af "OG/ELLER".. Så vi skal egentlig have at vide, hvad præcist hvad det er spørgeren ønsker:
1) 1 bruger per email adresse 2) mange bruger per email adresse
Puha, jeg er træt efter en lang arbejdsdag, så jeg forstår ikke helt hvad du mener med det :) ?
Altså, mit script gir da heller ikke muligheden for at bruge samme email adr. flere gange (altså dit punkt 2). For hvis email findes i forvejen, blir man smidt tilbage.
Prøv at se hvordan kimborg selv har stillet det op. Først tjekker den brugernavn findes, hvis det ikke findes tjekkes der for om emailen findes? Netop som mit script gør :-)
Ang "Prøv at se hvordan kimborg selv har stillet det op. Først tjekker den brugernavn findes, hvis det ikke findes tjekkes der for om emailen findes? Netop som mit script gør :-)":
Hvis det er "1 bruger per email adresse", og kimborg ikke kender til "OR" i SQL'en, ville han helt sikkert lave det i 2 trin, som både I begge har gjort.. hvilken så ikke er nødvendigt, og spild af tid/ressourcer på serveren.
Hvis man kan optimere noget, er der ikke nogen grund til at ikke at gøre det, med mindre at det har en negativ effekt.
Jeg ville gøre som surfer, og kun lave et opkald til databasen. Hvis man vil kontrollere om det er brugernavnet eller emailen der blev fundet et match på, så er det jo blot at lave en sammenligning:
If rs("username") = username Then 'brugernavnet findes Else 'email findes End If
Hent alle poster hvor: -- brugernavn (i databasen) = brugernavn (det brugeren har indtastet) eller -- emailadresse (i databasen) = emailadresse (det brugeren har indtastet)
Hvis en af de indtastede værdier eksisterer i database, returneres hele rækken, der jo indeholder navn og email adresse. - brugernavn: Kolonnen i databasen hedder "brugernavn", og aflæses med rs("brugernavn") - emailadresse: Kolonnen i databasen hedder "email", og aflæses med rs("email")
strSQL = "Select * From brugere Where brugernavn = '" & brugernavn & "' OR Email =
set rs = Conn.Execute(strSQL)
Hvis brugernavn ELLER emailadresse eksisterer, vil der jo være mindste 1 post! Hvis der er mindst 1 post, er vi hverken ved "Before Of File" eller "End Of File", da vi så står ved posten (den som eksisterer i databasen) if not (rs.bof or rs.eof) then
' der er en post = brugerenavn eller emailadresse eksisterer allerede
Da der er mindst 1 post i databasen, fanger vi brugernavnet her. Vi sammenligner navnet i databasen, med det ønskede brugernavn (det brugeren indtastede) if rs("brugernavn") = brugernavn then Brugernavnene er ens = det brugernavn brugeren øsnker at bruge, eksisterer allerede i databasen ' brugernavn eksisterer allerede else Hvis brugernavnen IKKE er ens, er det fordi brugernavnene er forskellige, MEN emailadresserne er de samme! ' emailadressen eksisterer allerede end if
else
Da betingelsen "not (rs.bof or rs.eof)" ikke blev opfyldet, betyder det at de indtastede oplysninger IKKE blev fundet, hvilket betyder at det er et nyt brugernavn og en ny emailadresse ' hverken brugernavn eller emailadresse eksisterer allerede = opret ny bruger
06/05-2006 19:56:42 - Du kalder mit script for "primitivt" i.. 06/05-2006 20:42:40 - Så forklarede jeg scriptet, og kalder det "effektivt" 06/05-2006 21:06:20 - Du misforstår/forstår ikke ideen med min kode.. sikkert pga manglende kode 06/05-2006 21:20:18 - Jeg forklarer logikken bag meningen med opslag i databasen = "validering" 06/05-2006 21:35:36 - Du forstår stadigvæk ikke ideen med min kode 06/05-2006 21:43:02 - Jeg prøver igen på at forklare logikken 06/05-2006 22:41:45 - morhan bekræfter min ide og skriver den manglende kode 07/05-2006 15:47:46 - Nu forstår du koden 07/05-2006 20:03:09 - Jeg var/er interesseret om det er tilladt at have flere brugernavn på emailadressen -- ja det er overflødigt, men hvis svaret er "nej", kan man nøjes med min kode 07/05-2006 20:17:06 - Du bekræfter forrige statement 07/05-2006 20:20:58 - Jeg skriver at man derfor lige så godt kunne bruge min kode i stedet.. 07/05-2006 20:21:50 - Nu har du glemt ideen med min kode, som du havde forstået i 07/05-2006 15:47:46 07/05-2006 20:26:10 - Jeg skriver endnu et eksempel, som er mere funktionnelt end tidligere 07/05-2006 20:33:39 - Du skriver en uforståelig kommentar/spørgsmål 07/05-2006 20:42:03 - Jeg skriver en forklaring på hvordan scriptet virker 07/05-2006 21:05:26 - Du spørger mig om hvad det er jeg "blir ved med at køre i" 07/05-2006 21:XX:XX - Nu: Det jeg lige har skrevet :-)
Du har misforstået mig hele vejen igennem. Jeg har godt forstået meningen med dit script, men det jeg ikk forstår, er din kommentar kl. 07/05-2006 20:03:09 ?
Ej, altså, jeg er slet ikke med.. Jeg har arbejdet AALT for lang tid nu her og sovet AAALT for lidt i nat, så jeg melder mig ud nu, inden det går helt galt det her :D
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.