Login cu nickname ce contine litere mari si mici

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

KomyOmy
Average Member
Mesaje: 97
Membru din: Dum Apr 11, 2010 3:08 pm
Localitate: Brasov

Login cu nickname ce contine litere mari si mici

Mesajde KomyOmy » Joi Noi 25, 2010 9:39 pm

Salutare,

Azi am observat ca apare o problema la login si anume:
eu am nickname-ul KomyOmy cu K si O mare, pe care il am de cand mi-am facut contul pt ca asa l-am scris, daca incerc sa ma conectez cu el asa komyomy adica cu k si o mic si incer sa intru in profilul meu cu link gen domeniu.ro/profile.php?action=profile&user=KomyOmy aceasta conditie

Cod: Selectaţi tot

if ($_SESSION['user'] == $row_get_user['user'])
            {
         echo"<div style='float:right;'>
               <a href='profile.php?action=settings&user=".$_GET['user']."'><img src='images/settings.png' title='Settings' alt=''</a>
               <a href='profile.php?action=edit_profile&user=".$_GET['user']."'><img src='images/edit_profile.png' title='Edit profile' alt=''</a>
            </div>";
            }


din acesta portiune de cod

Cod: Selectaţi tot

$get_user_SQL = mysql_query('SELECT * FROM users WHERE user="'.$_GET['user'].'"');
   while($row_get_user = mysql_fetch_array($get_user_SQL))
   {
   $get_bdate=substr($row_get_user['bdate'],0,strpos($row_get_user['bdate'],'.'));
   $get_now=date('Y');
   $get_age=$get_now - $get_bdate;   
echo"<div class='profile'>
      <table class='tb_profile' border='0' width='640'>
      <tr>
         <td colspan='3' height='26'>
         <img src='images/user_icon.png' alt=''/><font size='4'> ".$row_get_user['user']." 's profile:</font>";
         if ($_SESSION['user'] == $row_get_user['user'])
            {
         echo"<div style='float:right;'>
               <a href='profile.php?action=settings&user=".$_GET['user']."'><img src='images/settings.png' title='Settings' alt=''</a>
               <a href='profile.php?action=edit_profile&user=".$_GET['user']."'><img src='images/edit_profile.png' title='Edit profile' alt=''</a>
            </div>";
            }
         echo"<div style='border-top: 1px solid #A9A28C;margin-top:5px;margin-bottom:5px;'></div></div></td>
      </tr>
      <tr>

nu mai e valabila, continutul ei nu-mi mai apare...pe cand daca ma conectez cu nickname KomyOmy tot e in regula.
Cum as putea rezolva?Are legatura cu literele din nickname adica apar diferente intre literele mari si cele mic sau e altceva?



Fast2Web
PHPRomania Supporter
Mesaje: 27
Membru din: Joi Mar 11, 2010 12:43 pm
Localitate: Iasi
Contact:

Mesajde Fast2Web » Vin Noi 26, 2010 11:26 am

sfatul meu este sa mai creezi in baza de date un field nickname in care sa tii numele scris exact cu caractere mari sau mici iar fieldul username si password cand le bagi in baza de date le transformi cu strtolower si la fel faci si la verificare, cand verifici username-ul si parola le transformi intai cu strtolower dupa faci interogarea.


ps daca vrei sa nu iti rescrii tot proiectul din nou incearca sa renunti la

Cod: Selectaţi tot

$get_user_SQL = mysql_query('SELECT * FROM users WHERE user="'.$_GET['user'].'"')
citeste mai multe despre mysql injection

KomyOmy
Average Member
Mesaje: 97
Membru din: Dum Apr 11, 2010 3:08 pm
Localitate: Brasov

Mesajde KomyOmy » Vin Noi 26, 2010 2:51 pm

Fast2Web scrie:sfatul meu este sa mai creezi in baza de date un field nickname in care sa tii numele scris exact cu caractere mari sau mici iar fieldul username si password cand le bagi in baza de date le transformi cu strtolower si la fel faci si la verificare, cand verifici username-ul si parola le transformi intai cu strtolower dupa faci interogarea.


Asa m-am gandit si eu (dupa ce am deschis topicul :oops: ) si pana la urma asa am facut, am adaugat inca un field (nickname) in care e stocat nickname-ul userului la inregistrare exact asa cum il scrie el (cu litere mari, mici), iar in celalalt field (username) e stocat nickname-ul userului dar trecut prin functia strtolower si la login e folosit username-ul, si bineinteles si la alte script-uri unde e nevoie doar de informatia lui iar nikcname-ul il folosesc la afisare in profile si alte zone unde afisez nickname-ul userului (sa arate mai bine estetic )

Fast2Web scrie:ps daca vrei sa nu iti rescrii tot proiectul din nou incearca sa renunti la

Cod: Selectaţi tot

$get_user_SQL = mysql_query('SELECT * FROM users WHERE user="'.$_GET['user'].'"')
citeste mai multe despre mysql injection


Nu inteleg la ce te-ai referit cu asta?

tanatos
Senior Member
Mesaje: 269
Membru din: Vin Iun 06, 2008 8:01 pm
Localitate: Iasi
Contact:

Mesajde tanatos » Vin Noi 26, 2010 3:09 pm

A vrut sa spuna sa cureti $_GET-ul de taguri sau orice ar putea rezulta intr-un mysql inject... sanitize....

KomyOmy
Average Member
Mesaje: 97
Membru din: Dum Apr 11, 2010 3:08 pm
Localitate: Brasov

Mesajde KomyOmy » Sâm Noi 27, 2010 1:09 am

E suficient daca il trec prin functia asta?Prin ea am trecut toate informatiile introduse de user in field-uri.

Cod: Selectaţi tot

function clean($str){
   if (is_numeric($str)) $str=floor($str);
   $cleaned=strip_tags($str);
   $cleaned=htmlspecialchars($cleaned);
   $cleaned=mysql_real_escape_string($cleaned);
   $to_clean=array("%20", "\"", "'", "\\", "=", ";", ":");
   $cleaned=str_replace($to_clean, "", $cleaned);
   return $cleaned;
}


Înapoi la “Cod PHP”

Cine este conectat

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