Ceva.... neregula..:((

PEAR, Smarty, ADOdb, OOP, PHP 5, XML, UML, Şabloane de proiectare, PHP-GTK.

Moderatori: coditza, Emil, Moderatori

Avatar utilizator
Khamoaset
Average Member
Mesaje: 160
Membru din: Joi Iul 21, 2011 4:29 pm
Contact:

Ceva.... neregula..:((

Mesajde Khamoaset » Mie Sep 12, 2012 12:55 am

Salutare! Seara buna!

Am vazut pe unele site-uri de autentificare, dar este ceva neregula, de exemplu: daca ma loghez cu numele asa 'gEorgE' sau altfel de forma si intra in continuare catre pagina dorita dar fara sa conteze daca e corect numele ca in baza de date inregistrat, in baza de date are asa nume inregistrat 'george' sau 'George'.... cum as putea face sa se corecteze codul acelui nume introdus in campul <input /> ca sa fie corect cu cea din baza fara sa fie alte forme... numai sa fie exact ca in baza pentru logare... cum ? :? :?




Cu stima, Khamoaset!



quadmachine
Senior Member
Mesaje: 807
Membru din: Sâm Iul 10, 2010 4:58 pm
Localitate: Ploiesti
Contact:

Mesajde quadmachine » Mie Sep 12, 2012 2:57 am

Cod: Selectaţi tot

<?php

/*
Sa zicem ca eu am inregistrat contul "supermenica" dar cand ma loghez scriu din greseala "SuperMenica".
*/


     $post_user = $_POST['user'];

        $search_user = mysql("SELECT `username` FROM `table` WHERE `username` LIKE '%$user%'") or die(mysql_error());
        $fetch = mysql_fetch_assoc($search_user);
       

               if($fetch['username'] != $post_user){

                  print 'Numele utilizatorului este scris gresit.';

               }

?>

Cod: Selectaţi tot

Nu confundati femeia de serviciu cu profesoara de Limba si Literatura Romana.

MarPlo
Senior Member
Mesaje: 885
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Mesajde MarPlo » Mie Sep 12, 2012 9:37 am

Salut
In baza de date MySQL cautarea se face fara diferenta intre litere mari si mici.
Daca vrei sa folosesti numele asa cum e adaugat in baza de date, dupa ce faci Select-ul, preiei si utilizezi in script (adaugi in sesiune) numele din baza de date in loc de cel preluat din <input>.

Avatar utilizator
MihaiC
Senior Member
Mesaje: 1644
Membru din: Dum Mai 14, 2006 8:07 pm

Re: Ceva.... neregula..:((

Mesajde MihaiC » Mie Sep 12, 2012 10:35 am

Khamoaset scrie:Salutare! Seara buna!

Am vazut pe unele site-uri de autentificare, dar este ceva neregula, de exemplu: daca ma loghez cu numele asa 'gEorgE' sau altfel de forma si intra in continuare catre pagina dorita dar fara sa conteze daca e corect numele ca in baza de date inregistrat, in baza de date are asa nume inregistrat 'george' sau 'George'.... cum as putea face sa se corecteze codul acelui nume introdus in campul <input /> ca sa fie corect cu cea din baza fara sa fie alte forme... numai sa fie exact ca in baza pentru logare... cum ? :? :?




Cu stima, Khamoaset!



Nu mai posta rahaturi d-astea la php avansat!
Nu e nimic avansat la topicurile tale, incadreaza-le unde trebuie, adica la incepatori.
Dev @ oblio.eu

elrukn
Average Member
Mesaje: 167
Membru din: Sâm Iul 28, 2007 11:16 pm
Localitate: Bucuresti

Mesajde elrukn » Mie Sep 12, 2012 10:48 am

quadmachine scrie:

Cod: Selectaţi tot

<?php

/*
Sa zicem ca eu am inregistrat contul "supermenica" dar cand ma loghez scriu din greseala "SuperMenica".
*/


     $post_user = $_POST['user'];

        $search_user = mysql("SELECT `username` FROM `table` WHERE `username` LIKE '%$user%'") or die(mysql_error());
        $fetch = mysql_fetch_assoc($search_user);
       

               if($fetch['username'] != $post_user){

                  print 'Numele utilizatorului este scris gresit.';

               }

?>


Ce se intampla cu daca eu incerc sa ma autentific cu "supermen", desi userul in baza de date este supermenica ?
Cum sa faci verificare pentru username cu like %% ?

Poti sa folosesti lower(username) = lower($username) ca sa stii sigur ca nu ai probleme de genul George in baza de date si GeorGe la input.

extra:
am incercat asta de curiozitate si se pare ca nici lower nu e necesar, dar sunt sigur ca nu strica.

mysql> select 'abc'='aBc';
+-------------+
| 'abc'='aBc' |
+-------------+
| 1 |
+-------------+

hadyh
Average Member
Mesaje: 118
Membru din: Mar Noi 30, 2010 12:57 pm

Mesajde hadyh » Mie Sep 12, 2012 11:10 am

cei de mai sus nu au pus cautarea dupa username cu like, ci au preluat cu like din baza forma cum a fost inregistrat, modulul de logare oricum se face cu = si la username si la password.

anyway daca vrei sa faci cautarea in baza de date sa conteze lower case upper case trebuie sa transformi coloana de username din i.e. utf8 in utf8_bin


ALTER TABLE `login_table` MODIFY
`username` VARCHAR(255)
CHARACTER SET utf8
COLLATE utf8_bin;

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Mesajde nevvermind » Mie Sep 12, 2012 11:21 am

select binary 'abc'='aBc'; // false

Foloseste "where binary".

Avatar utilizator
Khamoaset
Average Member
Mesaje: 160
Membru din: Joi Iul 21, 2011 4:29 pm
Contact:

Mesajde Khamoaset » Mie Sep 12, 2012 12:08 pm

Salut @hadyh.... da a mers cu utf8_bin ca eu aveam cu utf8_general_ci, chiar daca ma loghez cu forma asa ,,GEorgE'' in loc de userul inregistrat ,,george'' nu intra cand am pus cu utf8_bin si cand am pus corect userul a intrat fara nicio problema, dar de ce este cu utf8_bin si nu utf8_general_ci ? :?:

Avatar utilizator
Khamoaset
Average Member
Mesaje: 160
Membru din: Joi Iul 21, 2011 4:29 pm
Contact:

Mesajde Khamoaset » Mie Sep 12, 2012 12:56 pm

fratzilor... merge alta varianta fara a modifica ,,utf8-bin'' in baza de date ci doar sa pui un ,,collate utf8_bin'' in fata lui ca o sa mearga fara nicio problema ca am testat eu, uitati de exemplu:

Cod: Selectaţi tot

$select = mysql_query("SELECT username,password FROM users WHERE username collate utf8_bin = '$username' AND password = '$password'");


o sa vedeti... cand scrii cu alte forme de username la input nu o sa primeasca ci' va trebui sa scrii forma corecta a username-ul ca in baza inregistrat.. :wink: :wink: :wink:




Cu stima, Khamoaset!


Înapoi la “PHP Avansat”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 5 vizitatori