Avatar billede cpfrande Nybegynder
31. marts 2003 - 20:43 Der er 21 kommentarer og
1 løsning

a eller A ?

Hey !

Jeg har et lille problem, som jeg ikke selv helt kan huske løsningen på.

Jeg har lavet et logind-system, og mener at det burde være ligegyldigt om brugeren skriver med store eller små bokstaver i brugernavn-feltet.
Men når jeg i min MySQL tjekker om brugeren findes (brugernavnet i MySQL'en er f.eks. frande og brugernavnet brugeren indtastede i feltet er f.eks. FraNdE) så skriver den at brugernavnet ikke kan findes.

Hvordan får jeg min MySQL opkald til at hente brugernavnet og være ligeglad med om det er store eller små bokstaver?

En lille kode f.eks.:

<phpkode>
require("mysql.php");

$res_logind = mysql_query("SELECT brugernavn FROM brugere WHERE brugernavn='$brugernavn'");
$db_logind = mysql_fetch_array($res_logind);

if ($brugernavn != $db_logind[brugernavn] || mysql_num_rows($res_logind) == "0" || !$brugernavn) {
print"Brugernavn ikke fundet.";
exit;
} else {
print"Brugernavn fundet";
}
</phpkode>

Nogen forslag til hvad der kan gøres for at bokstavernes størrelse (a eller A) er total ligegyldig?

| frande
Avatar billede soreno Praktikant
31. marts 2003 - 20:45 #1
Når du opretter en bruger så konverter brugernavnet til lowercase.
Så har du altid samme grundlag når du skal søge (søg altid efter lowercase..).
Avatar billede cpfrande Nybegynder
31. marts 2003 - 20:48 #2
soreno:
Dette har jeg brugt før - men da det er til en del af et community ønsker brugere at have en lille blanding af store og små bokstaver.
Dette vil jeg også gøre muligt - og kan ikke se et direkte problem.

Derved kunne brugernavnet i MySQL'en f.eks. også være FrAndE og brugerens input i logind være frande.

Størrelsen på bokstaverne skal være total ligegyldig.

- håber du forstår.

| frande
Avatar billede soreno Praktikant
31. marts 2003 - 20:53 #3
En løsning kunne være at tilføje en en ekstra kolonne til din tabel hvor den ekstra klonne indeholder brugernavn i lowercase.

Så kan du f.eks. gøre noget ala:
SELECT brugernavn FROM brugere WHERE brugernavn_low='$brugernavn'"
Avatar billede netsmurf Nybegynder
31. marts 2003 - 20:56 #4
Prøv at skrive til din udbyder. Jeg bruger selv php og mysql til samme formål og her virker det med store og små bogstaver. Ingen problemer der.
Avatar billede cpfrande Nybegynder
31. marts 2003 - 20:56 #5
Er der ikke andre løsninger, sådan den er ligegyldig om det den henter er FranDe eller frande når variablen den finder med er FRanDE ?

| frande
Avatar billede cpfrande Nybegynder
31. marts 2003 - 21:06 #6
Hey !

Jeg har fundet ud af at det er pga. min IF-sætning - omkring ($brugernavn != $db_logind[brugernavn])

Hvordan laver jeg sådan min IF-sætning er ligeglad med om det er a eller A ?
Mener jeg man kan - men kan ikke finde noget om if-sætninger på php.net :(

| frande
Avatar billede sukos Juniormester
31. marts 2003 - 21:07 #7
du kan vel blot lave det hele strtolower?

$res_logind = mysql_query("SELECT brugernavn FROM brugere WHERE brugernavn='$brugernavn'");
$db_logind = mysql_fetch_array($res_logind);

if (strtolower($brugernavn) != strtolower($db_logind[brugernavn]) || mysql_num_rows($res_logind) == "0" || !$brugernavn) {
print"Brugernavn ikke fundet.";
exit;
} else {
print"Brugernavn fundet";
}
Avatar billede schaefner Juniormester
31. marts 2003 - 21:09 #8
Du burde vel kunne gøre sådan:
if (strtolower($brugernavn) != strtolower($db_logind[brugernavn])) {
Avatar billede cpfrande Nybegynder
31. marts 2003 - 21:10 #9
Rigtigt, kan jeg "sku" da bare gøre... :)

Men vil gerne hører om det _kan_ løses på andre måder - eller om I kan give mig et link til php.net hvor man kan læse om if-sætningerne og dens tegn-sætning (!= , == , > , < , osv.)

| frande
Avatar billede schaefner Juniormester
31. marts 2003 - 21:10 #10
der var sukos lige en tand hurtigere ;o)
Avatar billede schaefner Juniormester
31. marts 2003 - 21:12 #11
Avatar billede schaefner Juniormester
31. marts 2003 - 21:13 #12
men der er jo ikke så meget nyt at læse der ;)
Avatar billede cpfrande Nybegynder
31. marts 2003 - 21:15 #13
Hey schaefner, nej, har du ret i - ikke meget nyt der :)

