Member 14761407 Ответов: 2

Ошибка входа в систему управления библиотекой проекта


я скачал и установил систему управления библиотекой по ссылке, указанной ниже
https://download.code-projects.org/media/2020/02/LIBRARY_SYSTEM_IN_PHP_WITH_SOURCE_CODE.zip

После установки в соответствии с видеоуроками я получаю ошибку, упомянутую ниже

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\Lms\Source\librarian\index.php on line 59


Поскольку я студент BCA, я новичок в php и mysql. Поэтому я прошу Вас указать мне, как решить эту проблему

Что я уже пробовал:

<?php
    session_start();
    include 'inc/connection.php';
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Library Management System</title>
    <link rel="stylesheet" href="inc/css/bootstrap.min.css">
    <link rel="stylesheet" href="inc/css/fontawesome-all.min.css">
    <link rel="stylesheet" href="inc/css/pro1.css">
    <link href="https://fonts.googleapis.com/css?family=Montserrat:400,500,600" rel="stylesheet">
    <style>
        .login{
            background-image: url(inc/img/3.jpg);
            margin-bottom: 30px;
            padding: 50px;
            padding-bottom: 70px;
        }
        .reg-header h2{
            color: #DDDDDD;
            z-index: 999999;
        }
        .login-body h4{
            margin-bottom: 20px;
        }
    </style>
</head>
<body>
    <div class="login registration">
        <div class="wrapper">
            <div class="reg-header text-center">
                <h2>Library management system</h2>
                <div class="gap-30"></div>
                <div class="gap-30"></div>
            </div>
            <div class="gap-30"></div>
            <div class="login-content">
                <div class="login-body">
                    <h4>Librarian Login Form</h4>
                    <form action="" method="post">
                        <div class="mb-20">
                            <input type="text" name="username" class="form-control" placeholder="Username" required=""/>
                        </div>
                        <div class="mb-20">
                            <input type="password" name="password" class="form-control" placeholder="Password" required=""/>
                        </div>
                        <div class="mb-20">
                            <input class="btn btn-info submit" type="submit" name="login" value="Login">
                            
                        </div>
                    </form>
                </div>
                <?php
                if (isset($_POST["login"])) {
                    $count=0;
                    $res= mysqli_query($link, "select * from lib_registration where username='$_POST[username]' && password= '$_POST[password]' ");
                    $count = mysqli_num_rows($res);
                    if ($count==0) {
                        ?>
                        <div class="alert alert-warning">
                            Invalid! <span style="color: red;font-weight: bold; ">Username Or Password.</span>
                        </div>
                    <?php
                    }
                    else{
                    $_SESSION["username"] = $_POST["username"];
                    ?>
                        <script type="text/javascript">
                            window.location="dashboard.php";
                        </script>
                        <?php
                    }
                }
                ?>
            </div>
        </div>
    </div>
    <div class="footer text-center">
        <p>© All rights reserved utter pompously</p>
    </div>

<script src="inc/js/jquery-2.2.4.min.js"></script>
<script src="inc/js/bootstrap.min.js"></script>
<script src="inc/js/custom.js"></script>
</body>
</html>

2 Ответов

Рейтинг:
0

Richard Deeming

Цитата:
$res= mysqli_query($link, "select * from lib_registration where username='$_POST[username]' && password= '$_POST[password]' ");
Откуда бы вы ни взяли этот код, вы должны удалить его, заблокировать сайт и забыть все, что вы там прочитали.

Этот код уязвим для SQL-инъекция[^В течение пяти минут после того, как ваш сайт станет общедоступным, ваша база данных будет украдена или подвергнута вандализму.

PHP: SQL-инъекция - руководство пользователя[^]
РНР: Подготовленные инструкции и хранимые процедуры - руководство пользователя[^]

Код также хранит пароли пользователей в базе данных в виде обычного текста, что абсолютно неправильно. Это особенно отвратительно, поскольку PHP предоставляет встроенные функции, которые помогут вам правильно обращаться с паролями.

Безопасная Аутентификация Паролем Объясняется Просто[^]
PHP: password_hash[^]
РНР: функцию password_verify[^]

И, как вы обнаружили, код даже не обрабатывает основную проверку ошибок базы данных правильно.

Учитывая серьезные уязвимости безопасности в этом небольшом образце кода, все, что вы узнали с этого сайта, скорее всего, будет опасно неверным.


Richard MacCutchan

Я пошел на исходный сайт и посмотрел. Ужасные примеры, и бог знает, сколько коммерческих организаций свалили часть этого на них.

Рейтинг:
0

Richard MacCutchan

Вы не указали, какая строка 59 выше, но я предполагаю, что это вторая из этих двух:

$res= mysqli_query($link, "select * from lib_registration where username='$_POST[username]' && password= '$_POST[password]' ");
$count = mysqli_num_rows($res);

Это сообщение означает, что mysqli_query вызов не удался и вернул логическое значение false Вы всегда должны сначала проверить возвращаемые значения, чтобы увидеть, были ли вызовы успешными .