inloggen - Username niet hoofdlettergevoelig

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Erik Swinkels

Erik Swinkels

20/07/2010 18:08:48
Quote Anchor link
heej,,

ik had een vraagje,

Ik heb een redelijk goed lopende site, met inlog systeem. Alleen is dat systeem hoofdlettergevoelig. Nu wil ik dat de username bij het inloggen niet meer hoofdletter gevoelig is.

Hiervoor zijn een aantal opties:
A: Sta geen hoofdletters toe, en zet strolower() om de $_POST['username'] heen
Zou inderdaad het probleem verhelpen, maar in dit geval, geen optie
B: Sta wel hoofdletters toe bij registratie, en zet in de tabel 2 waardes, 1 gewoon de $_POST['username'] en een met strolower() eromheen. Bij het inloggen gebruik je die met strolower(), en op de rest van de site echo je gewoon die wel met hoofdletters
Gaat 'm ook niet worden ;)
C: gewoon met hoofdletters laten registreren, en maar 1 waarde in de tabel zetten, en vervolgens zoiets te doen:
$query="select * from users where LOWER(name) = '".strolower($_POST['username'])."'";

Deze optie zou ik graag zien.. maar hoe werkt hij?

Dus hoe moet ik optie c werkend krijgen? Ik snap dat even niet helemaal :)
xx
 
PHP hulp

PHP hulp

20/04/2024 04:59:45
 
Jelmer -

Jelmer -

20/07/2010 18:40:04
Quote Anchor link
Standaard gebruikt MySQL een case insensitive karakterset voor het vergelijken, maar dat kan je per database en per veld veranderen. Dat zegt overigens niets over hoe de data wordt opgeslagen, het wordt alleen gebruikt bij het vergelijken.

Dus wat is de karakterset die je gebruikt? Als die niet eindigt met 'cs' of 'bin', zou het al goed moeten gaan. Anders kan je overwegen de karakterset te veranderen voor die kolom, of om in je query iets a la WHERE name COLLATE utf8_general_ci = $username. Ik vraag me alleen af wat dat voor gevolgen dat heeft voor de snelheid. Een functie loslaten op een kolom wanneer je zoekt is meestal een slecht idee omdat MySQL dan niet meer een index kan gebruiken, en iedere row in je tabel door die functie moet halen en moet vergelijken.

(Wat de karakterset is kan je gemakkelijk zien aan je CREATE TABLE statement: probeer eens SHOW CREATE TABLE users)
 
Erik Swinkels

Erik Swinkels

21/07/2010 11:58:35
Quote Anchor link
Ahh.. ik heb het gevonden. Ik had de collum "name" als "Varbinary" opgeslagen. Heb ik veranderd naar "varchar" en het werkt perfect :)

Toch bedankt Jelmer rrrr :)
x
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.