Автор Тема: MCF - login форма  (Прочетена 26880 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Отг:MCF - login форма
« Отговор #15 -: 19 Октомври 2010, 12:40:03 »
Мерси оправих го това. В базата ми паролите се запазват с md5. Няколко пъти пренаписвах кода и пак дава същия проблем. Интересното е че ако напиша заявката да ми покаже само потребителското име работи без никакъв проблем. Това ме навежда на мисълта, че има проблем с паролата. Гледах базата. Всичко е наред там. Полето, в което запазвам паролите е varchar с дължина 20 символа.

Pitankata

  • Мно'о доблестни
  • Hero Member
  • ***
  • Благодарности
  • -Казани: 89
  • -Получени: 136
  • Публикации: 1321
  • ПАЗИТЕЛ НА ЧАТА
Отг:MCF - login форма
« Отговор #16 -: 19 Октомври 2010, 12:55:13 »
ето тук ти е проблема ... трябва да ти е varchar 32  понеже md5() връща 32 символа а няма как 20 символа да са равни на 32 ;о)
Мързелът всъщност е доста гадна работа, не можеш да спреш за да си починеш...

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Отг:MCF - login форма
« Отговор #17 -: 19 Октомври 2010, 13:00:40 »
Тъкмо това прочетох като се поразтърсих за md5. Мерси много за помоща.  :blush:

Engelhertz

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Отг:MCF - login форма
« Отговор #18 -: 27 Ноември 2010, 15:04:22 »
Здравейте ,
проблема е следния , немога да мина проверката if (mysql_num_rows($rs)==1)
Дори и при съществуващ акаунт ми остава 0 и излиза съобщението за грешка . 
ето и кода :

Код: PHP
  1. <?php
  2. include  ' functions.php ' ;
  3.  
  4. if ($_POST[form_login]==1)
  5. {
  6.     $login=trim($_POST[ ' Login_name ' ]);
  7.     $pass=trim($_POST[ ' Login_pass ' ]);
  8.      
  9.    
  10.     if (strlen($login)>4 && strlen($pass)>4)
  11.     {
  12.        
  13.          db_init();
  14.          $rs= mysql_query ( ' SELECT * FROM users WHERE login= "  ' .addslashes($login). '  "  AND pass= "  ' .md5($pass). '  "  ' );
  15.        
  16.        if (mysql_num_rows($rs)==1)
  17.         {
  18.            
  19.            
  20.            $row=mysql_fetch_assoc($rs);
  21.            $_SESSION[ ' is_logged ' ]=true;
  22.            $_SESSION[ ' user_info ' ]=$row;
  23.  
  24.            header( ' Location: index.php ' );
  25.            exit;
  26.         }
  27.         elseif (mysql_num_rows($rs)==0)
  28.         {
  29.             echo     ' <h1>Грешно име или парола</h1> ' ;
  30.         }
  31.        
  32.  
  33.  
  34.     }
  35.    
  36. }
  37.  
  38. my_header( " Login " );
  39. ?>
  40. <form action= " login.php "  method= " POST " >
  41. Име : <input type= " text "  name= " Login_name "  value= "  "  />
  42.  
  43. Парола : <input type= " text "  name= " Login_pass "  value= "  "  />
  44.  
  45. <input type= " submit "  value= " Влез " >
  46. <input type= " hidden "  name= " form_login "  value= " 1 " >
  47. </form>
  48.  
  49.  
  50.  
  51.  
  52. <?php
  53. footer();
« Последна редакция: 14 Април 2015, 23:39:54 от Avalanche »

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Отг:MCF - login форма
« Отговор #19 -: 28 Ноември 2010, 09:22:15 »
Като гледам нямаш грешка в кода. Колко ти е дължината на полето за парола в базата? Трябва да ти е примерно varchar(32), за да можеш да хешираш паролата с помоща на md5.

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 94
  • Публикации: 4836
Отг:MCF - login форма
« Отговор #20 -: 28 Ноември 2010, 12:16:33 »
Провери с някоя функция за проверка какво връща $rs и $row и ги визуализирай някъде в кода да видиш какво полуаваш от базата.
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

Engelhertz

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Отг:MCF - login форма
« Отговор #21 -: 28 Ноември 2010, 14:03:50 »
Паролата е varchar32 ,а понеже незнам как се прави такава функция пробвах да използвам mysql_fetch_assoc преди проверката num_rows ==1
_________________________________________________________________________________________________
 db_init();
         $rs= mysql_query ( ' SELECT * FROM users WHERE login= "  ' .addslashes($login). '  "  AND pass= "  ' .md5($pass). '  "  ' );
       $t=mysql_fetch_assoc($rs);
       echo $t;
 _________________________________________________________________________________________________
в браузара неизлиза нищо а ако добавя и echo $rs; след echo $t; излиза

Resource id #4

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 94
  • Публикации: 4836
Отг:MCF - login форма
« Отговор #22 -: 28 Ноември 2010, 14:09:30 »
не ти трябва ехо а var_dump() или print_r()
Прочети как се ползват.
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

Engelhertz

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Отг:MCF - login форма
« Отговор #23 -: 28 Ноември 2010, 14:40:13 »
__________________________________________КОД____________________________________________________
  db_init();
         $rs= mysql_query ( ' SELECT * FROM users WHERE login= "  ' .addslashes($login). '  "  AND pass= "  ' .md5($pass). '  "  ' );
     $t=mysql_fetch_assoc($rs);
      var_dump($rs);
     
      echo  '
' ;
      var_dump($t);

_________________________________________РЕЗУЛТАТ________________________________________________
resource(4) of type (mysql result)

bool(false)

Незнам какво точно трябваше да очаквам ... това добре ли е ? :D

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 94
  • Публикации: 4836
Отг:MCF - login форма
« Отговор #24 -: 28 Ноември 2010, 14:49:26 »
bool(false)
Това какво ти говори например?
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Отг:MCF - login форма
« Отговор #25 -: 28 Ноември 2010, 15:17:38 »
Виж тази функция db_init(). Като гледам ти въобще не се свързваш към MySql server-a.

Engelhertz

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Отг:MCF - login форма
« Отговор #26 -: 28 Ноември 2010, 19:14:11 »
bool(false) e булева стойност неистина ( 0 ) , това го знам още от училище като учих pascal но незнам в случая това добър или лош знам е :D
относно db_inin() той си седи в functions.php и щом нямам проблем с него при регистрациите невиждам логика тук да има ?

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Отг:MCF - login форма
« Отговор #27 -: 29 Ноември 2010, 17:06:43 »
я провери дали получаваш правилно данните от полетата в логин формата ти?

Engelhertz

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Отг:MCF - login форма
« Отговор #28 -: 29 Ноември 2010, 19:25:31 »
данните са правилни , но незнам защо num_rows ми е 0 .. ?

_________________________________________________________________________________________________
   db_init();
         $rs= mysql_query ( ' SELECT * FROM users WHERE login= "  ' .addslashes($login). '  "  AND pass= "  ' .md5($pass). '  "  ' );
     $t=mysql_fetch_assoc($rs);
     
      var_dump($rs); //  result -  resource(4) of type (mysql result)
     
      echo  '
' ;
      var_dump($t); //result - bool(false)
      echo  '
' ;

      echo mysql_num_rows($rs); // result - 0
_________________________________________________________________________________________________
защо се получава това

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 94
  • Публикации: 4836
Отг:MCF - login форма
« Отговор #29 -: 29 Ноември 2010, 19:37:15 »
А проверил ли си какво като данни получаваш от формата за логин?
И махни тоя  addslashes
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width: