/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Login og dobbelte fornavne ?
Fra : Jakob Munck


Dato : 27-11-03 10:45

Jeg arbejder på en site (www.forfatterkvarteret.dk), hvor brugerne skal
registrere sig og logge sig ind. Navnene registreres som fornavn og
efternavn og to felter i en tabel. Men nogle af brugerne har tre-delte navne
(f.eks. Hans Henrik Olsen) og så skriver de "Hans Henrik" ind i feltet som
fornavn.

Når brugerne så logger sig ind, bliver de testet på fornavn og adgangskode,
men det er ikke sjældent at de bliver afvist, hvis de har dobbelte fornavne,
selv om de - efter hvad de siger - skriver både navn og adgangskode rigtigt.
Jeg går ud fra at det er noget med at man ikke så godt kan teste på et
dobbelt ord, med et tomt mellemrum.

Nu er spørgsmålet så, hvad er løsningen?

1. Skal man diktere at alle dobbelte fornavne skal skrives med underscore
mellem ordene, f.eks. "Hans_Henrik"? (det synes nogle brugere ikke ser pænt
ud)

2. Skal man lave tre felter til navne (første fornavn, andet fornavn,
efternavn)? (det ser ikke kønt ud og skaber forvirring hos brugere med
enkelt fornavn)

3. Kan/skal man kode sådan, at der i virkeligheden kun testes på det første
fornavn, for brugere der har to fornavne. Altså giver det det samme resultat
om brugeren skriver Hans Henrik, Hans Honrig, Hans XXX eller bare Hans?

Hvad er den rigtige og den bedste løsning?

v.h.
Jakob Munck



 
 
Allan Schuster Bach (27-11-2003)
Kommentar
Fra : Allan Schuster Bach


Dato : 27-11-03 10:58

> Når brugerne så logger sig ind, bliver de testet på fornavn og
adgangskode,
> men det er ikke sjældent at de bliver afvist, hvis de har dobbelte
fornavne,
> selv om de - efter hvad de siger - skriver både navn og adgangskode
rigtigt.
> Jeg går ud fra at det er noget med at man ikke så godt kan teste på et
> dobbelt ord, med et tomt mellemrum.

Hvorfor ikke bare, fjerne alle mellemrum, så Hans Henrik Hansen bliver til
HansHenrikHansen

Måske kunne det så også lige være en ide, at lave brugernavnet om til små
bogstaver, så der kommer til at stå hanshenrikhansen

Bach



pepss (27-11-2003)
Kommentar
Fra : pepss


Dato : 27-11-03 10:59


"Jakob Munck" skrev
> Navnene registreres som fornavn og
> efternavn og to felter i en tabel. Men nogle af brugerne har tre-delte
navne
> (f.eks. Hans Henrik Olsen) og så skriver de "Hans Henrik" ind i feltet som
> fornavn.
>
> Når brugerne så logger sig ind, bliver de testet på fornavn og
adgangskode,
> men det er ikke sjældent at de bliver afvist, hvis de har dobbelte
fornavne,
> selv om de - efter hvad de siger - skriver både navn og adgangskode
rigtigt.
> Jeg går ud fra at det er noget med at man ikke så godt kan teste på et
> dobbelt ord, med et tomt mellemrum.
>
> Nu er spørgsmålet så, hvad er løsningen?

jeg ved ikke om det kan gøre noget om der er et mellemrum eller ej men du
kan da prøve med en Replace noget alá

strnavn = <det navn der bliver indtastet>
strnavnudenmellemrum = Replace(strnavn," ","_")

det skal du jo så gøre både når de opretter sig og logger ind

jeg ved ikke om det virker men det var da en ide

--
pepss
den ordblinde der prøver at blive web-designer
www.cafe-flirt.dk
www.team-blitz.dk



Chrisser (27-11-2003)
Kommentar
Fra : Chrisser


Dato : 27-11-03 11:34

Jakob Munck wrote:
> Når brugerne så logger sig ind, bliver de testet på fornavn og
> adgangskode, men det er ikke sjældent at de bliver afvist, hvis de
> har dobbelte fornavne, selv om de - efter hvad de siger - skriver
> både navn og adgangskode rigtigt. Jeg går ud fra at det er noget
> med at man ikke så godt kan teste på et dobbelt ord, med et tomt
> mellemrum.
>
> Nu er spørgsmålet så, hvad er løsningen?

Hvordan ser din test på fornavn ud og hvad er din database ?

Mvh
Chrisser



