login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Hoofdlettergevoeligheid bij inlog systeem

Offline Babak - 16/08/2007 21:11 (laatste wijziging 18/08/2007 17:13)
Avatar van BabakMySQL interesse Beste mensen,

ik heb een inlog systeem gemaakt, alleen nu is de username waar iemand mee inlogt ook hoofdletter gevoelig. Weet iemand hoe dit komt?!

http://plaatscode.be/6319/

19 antwoorden

Gesponsorde links
Offline marten - 16/08/2007 21:12
Avatar van marten Beheerder Zonder code kunnen we niks.

www.plaatscode.be
Offline Babak - 16/08/2007 21:13
Avatar van Babak MySQL interesse http://plaatscode.be/6319/
Offline timmie_loots - 16/08/2007 21:14 (laatste wijziging 16/08/2007 21:15)
Avatar van timmie_loots PHP gevorderde Dat komt omdat "DiT" anders is dan "dit". Als je iets hoofdletterongevoelig wilt vergelijken kun je ze allebei naar lowercase omzetten, dat doe je zo:

  1. <?php
  2.  
  3. $gebruikersnaam = strtolower($gebruikersnaam);
  4.  
  5. ?>


Als je dit in SQL wilt doen kan dat met de SQL functie LOWER(), zo:

  1. SELECT * FROM gebruikers WHERE LOWER(gebruikersnaam) = LOWER('Babak')


EDIT: In jouw voorbeeld zou het dus dit zijn: http://plaatscode.be/6320/
Offline Babak - 16/08/2007 21:15
Avatar van Babak MySQL interesse Heb ik toegepast, maar werkt nog steeds niet.. denk dat het aan mijn login ligt.
Offline timmie_loots - 16/08/2007 21:18
Avatar van timmie_loots PHP gevorderde Kijk je ook even naar mijn edit? Geloof dat hij wellicht niet echt opvalt zo.
Offline Babak - 16/08/2007 21:29
Avatar van Babak MySQL interesse Hmm, kijk, eerder gebruikte ik dat ook nooit.. en had ik nooit last van hoofdlettergevoeligheid, ik vind het ook niet echt prettig om te gebruiken. Zoals ik het nu doe vind ik het prima, alleen snap ik niet waarom hij nu de USERNAME ook nog eens hoofdlettergevoelig neemt :S.
Offline Simon - 16/08/2007 22:58
Avatar van Simon PHP expert Op welk veldtype staat je kolom in de database? varchar?
Offline Thomas - 17/08/2007 12:23
Avatar van Thomas Moderator Euh, username- en passwordchecks zouden toch hoofdlettergevoelig moeten zijn? Sla ze BINARY op, dan zijn alle vergelijkingen in je query ook case-sensitive.

Als je een string vergelijkt met een kolomtype dat case-sensitive is, dan is de vergelijking automatisch case-sensitive.
Offline Babak - 18/08/2007 08:36 (laatste wijziging 18/08/2007 10:47)
Avatar van Babak MySQL interesse @simon, ja varchar...

Kan iemand mij aub helpen? Dit is naar..
Offline ikki007 - 18/08/2007 13:03
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
Zoals timmie_loots zei alles lowercasen moet werken want dan zijn er geen hoofdletters meer.
Offline Babak - 18/08/2007 13:05
Avatar van Babak MySQL interesse Nee, dat wilde ik juist niet. omdat ik dat nooit gebruikte.. en dat niet fijn vind, maar nu doet hij opeens de Username ook hoofdlettergevoelig.. maar niet tijdens het inserten, tijdens het inloggen..
Offline WumTol - 18/08/2007 13:37 (laatste wijziging 18/08/2007 13:38)
Avatar van WumTol PHP beginner http://nl3.php.net/strcmp

Deze functie is hoofdletter gevoelig.
Offline Babak - 18/08/2007 13:41
Avatar van Babak MySQL interesse Jullie snappen mij niet, of ik snap jullie niet.

Als ik inlog.. moet ik met hoofdletters inloggen, dus een naam is hoofdlettergevoelig. .bij mij word dat dan zo als ik inlog: Babak

ik kan niet gewoon babak in typen..

hoe komt dit ?
Offline BigBug - 18/08/2007 14:15
Avatar van BigBug PHP expert Heel simpel; php is daar gevoelig voor

Wat je kan doen, het is wel omslachtig; bij het ophalen van de users uit je database kan je strtolower(); om de username gooien, hetzelfde doe je bij de input en dan kan het wel.
Offline Babak - 18/08/2007 15:33 (laatste wijziging 18/08/2007 15:35)
Avatar van Babak MySQL interesse Maar eerder kon dat altijd wel.. en nu opeens niet.. met een andere login systeem.

btw: ook al doe ik strtolower dan lukt het nog niet.. het ligt echt aan mijn login, of de functie die ik over de username en password gooi.
Offline bertenz - 18/08/2007 17:10 (laatste wijziging 18/08/2007 17:18)
Avatar van bertenz HTML beginner De manier die BigBug aandraagd is inderdaad de manier om de hoofdlettergevoeligheid te omzeilen. Dit komt namelijk doordat strcmp de 2 strings die vergeleken moeten worden van elkaar aftrekt (elke letter heeft namelijk een waarde). Zo heeft de "A" als waarde 65 en "a" 97. Als je dus de 2 strings "abcde" en "Abcde" met elkaar vergelijkt, is er een verschil van 32 (plus of min, ligt aan de volgorde in strcmp) en zijn de strings dus niet aan elkaar gelijk.
Op deze manier werkt de strcmp in C in ieder geval. Ik neem aan dat die in PHP er niet veel van zal verschillen...

Ps. voor de duidelijkheid: als de 2 strings aan elkaar gelijk zijn, moet de uitkomst van strcmp dus 0 zijn, dus " strcmp(..,..) == 0 " geeft aan dat ze WEL gelijk aan elkaar zijn, wordt blijkbaar nogal eens verward ...  

Edit2: Sorry ik had inderdaad niet naar jouw stuk code gekeken, maar omdat ik in een van de reacties het verhaal over strcmp zag, dacht ik dat die er wel in zou zitten. Maar als ik naar jouw code kijk, lijkt het mij heel logisch dat het hoofdlettergevoelig is, dus misschien moet je even naar je oude functie kijken. Misschien dat er daar een manier staat om het hoofdletterongevoelig te maken.
Offline Babak - 18/08/2007 17:12 (laatste wijziging 18/08/2007 17:19)
Avatar van Babak MySQL interesse dit gaat echt de verkeerde kant op volgens mij..

kijk: normaal had ik dit probleem nooit, ik gebruik een nieuwe functie voor de username en password en een nieuwe login.php en BAM kheb opeens hoofdlettergevoelige username.. wat ik niet wil.

heeft iemand uberhaupt wel naar mijn index.php gekeken!?

edit: @ hierboven, hoezo is het logisch dat het hoofdlettergevoelig is?
Offline bertenz - 18/08/2007 17:25
Avatar van bertenz HTML beginner Het lijkt mij logisch omdat ik vlak van tevoren had gekeken of het iets uitmaakte bij een normale query (geen bijzondere dingen) en daar maakte het wel iets uit, dus dan lijkt het mij logisch dat het bij jouw code ook zo is ...
Offline Babak - 18/08/2007 17:28
Avatar van Babak MySQL interesse Erm, ligt het niet gewoon aan waar ik kijk of het dezelfde username en passwords zijn van de database? OMG, niemand die me kan helpen:P en dit lijkt me toch echt wel simpel..
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.203s