04. februar 2006 - 18:29Der er
32 kommentarer og 1 løsning
en funktion som ikke laver forskel på store og små bogstaver
jeg skal bruge en funktion til mit loginsystem som ikke laver forskel på store og små bogstaver. Jeg skal bruge det fordi at hvis en bruger fx opretter sig med et navn som starter med stort bogstav, og senere hen prøver at logge ind med lille forbogstav, så siger den forkert brugernavn og/eller kodeord.
Når du gemmer (og henter) brugernavne og adgangskoder kan du evt. bare omdanne alle store bogstaver til små, fx: $brugernavn = strtolower($brugernavn);
Jeg kom i tanke om det samme som gizmo skriver, så det er lige præcis det jeg har gjort. Men wicez svar var dog også godt, og virkede sikkert. Så derfor læg et svar, du var hurtigst ;-)
ups, du har jo allerede lagt et svar hehe, nå men det er accepteret!
Synes godt om
Slettet bruger
04. februar 2006 - 19:10#8
Tak for point :)
Din metode løser på ingen måde problemet - det omgår problemet. En bruger der skriver sit nick som Wicez, vil herefter kun logge ind med wicez (Dette gælder dog kun, hvis du ikke bruger det direkte i din SQL (SQL er case insensitive)). En hashing af kodeordet / brugernavnet vil dog ødelægge forholdet mellem store / små bogstaver, da disse behandles forskelligt heri.
jeg forstår ikke helt hvad du mener med det du sagde om hashing, men med hensyn til det med at det ikke løser problemet er det ikke rigtigt. Jeg gør sådan her:
hvis man opretter en bruger ved navn JeNs så bliver det rettet til jens og jeg gør brugeren opmærksom på det. Når man så logger ind, så er det lige meget om man skriver Jens,jens,JENS,jENS,jEnS eller hvad man nu skriver så bliver man logget ind som den korrekte bruger - nemlig jens. Hvad er der ukorrekt ved det? :-)
forresten så har jeg også altid hørt at når man arbejder med mysql så er det ikke case sensitive, men det er det åbenbart :S for den logger kun en ind hvis man har skrevet det PRÆCIS som det står i databasen.
Synes godt om
Slettet bruger
04. februar 2006 - 19:55#10
Når du så skal outputte dit brugernavn, bliver han vist som jens og ikke JeNs..
Og det er muligvis fordi du har hashet[1] dit kodeord.
Hvis jeg generelt havde 1eE7sp3Ak som brugernavn(prøver at gætte mig til, hvad du laver for en hjemmeside :o)), ville jeg bestemt gerne have vist samme brugernavn på listen over brugere. Og som sagt: SQL er case-insensitive!
Jeg vil sige det er pænere at bruger ucwords(); i stedet for strtolower(); Men du skal stadig huske at bruge det både når du opretter og når du logger ind :-)
jo men mit problem er at jeg ligesom wicez siger ved at sql/mysql er case-insensitive, men det tyder på at alt på min apache server siger at det ikke er.
Jeg er i et stort problem lige nu. Jeg er heller ikke glad for strtolower løsningen men altså... I mit tilfælde er sql case-sensitive.. det var det dog ikke før, og jeg har IKKE pillet ved php.ini eller andre php instillinger.. Hvad kan jeg så have gjort ?!
Synes godt om
Slettet bruger
04. februar 2006 - 21:34#19
webstuff det giver ingenlunde menig det du skriver.
og for det andet, leder du nok efter ucfirst(), da ucwords omdanner alle små forbogstaver store.
for det tredje, :), er den mest optimale - hvis man absolut vil genere sine besøgende - at smide en strtolower indeni: ucfirst(strtolower($foo));
Synes godt om
Slettet bruger
04. februar 2006 - 21:34#20
-aco- Du blander php og SQL sammen.. SQL er case-insensitive - php er meget følsom heroverfor. :)
Hvordan gør man så at det er case-insensitive ? og forresten.. jeg bruger surftown som host, kan jeg godt ændre det personligt for mit site ? hvis ikke, er der så nogle som ved om deres instillinger for mysql er sat til case-insensitive ?
Synes godt om
Slettet bruger
04. februar 2006 - 21:37#22
Jeg ved ikke hvordan du ændrer det. Prøv at spørge google :)
Til gengæld ved jeg, at du sagtens kan sammenligne case-insensitive
SELECT id FROM users WHERE LOWER(username) = '". strtolower($_POST['username']) ."'"
Finder hvilke brugere der hedder det samme. Den omdanner strenge til små bogstaver, og derefter sammenligner $_POST['username'] (små bogstaver, også) med det nyomdannede felt i tabellen.
Jeg har ikke gået så meget op i sikkerhed og syntax i eksemplet, det skal blot illustrere min pointe.
Synes godt om
Slettet bruger
05. februar 2006 - 17:42#33
Ja. Det er hele idéen med det.. Det er ligegyldigt om du bruger php's eller SQL's strto-/lower funktion
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.