Jens Gyldenkærne Cla~ (27-11-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-11-03 12:30

Jakob Munck skrev:

> Når brugerne så logger sig ind, bliver de testet på fornavn og
> adgangskode, men det er ikke sjældent at de bliver afvist,
> hvis de har dobbelte fornavne, selv om de - efter hvad de
> siger - skriver både navn og adgangskode rigtigt. Jeg går ud
> fra at det er noget med at man ikke så godt kan teste på et
> dobbelt ord, med et tomt mellemrum.

Man kan sagtens tjekke på et ord med mellemrum. Spørgsmålet er
hvordan du udfører dit tjek - og hvordan du lægger navnene _ind_ i
databasen.

Hvis "Hans Henrik Hansen" fx i din database står som

   fornavn, efternavn
   "Hans", "Henrik Hansen"

- og du leder efter fornavnet "Hans Henrik", så vil du ikke få det
ønskede resultat.

Noget helt andet er så at metoden med at bruge fornavn som login er
usikker - for hvad sker der når du får to personer med samme
fornavn? Jeg vil foreslå at du opretter et særskilt felt til
brugernavnet. Det kan godt - som udgangspunkt - være det samme som
fornavnet, men det vigtige er at du har mulighed for at ændre det.

Der er ingen grund til at du skal registrere folk med andre navne
end deres egne, blot for at kunne lave unikke loginnavne.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jakob Munck (27-11-2003)
Kommentar
Fra : Jakob Munck


Dato : 27-11-03 16:42

Tak for svarene.

1. Databasen jeg anvender er Access og koden til at evaluere er denne:

SQL = "SELECT * FROM tbMedlemmer WHERE fornavn = '" &_
Replace(Request.Form("fornavn"), "'", "''" ) &_
"' AND password = '" &_
Replace(Request.Form("password") , "'", "''" ) & "'"

Set RS = Conn.Execute(SQL)

if RS.EOF or RS.BOF then
fornavn2 = Request.Form("fornavn")
password2 = Request.Form("password")
.......

2. Jeg ved at man godt kan evaulere på "Hans Henrik", men mine erfaringer
viser at det bliver genkendt hver anden gang og ikke genkendt hver anden.
Der er altså en usikkerhed, som brugerne ikke kan leve med. Årsagen til at
det er sådan, ved jeg ikke.

3. Jeg kunne måske bruge den metode at trække dobbelte navne sammen til
enkelte, så "Hans Henrik" bliver til "hanshenrik". Men hvordan er det nu
lige at man gør det???


v.h.
Jakob



Jakob Munck (27-11-2003)
Kommentar
Fra : Jakob Munck


Dato : 27-11-03 16:58

Flere overvejelser:

1. Metoden med at trække dobbelte navne sammen til enkelte ("Hans Henrik"
bliver til "hanshenrik") giver det problem, at når jeg skal lave udkrifter
fra databasen, så skal jeg jo have delt disse navne igen, og hvordan skal
databasen vide, at "hanshenrik" skal deles i to ord?

2. Metoden med at lave et egentligt brugernavn vil foreningen som siten
laves for ikke have. Man ønsker ikke at ligne et kontaktbureau, og vil kun
anvende brugernes rigtige navne.

3. At flere har samme fornavn gør ikke noget, da der testes på både fornavn
og password, så kun når kombinationen af fornavn og password er korrekt
godkendes brugeren.

4. Man kan godt lave "Hans Henrik" om til "Hans_Henrik" med noget replace
(Replace(strnavn," ","_")), inden navnet puttes i databasen, men stadig
mener jeg at det vil give en usikkerhed fordi nogle brugere måske kommer til
at skrive "Hans Henrik" i stedet, altså med 2 mellemrum, og derved ikke
bliver godkendt og bliver forvirrede.

5. Metoden med at forvandre det tredelte navn (Hans Henrik Olsen) således at
"Hans" kommer i et felt i databasen og "Henrik Olsen" i et andet felt, synes
jeg er interessant. Men jeg er ikke klog nok til at se, hvordan denne
ombytning kodes, når Hans Henrik er kommet ind i ét formfelt og Olsen i et
andet???

v.h.
Jakob
replaceAltså er jeg tilbage til det, at


strnavn = <det navn der bliver indtastet>
strnavnudenmellemrum =


v.h.
Jakob



Jakob Munck (27-11-2003)
Kommentar
Fra : Jakob Munck


Dato : 27-11-03 16:59

Flere overvejelser:

1. Metoden med at trække dobbelte navne sammen til enkelte ("Hans Henrik"
bliver til "hanshenrik") giver det problem, at når jeg skal lave udkrifter
fra databasen, så skal jeg jo have delt disse navne igen, og hvordan skal
databasen vide, at "hanshenrik" skal deles i to ord?

2. Metoden med at lave et egentligt brugernavn vil foreningen som siten
laves for ikke have. Man ønsker ikke at ligne et kontaktbureau, og vil kun
anvende brugernes rigtige navne.

3. At flere har samme fornavn gør ikke noget, da der testes på både fornavn
og password, så kun når kombinationen af fornavn og password er korrekt
godkendes brugeren.

4. Man kan godt lave "Hans Henrik" om til "Hans_Henrik" med noget replace
(Replace(strnavn," ","_")), inden navnet puttes i databasen, men stadig
mener jeg at det vil give en usikkerhed fordi nogle brugere måske kommer til
at skrive "Hans Henrik" i stedet, altså med 2 mellemrum, og derved ikke
bliver godkendt og bliver forvirrede.

5. Metoden med at forvandre det tredelte navn (Hans Henrik Olsen) således at
"Hans" kommer i et felt i databasen og "Henrik Olsen" i et andet felt, synes
jeg er interessant. Men jeg er ikke klog nok til at se, hvordan denne
ombytning kodes, når Hans Henrik er kommet ind i ét formfelt og Olsen i et
andet???

v.h.
Jakob



Jens Gyldenkærne Cla~ (27-11-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-11-03 21:54

Jakob Munck skrev:

> Flere overvejelser:

Allerførst: læs gerne min signatur. Du strukturerer dine svar meget
godt, men det er praksis på usenet at svare inline - altså mellem
mindre blokke af citater (med svar/kommentarer under spørgsmål). På
den måde er det lettere at se hvad andre har skrevet før og finde
baggrunden til at du skriver som du gør. Det betyder samtidig at du
ikke behøver at forklare hvad du svarer på - det vil fremgå af
citatet ovenfor.

> 1. Metoden med at trække dobbelte navne sammen til enkelte
> ("Hans Henrik" bliver til "hanshenrik") giver det problem, at
> når jeg skal lave udkrifter fra databasen, så skal jeg jo have
> delt disse navne igen, og hvordan skal databasen vide, at
> "hanshenrik" skal deles i to ord?

Du kunne evt. blot gøre det når du tjekker et login. Det vil sige
noget i retning af:

SQL = "SELECT * FROM brugere WHERE REPLACE(fornavn, ' ', '') = " &
   REPLACE(strFornavn, " ", "") & " AND password = " &
   strAdgangskode


(hvor strFornavn, hhv. strAdgangskode indeholder form-data tjekket
for sql-injection)


> 2. Metoden med at lave et egentligt brugernavn vil foreningen
> som siten laves for ikke have. Man ønsker ikke at ligne et
> kontaktbureau, og vil kun anvende brugernes rigtige navne.

Hm - sjov holdning. Som nævnt før kan det ellers laves næsten
transperant så fx kun "problembørn" (folk med dobbeltnavne) får et
brugernavn der er anderledes end deres eget fornavn.


> 3. At flere har samme fornavn gør ikke noget, da der testes på
> både fornavn og password, så kun når kombinationen af fornavn
> og password er korrekt godkendes brugeren.

Det gør bare sikkerheden ringere - specielt hvis folk kan vælge
deres egen adgangskode.


> usikkerhed fordi nogle brugere måske kommer til at skrive
> "Hans Henrik" i stedet, altså med 2 mellemrum, og derved ikke
> bliver godkendt og bliver forvirrede.

Hvis du vil sikre mod at folk skriver forkert, er det en større
opgave. Hvad så med folk der glemmer et tegn i adgangskoden, kommer
til at skrive et initial i stedet for mellemnavnet etc. - du kan
ikke sikre dig mod alt. Lær dine brugere at skrive et korrekt
brugernavn (også selv om du/I vælger at kalde det fornavn).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (27-11-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-11-03 22:00

Jakob Munck skrev:

> SQL = "SELECT * FROM tbMedlemmer WHERE fornavn = '" &_
> Replace(Request.Form("fornavn"), "'", "''" ) &_
> "' AND password = '" &_
> Replace(Request.Form("password") , "'", "''" ) & "'"

Det ser umiddelbart fint ud.


> 2. Jeg ved at man godt kan evaulere på "Hans Henrik", men mine
> erfaringer viser at det bliver genkendt hver anden gang og
> ikke genkendt hver anden.

Med samme navn og samme indtastning? Det lyder _meget_
usandsynligt. Kan du give et eksempel på et navn der har opført sig
således?

> Der er altså en usikkerhed, som brugerne ikke kan leve med.
> Årsagen til at det er sådan, ved jeg ikke.

Jeg ville finde årsagen og gøre noget ved den, i stedet for at lede
efter alternative løsninger. Der er intet problem i at arbejde med
navne indeholdende mellemrum i databaser - men der kan godt gemme
sig en mærkelig fejl et sted i dit system.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jakob Munck (28-11-2003)
Kommentar
Fra : Jakob Munck


Dato : 28-11-03 06:50


> > 2. Jeg ved at man godt kan evaulere på "Hans Henrik", men mine
> > erfaringer viser at det bliver genkendt hver anden gang og
> > ikke genkendt hver anden.
>
> Med samme navn og samme indtastning? Det lyder _meget_
> usandsynligt. Kan du give et eksempel på et navn der har opført sig
> således?
>

1. Jeg gætter på at en del af forklaringen er den, at brugeren ikke helt
præcis kan se hvor mange mellemrum der er mellem hans 2 navne, og derfor
laver fejl. Ellers ved jeg ikke hvad årsagen er, men jeg gider bare ikke
spilde supporttid på folk med dobbelte navne som klager over at de bliver
afvist ved login.

2. Eksempel på et navn, der klager over at blive afvist, og som jeg selv har
testet til at blive afvist ca. hver anden gang: Knud Henrik

3. Den kode jeg anvender til at hive navnet ud af databasen og ind i login
feltet, så det er klar når brugerne næste gang vil logge sig ind, er denne;

A. Sådan gøre fornavn og password til cookies:

fornavn = request.form("fornavn")
password = request.form("password")

Response.Cookies("forfatterkvarteret")("fornavn") = fornavn
Response.Cookies("forfatterkvarteret")("password") = password


B. Sådan hentes cookierne ind i form-feltet så navnet er klar til ny login:

fornavn = Request.Cookies("forfatterkvarteret")("fornavn")
password = Request.Cookies("forfatterkvarteret")("password")

Det virker godt for alle andre bruger end de med dobbelte fornavne. Er der
noget galt i denne kode?

v.h.
Jakob



Jens Gyldenkærne Cla~ (28-11-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-11-03 10:15

Jakob Munck skrev:

> 1. Jeg gætter på at en del af forklaringen er den, at brugeren
> ikke helt præcis kan se hvor mange mellemrum der er mellem
> hans 2 navne, og derfor laver fejl.

Jamen der er da ingen grund til at have andet end præcis ét
mellemrum mellem ord (hhv. navne). Hvis du sørger for at navnene
oprettes korrekt, så kan jeg ikke se problemet i at forvente at
dine brugere skriver "Hans Henrik" og hverken "Hans Henrik" eller
"Hans Henrik" (m. hhv. to og tre mellemrum).


> 2. Eksempel på et navn, der klager over at blive afvist, og
> som jeg selv har testet til at blive afvist ca. hver anden
> gang: Knud Henrik

Godt. Hvordan står posten i databasen (kig direkte i tabellen). Er
der ekstra mellemrum i midten af navnet, før navnet eller efter
navnet? Med andre ord - hvad indeholder feltet fornavn i posten med
Knud Henrik helt præcist (marker feltet, kopier og sæt værdien ind
mellem et par anførselstegn: "")

Hvis navnet står rigtigt - dvs. "Knud Henrik"
(Knud[mellemrum]Henrik), så prøv at logge ind et par gange. Skriv
navnet korrekt og se om du kommer ind eller ej.


> 3. Den kode jeg anvender til at hive navnet ud af databasen og
> ind i login feltet, så det er klar når brugerne næste gang vil
> logge sig ind, er denne;

Ah - det er måske her hunden er begravet. Indtil nu troede jeg at
problemet var at der ikke kunne logges ind selv om man skrev det
rigtige (dobbelt)navn - men her kan det jo lige så godt være et
problem med cookie-transporten.

Umiddelbart ser det dog stadig fint ud - men du har ikke vist
hvordan du udfylder formularen med værdierne fra dine cookies. Her
kan der evt. gemme sig et mellemrumsproblem. Under alle
omstændigheder skal du dele din fejlfinding i to dele.

Databaselogin: Givet det samme par af adgangsoplysninger
(navn/kode), får du så samme resultat (login/ikke login) hver gang?
(slå evt. cookies fra for at tjekke dette). Er der navne der står i
databasen, men ikke virker på loginsiden?

Cookies: Sammenlign de værdier du giver siden (navn/kode) med de
værdier den skriver når du besøger siden næste gang.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jakob Munck (28-11-2003)
Kommentar
Fra : Jakob Munck


Dato : 28-11-03 16:27

OK, jeg siger tak til jer der har svaret på mit spørgsmål. Som første akutte
løsning har jeg valgt at tvinge brugerne til at sætte underscore mellem
dobbelte fornavne. På længere sigt må jeg eksperimentere med min kode, og se
om der er fejl her.

Tak for hjælpen.

v.h.
Jakob



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste