Kis és nagybetű szerinti beléptetés MySQL és PHP párossal
sziasztok!
Azt szeretném megtudni, hogy hogyan tudom pontosan a felhasználó nevének reggelésekor megadott módon beléptetni a felhasználókat az alábbi beléptetési kód átalakításával, tekát a "Próba" néven reggeltek csak a pontos nevük megadásával(Kis és nagy betűk szűrésével) tudjanak belépni. a "Próba" user így ne tudjon bejutni "próba" "PRÓBA" stb, azt szeretném ha a pontos nevet kellene megadni a belépéshez.
a nick mező ugyan BINARY ra van állítva, de a problémát nem oldotta meg!
a kódrészletem a beléptetéshez az alábbi:
sajna ez így nem jó megoldás! ebben kérném a segítségeteket SOS
Nagyon köszönöm!
■ Azt szeretném megtudni, hogy hogyan tudom pontosan a felhasználó nevének reggelésekor megadott módon beléptetni a felhasználókat az alábbi beléptetési kód átalakításával, tekát a "Próba" néven reggeltek csak a pontos nevük megadásával(Kis és nagy betűk szűrésével) tudjanak belépni. a "Próba" user így ne tudjon bejutni "próba" "PRÓBA" stb, azt szeretném ha a pontos nevet kellene megadni a belépéshez.
a nick mező ugyan BINARY ra van állítva, de a problémát nem oldotta meg!
a kódrészletem a beléptetéshez az alábbi:
if ($_SESSION['belepett']!== true)
{
if (isset($_POST['login']))
{
$nick = addslashes($_POST['nev']);
$pass = md5($_POST['jelszo']);
$sql = "SELECT * FROM users ";
$sql.= "WHERE LIKE BINARY(nick='".$nick."'";
$sql.= " AND jelszo='".$pass."')";
$query = mysql_query($sql);
if (mysql_num_rows($query) !== 0)
{
$_SESSION['nick'] = addslashes($_POST['nev']);
$_SESSION['belepett'] = true;
header("Location: ".$_SERVER['PHP_SELF']);
}
{
if (isset($_POST['login']))
{
$nick = addslashes($_POST['nev']);
$pass = md5($_POST['jelszo']);
$sql = "SELECT * FROM users ";
$sql.= "WHERE LIKE BINARY(nick='".$nick."'";
$sql.= " AND jelszo='".$pass."')";
$query = mysql_query($sql);
if (mysql_num_rows($query) !== 0)
{
$_SESSION['nick'] = addslashes($_POST['nev']);
$_SESSION['belepett'] = true;
header("Location: ".$_SERVER['PHP_SELF']);
}
sajna ez így nem jó megoldás! ebben kérném a segítségeteket SOS
Nagyon köszönöm!
A mysql...
Megoldás több is lehet például,a nevet is tárolod a jelszoval>>
$pass=md5($_POST["nick"].$_POST["pass"]);
A mező is binary?
up. engem is érdekelne, ki
Felhaszbnálónév helyett...
Saját tapasztalatból kiindulva: Én nem szeretem a felhasználónevet. Egyrészt nehezíti a regisztrálást, ha már foglalt. Ha foglalt, amit általában szoktam, akkor ki kell találni vmi újat. Ezzel idővel ott tartok, hogy már vagy 8-10 felhasználónevem van, és idővel visszatérve egy oldalra már nem biztos, hogy emlékszek, melyik volt az, amivel ott regisztráltam. Ráadásul erre az oldalak többsége nincs is felkészülve, csak a jelszó elfelejtésére, pedig a környezetemben már többen futottak bele ilyen problémába eddigi életük során.
Minden gondot megold, ha egyszerűen e-mail cím - jelszó párost kérsz be:
- biztosan egyedi
- az előbbi miatt sehol nem foglalt, mindenhol ugyanazt lehet használni --> később nincs káosz, elkerülhető a véletlen dupla regisztráció is
- nincs kis- és nagybetű probléma
- nem kell olyanokat ellenőrizni, hogy használt-e ékezetes vagy más speciális betűt, amivel probléma lehet, ha pl külföldről, angol billentyűzetről akar belépni (persze a jelszónál ezt még "elronthatja")
- egyből megvan az e-mail címe, amire jelszó elfelejtés esetén újat lehet küldeni --> ha nagyon minimalizálni akarjuk a regisztrációs űrlapot, akkor a jelszót elég egyszer bekérni
- ha az oldal használatához kell felhasználónév, akkor az attól még lehet, csak nem azzal kell belépni
Persze helyzete válogatja, egy online banknál ettől a megoldástól jelentősen eltérnék. Viszont az esetek többségében ez a megoldás praktikusabb.
off: én is gyűlölöm a felhasználó neveket
... És nem értem mire jó! Az utóbbi 10 évben semmi nem okozott több mérgelődést, a web-ezés során! A spam-erek persze biztos szeretik az ilyen szép neveket. Az "at" és az azt követő karakterek egy ronda névre való kicserélése ezen talán segíthetne, ha ezt az okosságot 10 éve találtam volna ki. Persze, ha lesz pénzem PDA-ra és türelmem h. minden reg. aldomaint felírjak sorrendben ...
Mégegyszer elnézést, de hátha valaki azt hitte, h. a haragos szomszéd miatt csuklik rendszeresen !!!
kl
Binary kicsit másképp
Esetleg ezt is lehet:
Azzal egyetértek, hogy jelszavakat adatbázisban nem szoktunk plain text formában tárolni, csak elkódolva. De a kérdés erre a formára vonatkozott.
Ja, és a $nick, $pass változókat természetesen escape-lni kell, ha azok POST-ból érkező értékek.
LIKE helyett =
Én így járok el:
LIKE
?
Én case insensitive-nél ilyesmit...
A név mellé betároltam az md5(név) stringet egy új mezőbe, és úgy néztem össze, hogy ha mindekettő egyezik, akkor legyen csak NÉV=NÉV. Merthogy a máshol kis-nagybetűs név hash-e ugye más lesz. Ugyanakkor kiküszöböljük a hashek egyezését is, mert nézzük a nevet is. (két teljesen más string visszatérhet ugyanis azonos hash-el.
Ez természetesen rekordonként 32 karakter pluszt jelent, de bármilyen encodingnál alkalmazható.