In mijn loginsysteem wordt blijkbaar geen onderscheid gemaakt tussen hoofd- en kleine letters.

Bvb. indien in de db 'PHP' is opgeslagen als passwoord, dan kan men inloggen met 'PHP', maar ook met 'php', 'Php', enz.

Hoe los ik dit op?
1e vraag:

Heb je het over je wachtwoord?

Als je die met SHA1 opslaat niet.

2e vraag:

Dan het je gekozen voor een hoofdletter ongevoelig karakterset, dit is meestal standaard zo. Let wel op als je dit veranderd zijn alle tabellen waarop je dit doet gevoelig voor hoofdletters.

Je hebt bijvoorbeeld "utf8_general_ci", die laatste ci staat voor case insensitive.
Ik gebruik momenteel latin1_swedish_c1 dus zal dat het probleem zijn...

Maar welke gebruik ik dan best wel, er zijn zoveel mogelijkheden?
hoe komt het trouwens dat in phpMyadmin de MySQL verbindingscollatie staat ingesteld als utf8_unicode_ci en de collatie van de velden zelf in de tabellen van de databases staan automatisch ingesteld als latin1_swedish_ci?

Geeft dit geen problemen?

En indien ik deze aanpas, welke pas ik dan best aan?

Dank bij voorbaat.
we hebben editknopjes, use them
Dat weet ik dus allemaal zelf ook niet.

Ik heb gewoon alle tabellen op "utf8_general_ci" en ik heb in mijn HTML een content-type UTF8.
Dit kan je oplossen met SHA1. Je moet in de inlog pagina een stukje SHA1 schrijven.
@ScripterHW: dat is niet nodig. Aan de SHA1 functie van MySQL heb je meer dan genoeg. De query die je bijvoorbeeld bij het inloggen gebruik zou deze kunnen zijn:
<?php
$sQuery = "
SELECT id
FROM users
WHERE gebruikersnaam = '".$sNaam."'
AND wachtwoord = SHA1('".$sWachtwoord."')
";
?>
Uiteraard heb je $sNaam en $sWachtwoord wel van tevoren beveiligd met mysql_real_escape_string().

@Luc: zorg dat de charsets van zowel je database als je html overeenkomen. Persoonlijk gebruik ik utf-8 voor mijn html paginas en utf8_unicode_ci in mijn MySQL database. Hiermee heb ik nog nooit problemen ondervonden...
Ik snap nog steeds niet waarom ze altijd $s <- die S voor een Variable zetten? Maar je hebt gelijk zo kan het ook.
Die eerste letter in de variabele naam wordt gebruikt om het type van de variabele aan te geven. In dit geval staat 's' voor 'string'. Maar je kunt ook dingen als 'i' voor 'integer' en 'a' voor 'array' tegenkomen.

Zie ook dit hoofdstuk uit de PHP Beginnershandleiding, en dan met name het stukje over naamgeving.
Blanche schreef op 22.01.2008 13:41
Die eerste letter in de variabele naam wordt gebruikt om het type van de variabele aan te geven. In dit geval staat 's' voor 'string'. Maar je kunt ook dingen als 'i' voor 'integer' en 'a' voor 'array' tegenkomen.

Zie ook dit hoofdstuk uit de PHP Beginnershandleiding, en dan met name het stukje over naamgeving.


Bedankt, ik had dit al wel eens eerder gezien. Maar wist niet precies hoe en waarom. Ik zou even daar kijken :)

Reageren