致命错误:未捕获错误:在第 10 行的 C:\wamp64\www\prac1\mongoxd.php 中找不到类“MongoDB\Client”

问题描述 投票:0回答:1

我正在尝试创建一个用户必须通过密码和用户名字段登录的网站。如果用户名和密码正确,网站必须显示登录成功的消息。重要的是,密码字段容易受到 nosql 注入的攻击,例如“[$ne]=1”。目标是,如果我放置一个存在的用户并执行 nosql 注入,我应该收到消息“日志成功”。

问题是我必须连接到 mongoDB 数据库,但它告诉我连接不正确。我收到以下错误:

( ! ) 致命错误:未捕获错误:在第 10 行的 C:\wamp64\www\prac1\mongoxd.php 中找不到类“MongoDB\Client”

( ! ) 错误:在第 10 行的 C:\wamp64\www\prac1\mongoxd.php 中找不到类“MongoDB\Client”

我的代码有什么问题?如果您想知道,我已经在 PHP 中安装了 mongodb 扩展。

<?php


if ($_SERVER["REQUEST_METHOD"] == "POST") {
    
    $username = $_POST["username"];
    $password = $_POST["password"];

    
    $mongoClient = new \MongoDB\Client("mongodb://localhost:27017");

 
    $collection = $mongoClient->Users->users_info;
    $cursor = $collection->find(['Name' => $_GET['Name'], 'Password' => $_GET['Password']]);

   
    if ($cursor->count() > 0) {
        echo "Log successful";
    } else {
        echo "Error";
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Login (Inseguro)</title>
</head>
<body>
    <h2>Login</h2>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
        <label for="username">User name:</label>
        <input type="text" name="username" required><br>

        <label for="password">Password:</label>
        <input type="text" name="password" required><br>

        <input type="submit" value="Login">
    </form>
</body>
</html>
php mongodb apache wamp
1个回答
0
投票

你是如何安装MongoDB\Client的?

请注意,如果您是通过 Composer 安装的,如下所示:

composer require mongodb/mongodb

您应该包含这样的自动加载:

require_once 'vendor/autoload.php';

除此之外,“new”一词之前不需要额外的反斜杠,你可以像这样更改它:

$mongoClient = new MongoDB\Client("mongodb://localhost:27017");

另外,请确保您的 php.ini 文件启用了该扩展

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.