Всем привет! Пожалуйста,подскажите,что делаю не так? При авторизации ввожу данные мыла и пароля в форму входа,которые вписаны в БД, и мне выбивает "Введены неверные данные!!! Вход невозможен!" Капча ссылается на верную функцию,а вот данные формы не видят инфу с БД,чтоб проверить... Вот код файла login.php: Код (PHP): <? require_once('zsecurity.php'); session_start(); $db=mysqli_connect("$db_host", "$db_user", "$db_password", "$db_name"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } if (isset($_POST['logusername'])) { include('header.php'); $username=uc(strtolower($_POST['logusername'])); $password=uc($_POST['logpassword']); if (strtolower($_POST['code'])!= strtolower($_SESSION['texto']) OR !isset($_SESSION["texto"])) { echo "<h7> Неверно введен код с картинки... </h7> <br>"; include('footer.php'); exit(); } if ($password==NULL) { echo "<h7>Введите пароль! </h7>";include('footer.php'); exit; } $query2 = $db->query("SELECT count(*) as kolvo FROM tb_users WHERE email = '$username' and password='$password'") or die(mysqli_error()); $query=mysqli_fetch_row($query2);$allsqls++; if($query["kolvo"]<1) { echo "<h7> Введены неверные данные!!! Вход невозможен! </h7>"; include('footer.php'); exit(); }else{ ////рейтинг $lastres=$db->super_query("select lastlogdate from tb_users where email='".$db->safesql($username)."'");$allsqls++; $lastlogdateee= $lastres["lastlogdate"] ; if($lastlogdateee!=date('d.m.Y')) { $vxodpos="1"; // рейтинг за вход $db->query("update tb_users set rating=rating+'$vxodpos' where email='".$db->safesql($username)."'"); } //// $lastlogdate=date("d.m.Y"); $db->query("UPDATE tb_users SET lastlogdate='$lastlogdate' WHERE email='".$db->safesql($username)."'");$allsqls++; $lastip = getRealIP(); $res=$db->super_query("select blockip from tb_users where email='".$db->safesql($username)."'");$allsqls++; $blockip=$res["blockip"]; $v=substr($lastip,0,strlen($blockip)); $user2=$db->super_query("SELECT id FROM tb_users WHERE email='$username'"); $user=$user2["id"]; $_SESSION[iduser]=$user; if($v!=$blockip) { echo "<h7> Ваш IP адрес не соответствует тому для которого разрешен доступ в аккаунт! </h7>"; }else{ $sqlip2=$db->super_query("SELECT ipc,ipblock FROM tb_users WHERE email='".$db->safesql($username)."'"); $sqlip=$db->get_row($sqlip2); $ipblock=$sqlip["ipblock"]; $ipc=$sqlip["ipc"]; if($ipc=="1"){if($ipblock!=$lastip){ echo "<h7> Ваш IP адрес не соответствует тому для которого разрешен доступ в аккаунт! </h7>"; include('footer.php'); exit();}} /////////////// ТУТ $nameus=$username; $db->query("UPDATE tb_users SET lastiplog='$lastip' WHERE id='$_SESSION[iduser]'");$allsqls++; $rres2=$db->super_query("SELECT username FROM tb_users WHERE id='$_SESSION[iduser]'"); $rres=$db->get_row($rres2); $_SESSION["username"]=strtolower($rres[username]); $_SESSION["password"]=$password; $varstr=date("w"); $row=$db->query("select date from tb_statistic where typ=0 and username='".$db->safesql($username)."'"); if($db->num_rows($row)==0) { $db->query("INSERT INTO tb_statistic (date,username) values ('$varstr','$_SESSION[username]')") or die(mysqli_error()); } $row=$db->get_row($row); if($row["date"]!=$varstr) { $day=''; if($varstr=='1') $day='mon'; if($varstr=='2') $day='tue'; if($varstr=='3') $day='wed'; if($varstr=='4') $day='thu'; if($varstr=='5') $day='fri'; if($varstr=='6') $day='sat'; if($varstr=='0') $day='sun'; $db->query("UPDATE tb_statistic SET date=".$varstr." , ".$day."=0 WHERE username='".$db->safesql($username)."'"); } echo "<h7> Вы успешно авторизовались!Ожидайте перенаправления! </h7>"; include('footer.php'); ?> <script type="text/javascript"> location.replace("members.php"); </script> <noscript> <meta http-equiv="refresh" content="0; url=members.php"> </noscript> <? } } }else{ include('header.php'); ?> <script> function refresh_on(_element_id) { var element = document.getElementById(_element_id); if (element) { element.src = element.src + '?' + (new Date()).getMilliseconds() ; } }</script> <script type="text/javascript" src="js/jsble.js"> </script> <script type="text/javascript" src="js/ololo.js"> </script> <h1>Добро пожаловать на <?=$sitename?>!</h1><br> Для входа в свой аккаунт на <span class='seosprint'><?=$sitename?></span>, введите ваш регистрационный e-mail, пароль и проверочный код с картинки. . <h2>Форма входа в свой аккаунт</h2> <form method="post" name="reg" action="" onsubmit="return VerifyRegForm(); return false;"> <table class='profile' width='100%' border='0' cellpadding='0' cellspacing='0' style='margin-bottom: 0;'> <tr> <td width="45%"><b>Укажите ваш E-mail<br></b></td> <td class="value"><input class="val" type="text" name="logusername" size="30" maxlength="30" value="" /></td> </tr> <tr> <td><b>Укажите ваш Пароль</b><br /><span style="font-size: 11px;"></span></td> <td class="value"><input class="val" type="password" name="logpassword" size="30" maxlength="40" value="" /></td> </tr> <tr> <tr> <td colspan="2" style="background-color: #f5f5b5; text-align: center;"> Если вы забыли свой пароль, нажмите <b>[url="/restorepass.php"]здесь[/url]</b> </td> </tr> <tr> <td colspan="2" align="center"><h2>Сколько звезд вы видите?</h2> <table border="0" cellpadding="0" cellspacing="0" align="center"> <td valign="middle"><img src="image.php?<?php echo htmlspecialchars($res) ; ?>" class="imgcap" alt="" /></td> <div class="note"> <td valign="middle"><input type="hidden" name="code" value="0"> <input class="regnum" name="code" value="1" onclick="vernum(this.form,1); submit();" type="submit"> <input class="regnum" name="code" value="2" onclick="vernum(this.form,2); submit();" type="submit"> <input class="regnum" name="code" value="3" onclick="vernum(this.form,3); submit();" type="submit"> <input class="regnum" name="code" value="4" onclick="vernum(this.form,4); submit();" type="submit"><br /> <input class="regnum" name="code" value="5" onclick="vernum(this.form,5); submit();" type="submit"> <input class="regnum" name="code" value="6" onclick="vernum(this.form,6); submit();" type="submit"> <input class="regnum" name="code" value="7" onclick="vernum(this.form,7); submit();" type="submit"> <input class="regnum" name="code" value="8" onclick="vernum(this.form,8); submit();" type="submit"></td> </div> </tr></table> </td> </tr> </table> </form> <br><br><br><br><br><br><br><br> <div id="entermsg"></div> <?include('footer.php');}?> Добавлено спустя 5 минут 37 секунд: Да и вообще,мне почему то кажется,что проблема вся в "вязке" с БД Как решить эту проблему?
Код дыряяяяяявый. Про SQL-инъекции не слыхали совсем? Потом, а что у вас в базе лежит? Открытый пароль или хеш?
Про sql-инъекции слыхал! А код авторизации лучше менять или переписать существующий? Пока открытый пароль,но я этим и задаюсь вопросом,чтоб захешировать данные... Думаете,в этом коде php причина того,что с БД данные не синхронизируются?
Ну это надо вашу базу смотреть то же, смотреть, какой запрос уходит. Попробуйте напечатать запрос, ввести в базу вручную. Конечно, качество кода отвратное просто, но сможете ли сами переделать - не знаю. Код сейчас уязвим к инъекциям. Добавлено спустя 1 минуту 12 секунд: $db->super_query - а это что за зверь? если $db - это mysqli, там такого метода нету.
сам не понял)) скрипт чужой! Вот нашел ошибку в запросе к базе БД,отвечающую за успешную авторизацию Код (PHP): 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
Ну прежде чем разбирать чужой скрипт, надо php выучить. Видно же, что тут не так - кусок php-кода попал в sql-запрос. Наймите кого-нибудь разгребать эту конюшню (себя не предлагаю, очень занят)
Этот пхп код как раз по версии не читаем базой mysql-весь скрипт,думаю,со временем усовершенствую по защите,а вот именно этот запрос и причиняет неудобства! я с php знаком на среднем уровне и то,это было с десятки лет назад,но и не с такими версиями как PDO, MYSQLI
Ладно...с запросом я разобрался...там and не хватало,чтоб разбить функцию на две колонки... Но всё же,возможно,что изза моего конфиг файла с настройками подключения к БД(может не правильно прописан!) не отображаются части данных,вписаных в таблицу БД?