PHP MySqli,SSL和mysqli_real_escape_string不起作用

时间:2017-08-29 12:48:39

标签: php ssl mysqli

当我使用PHP,MySQLI和激活的SSL连接到外部MySQL-DB(MariaDB 10)时......:

    /* create a connection object which is not connected */
    $conn = new mysqli(); 
    $conn->init( );
    /* set connection options */ 
    $conn->options( MYSQLI_OPT_CONNECT_TIMEOUT, $timeout );
    /*connect to server*/
    $conn->real_connect($SQL_Server, $SQL_Benutzer, $SQL_Passwort, $SQL_Datenbank, 3306, NULL, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);

......我不能用:

     mysqli_real_escape_string($conn, $_GET['clientid'])

...或...

     $conn->mysqli_real_escape_string($_GET['clientid'])

结果将为空。当我禁用SSL时......:

     $conn->real_connect($SQL_Server, $SQL_Benutzer, $SQL_Passwort, $SQL_Datenbank, 3306);

......它会起作用。

在我的带有XAMPP的iMac上,它也适用于SSL-Connection。只有当我使用PHP7.1在我的网站空间(Strato www.strato.de)上传PHP脚本时,它才能用于SSL-Connection。

那么,为什么我不能在我的网站空间中使用带有ssl-connection的“escape_string”?

编辑:

这是我如何检查连接错误:

function sql_connect($Datenbank){
    $Servernr = get_ServerNr();
    $Server = get_Server($Servernr);
    $SQL_Servernr = $Server->Nr;
    $SQL_Server = $Server->Url;
    $SQL_Benutzer = $Server->Benutzer;
    $SQL_Passwort = $Server->Passwort;
    $SQL_Datenbank = $Datenbank;
    $timeout = 5;

    $conn = new mysqli(); 
    $conn->init( );
    $conn->options( MYSQLI_OPT_CONNECT_TIMEOUT, $timeout );
    $conn->real_connect($SQL_Server, $SQL_Benutzer, $SQL_Passwort, $SQL_Datenbank, 3306, NULL, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);
    if ($conn->connect_errno) {
        echo $conn->connect_errno;
        die();
    }
    return $conn;
} 

编辑2:

现在我激活了E_ALL-Error Reporting:

  

注意:使用未定义的常量MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT - 在第101行的/mnt/web022/d2/18/51779718/htdocs/webservice_config/dbserver2.php中假定为'MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT'

     

警告:mysqli :: real_connect()期望参数7为整数,字符串在第101行的/mnt/web022/d2/18/51779718/htdocs/webservice_config/dbserver2.php中给出

     

警告:mysqli_real_escape_string():第34行/mnt/web022/d2/18/51779718/htdocs/webservice_imikelgo/test.php中的无效对象或资源mysqli

     

警告:mysqli_query():第38行/mnt/web022/d2/18/51779718/htdocs/webservice_imikelgo/test.php中的无效对象或资源mysqli

     

致命错误:未捕获错误:在/mnt/web022/d2/18/51779718/htdocs/webservice_imikelgo/test.php:40中调用null上的成员函数fetch_assoc()堆栈跟踪:#0 {main}抛出第40行/mnt/web022/d2/18/51779718/htdocs/webservice_imikelgo/test.php

使用XAMPP我没有收到此通知。我怎么能解决这个问题?

0 个答案:

没有答案