Jeg takker mange gange for jeres forslag.
Sukos, hvis du vil lave et svar får du dine fortjente points ;)

Jeg takker for hjælpen gutter !

| frande
Avatar billede nicklasb Nybegynder
31. marts 2003 - 21:16 #14
kan du ikke bare tjekke på:

SELECT brugernavn FROM brugere WHERE lower(brugernavn) = lower('$brugernavn')

og så bare have det "rigtige" navn i databasen. Altså det med store og små bogstaver?? Så kan du jo printe det rigtige ud og aligevel tjekke for et "forkert"..
Avatar billede sukos Juniormester
31. marts 2003 - 21:16 #15
!
Avatar billede sukos Juniormester
31. marts 2003 - 21:17 #16
printe rigtigt ud-

det er vel så post inputtet?
Avatar billede cpfrande Nybegynder
31. marts 2003 - 21:18 #17
nicklasb:
Du kan rette i de felter du henter i din MySQL.

Takker for hjælpen alle sammen ;)

Debat hermed lukket.

| frande
Avatar billede nicklasb Nybegynder
31. marts 2003 - 21:20 #18
forstår ikke lige hvad det er du skriver.. Men jeg kan nu godt få det til at virke.. Nu tjekker den bare hvor brugernavn i databasen er med små, og det samme med brugernavn i variablen..

men ok.. du gidder åbenbart ikke give det et forsøg og tjekke om det virker.. eller?? Jeg er også lige glad.. ville bare hjælpe med en lidt kortere version hvis det nu endelig var..
Avatar billede cpfrande Nybegynder
31. marts 2003 - 21:28 #19
nicklasb:
Jeg føler det at du tager det som en fornærmelse at jeg ikke prøver dit.
Dit forslag er ikke hurtigere end de andres, forskellen ligger i hvor jeg placerer mit lower().

Men jeg har fundet løsning og takker stadig for alle løsningsforslag !

| frande
Avatar billede nicklasb Nybegynder
31. marts 2003 - 21:30 #20
nej nej.. er skam slet ikke fornærmet.. :D
Syntes nu bare den var en smule kortere, og lettere end dem de andre er kommet med, og fatter i sådanne tilfælde at man ikke bare tager imod..
Avatar billede sukos Juniormester
31. marts 2003 - 21:31 #21
by the way:
bruger aldrig selv (har heller ikke kikket på det) måden med at forkorte php-koden.

kan li' "dummy måden" med at man "kan læse" hvad man skriver.
Avatar billede cpfrande Nybegynder
31. marts 2003 - 21:32 #22
nicklasb:
Hehe, jeg sagde tak for forslaget - ikke at det ikke kunne bruges.
Men jeg har jo forklaret at det andet var ligeså let for mig ;)

Men tak for dit forslag.

| frande
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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