За последние 24 часа нас посетили 62949 программистов и 1743 робота. Сейчас ищут 854 программиста ...

Проблема авторизации

Тема в разделе "Прочие вопросы по PHP", создана пользователем Noll, 7 ноя 2015.

  1. Noll

    Noll Новичок

    С нами с:
    1 ноя 2015
    Сообщения:
    50
    Симпатии:
    0
    Всем привет!
    Пожалуйста,подскажите,что делаю не так?
    При авторизации ввожу данные мыла и пароля в форму входа,которые вписаны в БД, и мне выбивает "Введены неверные данные!!! Вход невозможен!"
    Капча ссылается на верную функцию,а вот данные формы не видят инфу с БД,чтоб проверить...
    Вот код файла login.php:
    Код (PHP):
    1. <?
    2. require_once('zsecurity.php');
    3. $db=mysqli_connect("$db_host", "$db_user", "$db_password", "$db_name");
    4.   {
    5.   echo "Failed to connect to MySQL: " . mysqli_connect_error();
    6.   }
    7. if (isset($_POST['logusername']))
    8. {
    9.  
    10.  
    11.     include('header.php');
    12.     $username=uc(strtolower($_POST['logusername']));
    13.     $password=uc($_POST['logpassword']);
    14.     
    15.  
    16.     if (strtolower($_POST['code'])!= strtolower($_SESSION['texto']) OR !isset($_SESSION["texto"]))
    17.     { 
    18.         echo "<h7> Неверно введен код с картинки... </h7> <br>"; 
    19.         include('footer.php');
    20.         exit(); 
    21.     }
    22.  
    23.  
    24.     if ($password==NULL)
    25.     {
    26.         echo "<h7>Введите пароль!  </h7>";include('footer.php'); exit;
    27.         }
    28.         $query2 = $db->query("SELECT count(*) as kolvo FROM tb_users WHERE email = '$username' and password='$password'") or die(mysqli_error());
    29.         $query=mysqli_fetch_row($query2);$allsqls++;
    30.         if($query["kolvo"]<1)
    31.         {
    32.             echo "<h7>  Введены неверные данные!!! Вход невозможен!  </h7>"; include('footer.php');
    33.             exit();
    34.         }else{
    35.             ////рейтинг
    36.             
    37.             $lastres=$db->super_query("select lastlogdate from tb_users where email='".$db->safesql($username)."'");$allsqls++;
    38.             $lastlogdateee= $lastres["lastlogdate"] ;
    39.             if($lastlogdateee!=date('d.m.Y'))
    40.             {
    41.             $vxodpos="1"; // рейтинг за вход 
    42.             $db->query("update tb_users set rating=rating+'$vxodpos' where email='".$db->safesql($username)."'");
    43.             }
    44.             ////
    45.             $lastlogdate=date("d.m.Y");
    46.             $db->query("UPDATE tb_users SET lastlogdate='$lastlogdate' WHERE email='".$db->safesql($username)."'");$allsqls++;
    47.             $lastip = getRealIP();
    48.             
    49.             $res=$db->super_query("select blockip from tb_users where email='".$db->safesql($username)."'");$allsqls++;
    50.             $blockip=$res["blockip"];
    51.             $v=substr($lastip,0,strlen($blockip));
    52.  
    53. $user2=$db->super_query("SELECT id FROM tb_users WHERE email='$username'");
    54. $user=$user2["id"];
    55. $_SESSION[iduser]=$user;
    56.  
    57.             if($v!=$blockip)
    58.             {
    59.                 echo "<h7>  Ваш IP адрес не соответствует тому для которого разрешен доступ в аккаунт!  </h7>";
    60.                 
    61.             }else{
    62.             
    63.             $sqlip2=$db->super_query("SELECT ipc,ipblock FROM tb_users WHERE email='".$db->safesql($username)."'");
    64.                         $sqlip=$db->get_row($sqlip2);
    65.             $ipblock=$sqlip["ipblock"];
    66.             $ipc=$sqlip["ipc"];
    67.             if($ipc=="1"){if($ipblock!=$lastip){ echo "<h7>  Ваш IP адрес не соответствует тому для которого разрешен доступ в аккаунт!  </h7>"; include('footer.php'); exit();}} /////////////// ТУТ
    68.             
    69.             
    70. $nameus=$username;
    71.  
    72.         $db->query("UPDATE tb_users SET lastiplog='$lastip' WHERE id='$_SESSION[iduser]'");$allsqls++;
    73.         $rres2=$db->super_query("SELECT username FROM tb_users WHERE id='$_SESSION[iduser]'");
    74.                 $rres=$db->get_row($rres2);
    75.  
    76.         $_SESSION["username"]=strtolower($rres[username]);
    77.                 $_SESSION["password"]=$password;
    78.                 $varstr=date("w");
    79. $row=$db->query("select date from tb_statistic where typ=0 and username='".$db->safesql($username)."'");
    80. if($db->num_rows($row)==0)
    81. {
    82. $db->query("INSERT INTO tb_statistic (date,username) values ('$varstr','$_SESSION[username]')") or die(mysqli_error());
    83. }
    84. $row=$db->get_row($row);
    85. if($row["date"]!=$varstr)
    86.   { 
    87.   $day='';
    88.   if($varstr=='1') $day='mon';
    89.   if($varstr=='2') $day='tue';
    90.   if($varstr=='3') $day='wed';
    91.   if($varstr=='4') $day='thu';
    92.   if($varstr=='5') $day='fri';
    93.   if($varstr=='6') $day='sat';
    94.   if($varstr=='0') $day='sun';    
    95.   $db->query("UPDATE tb_statistic SET date=".$varstr." , ".$day."=0 WHERE username='".$db->safesql($username)."'");
    96.   
    97.   
    98.   }
    99.   
    100.                 echo "<h7>  Вы успешно авторизовались!Ожидайте перенаправления!  </h7>";
    101.                 include('footer.php');
    102.                 ?>
    103.                 <script type="text/javascript">
    104.                 location.replace("members.php");
    105.                 </script>
    106.                 <noscript>
    107.                 <meta http-equiv="refresh" content="0; url=members.php">
    108.                 </noscript>
    109.                 <?
    110.             }
    111.         }
    112.     
    113. }else{
    114. include('header.php');
    115. ?>
    116.  
    117. <script>  
    118. function refresh_on(_element_id)  
    119. {  
    120.   var element = document.getElementById(_element_id);  
    121.   if (element)  
    122.   {  
    123.   element.src = element.src + '?' + (new Date()).getMilliseconds()  ;
    124.   }  
    125. }</script>
    126.  
    127.  
    128. <script type="text/javascript" src="js/jsble.js"> </script>
    129. <script type="text/javascript" src="js/ololo.js"> </script>
    130.  
    131.                         <h1>Добро пожаловать на <?=$sitename?>!</h1><br>
    132.                         Для входа в свой аккаунт на <span class='seosprint'><?=$sitename?></span>, введите ваш регистрационный e-mail, пароль и проверочный код с картинки. .
    133.                          <h2>Форма входа в свой аккаунт</h2>
    134.      <form method="post" name="reg" action="" onsubmit="return VerifyRegForm(); return false;">
    135.                             <table class='profile' width='100%' border='0' cellpadding='0' cellspacing='0' style='margin-bottom: 0;'>
    136.                                 <tr>
    137.                                     <td width="45%"><b>Укажите ваш E-mail<br></b></td>
    138.                                     <td class="value"><input class="val" type="text" name="logusername" size="30" maxlength="30" value="" /></td>
    139.                                 </tr>
    140.                                 <tr>
    141.                                     <td><b>Укажите ваш Пароль</b><br /><span style="font-size: 11px;"></span></td>
    142.  
    143.                                     <td class="value"><input class="val" type="password" name="logpassword" size="30" maxlength="40" value="" /></td>
    144.                                 </tr>
    145.                                 <tr>
    146.                                 <tr>
    147.                                     <td colspan="2" style="background-color: #f5f5b5; text-align: center;">
    148.                                         Если вы забыли свой пароль, нажмите <b>[url="/restorepass.php"]здесь[/url]</b>
    149.                                     </td>
    150.                                 </tr>
    151. <tr>
    152.     <td colspan="2" align="center"><h2>Сколько звезд вы видите?</h2>
    153.      <table border="0" cellpadding="0" cellspacing="0" align="center">
    154.          <td valign="middle"><img src="image.php?<?php echo htmlspecialchars($res) ; ?>" class="imgcap" alt="" /></td>
    155.       <div class="note">
    156.                                 <td valign="middle"><input type="hidden" name="code" value="0">
    157.        <input class="regnum" name="code" value="1" onclick="vernum(this.form,1); submit();" type="submit">
    158.        <input class="regnum" name="code" value="2" onclick="vernum(this.form,2); submit();" type="submit">
    159.        <input class="regnum" name="code" value="3" onclick="vernum(this.form,3); submit();" type="submit">
    160.        <input class="regnum" name="code" value="4" onclick="vernum(this.form,4); submit();" type="submit"><br />
    161.        <input class="regnum" name="code" value="5" onclick="vernum(this.form,5); submit();" type="submit">
    162.        <input class="regnum" name="code" value="6" onclick="vernum(this.form,6); submit();" type="submit">
    163.        <input class="regnum" name="code" value="7" onclick="vernum(this.form,7); submit();" type="submit">
    164.        <input class="regnum" name="code" value="8" onclick="vernum(this.form,8); submit();" type="submit"></td>
    165.                              </div>
    166.      </tr></table>
    167.     </td>
    168. </tr>                                
    169. </table>
    170. </form>
    171. <br><br><br><br><br><br><br><br>
    172.                         <div id="entermsg"></div>
    173. <?include('footer.php');}?>
    Добавлено спустя 5 минут 37 секунд:
    Да и вообще,мне почему то кажется,что проблема вся в "вязке" с БД
    Как решить эту проблему?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Код дыряяяяяявый. Про SQL-инъекции не слыхали совсем? Потом, а что у вас в базе лежит? Открытый пароль или хеш?
     
  3. Noll

    Noll Новичок

    С нами с:
    1 ноя 2015
    Сообщения:
    50
    Симпатии:
    0
    Про sql-инъекции слыхал!
    А код авторизации лучше менять или переписать существующий? Пока открытый пароль,но я этим и задаюсь вопросом,чтоб захешировать данные...
    Думаете,в этом коде php причина того,что с БД данные не синхронизируются?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ну это надо вашу базу смотреть то же, смотреть, какой запрос уходит. Попробуйте напечатать запрос, ввести в базу вручную. Конечно, качество кода отвратное просто, но сможете ли сами переделать - не знаю. Код сейчас уязвим к инъекциям.

    Добавлено спустя 1 минуту 12 секунд:
    $db->super_query - а это что за зверь? если $db - это mysqli, там такого метода нету.
     
  5. Noll

    Noll Новичок

    С нами с:
    1 ноя 2015
    Сообщения:
    50
    Симпатии:
    0
    сам не понял)) скрипт чужой!
    Вот нашел ошибку в запросе к базе БД,отвечающую за успешную авторизацию
    Код (PHP):
    1. UPDATE tb_statistic SET date=".$varstr." , ".$day."=0 WHERE username='".$db->safesql($username)."'
    ошибка в БД
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '".$day."=0 WHERE username='".$db->safesql($username)."'' at line 1
    (#1064 - у Вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера с mariadb для правого синтаксиса, чтобы использовать рядом '".$день."=0 где username='".$в dB->safesql($имя пользователя)."" в строке 1)
    Ничего не пойму! Возможно перефразировать этот запрос?

    Добавлено спустя 17 минут 54 секунды:
    Linux version/php 5.2.17
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ну прежде чем разбирать чужой скрипт, надо php выучить. Видно же, что тут не так - кусок php-кода попал в sql-запрос. Наймите кого-нибудь разгребать эту конюшню (себя не предлагаю, очень занят)
     
  7. Noll

    Noll Новичок

    С нами с:
    1 ноя 2015
    Сообщения:
    50
    Симпатии:
    0
    Этот пхп код как раз по версии не читаем базой mysql-весь скрипт,думаю,со временем усовершенствую по защите,а вот именно этот запрос и причиняет неудобства!
    я с php знаком на среднем уровне и то,это было с десятки лет назад,но и не с такими версиями как PDO, MYSQLI
     
  8. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    [​IMG]

    P.S. тег h7 , наверно из HTML7 ? )))
     
  9. Noll

    Noll Новичок

    С нами с:
    1 ноя 2015
    Сообщения:
    50
    Симпатии:
    0
    Ладно...с запросом я разобрался...там and не хватало,чтоб разбить функцию на две колонки...
    Но всё же,возможно,что изза моего конфиг файла с настройками подключения к БД(может не правильно прописан!) не отображаются части данных,вписаных в таблицу БД?