php 警告:mysqli_connect():(HY 000/3159)的规定:当--require_secure_transport=ON时,禁止使用不安全传输的连接

1rhkuytd  于 2022-11-28  发布在  PHP
关注(0)|答案(1)|浏览(268)

对于一个项目,我试图使一个应用程序,其中用户可以输入他们的值,然而,当我在我的localhost上测试这个,我一直收到这个错误:警告:mysqli_connect():(HY 000/3159)的规定:当--require_secure_transport= ON时,使用不安全传输的连接被禁止。这是我的php代码:

$bedrijfsnaam = $_POST['bedrijfsnaam'];
    $dag = $_POST['dag'];
    $caption = $_POST['caption'];

    var_dump($bedrijfsnaam, 
             $dag, 
             $caption);

    $dbh = mysqli_connect(hostname: $host, 
                          username: $username, 
                          password: $password,
                          database: $dbname);

    if (mysqli_connect_errno()) {
        die("Connection error: " . mysqli_connect_errno());
    }

    $sql = "INSERT INTO file_upload (bedrijfsnaam, dag, caption)
    VALUES (?, ?, ?)"; 
    $stmt = mysqli_stmt_init($conn);

是否有一个安全的方法来修复这个错误,因为项目将不得不发布,从我的理解,这将是不安全的关闭secure_transport。

我曾尝试使用另一个外部数据库,这导致了另一个错误,连接被主动拒绝。代码确实工作,因为我曾尝试运行它localhost,它确实工作

bmp9r5qi

bmp9r5qi1#

您需要调用[mysqli_真实的_connect][1]并将$mysqli示例作为参数传入

$mysqli = mysqli_init();
        if (!$mysqli) {
            die('mysqli_init failed');
        }

        $mysqli->ssl_set(
            '/path/to/client-key.pem',
            '/path/to/client-cert.pem',
            '/path/to/ca-cert.pem',
            NULL,
            NULL
        ); //any paths here will work

        if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
            die('Setting MYSQLI_INIT_COMMAND failed');
        }

        if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
            die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
        }

然后传递给mysqli_真实的_connect

$dbh = mysqli_real_connect(mysql:$mysqli, hostname: $host, 
                          username: $username, 
                          password: $password,
                          database: $dbname);

  [1]: https://www.w3schools.com/Php/func_mysqli_real_connect.asp

相关问题