0

まず、タイトルがわかりにくかったらすみません(何を扱っているか説明するのが難しいと思いますし、英語は私の母国語ではありません)。

これら 2 つのスクリプトにより、次の 3 つの警告が発生します。

警告: セキュリティ上の理由から、/home/username/public_html/xxx/libraries/adodb/drivers/adodb-mysql.inc.php の 227 行目で mysql_pconnect() が無効になっています

警告: mysql_real_escape_string() [function.mysql-real-escape-string]: /home/username/public_html/xxx/include/config.php のユーザー 'root'@'localhost' (パスワードを使用: NO) のアクセスが拒否されました140行目

警告: mysql_real_escape_string() [function.mysql-real-escape-string]: サーバーへのリンクを /home/username/public_html/xxx/include/config.php 行 140 で確立できませんでした

構成 PHP

    if($sban != "1")
{
    $bquery = "SELECT count(*) as total from bans_ips WHERE ip='".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."'";
    $bresult = $conn->execute($bquery);
    $bcount = $bresult->fields['total'];
    if($bcount > "0")
    {
        $brdr = $config['baseurl']."/banned.php";
        header("Location:$brdr");
        exit;
    }
}

adodb-mysql.inc.php

function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename)
    {
        if (ADODB_PHPVER >= 0x4300)
            $this->_connectionID = mysql_pconnect($argHostname,$argUsername,$argPassword,$this->clientFlags);
        else
            $this->_connectionID = mysql_pconnect($argHostname,$argUsername,$argPassword);
        if ($this->_connectionID === false) return false;
        if ($this->autoRollback) $this->RollbackTrans();
        if ($argDatabasename) return $this->SelectDB($argDatabasename);
        return true;    
    }

私が理解していないのは、localhost を使用しても他のホスティングを使用してもエラーがないということです (2 つのホスティング サービスがあり、うまく機能するのは 1 つだけです)。

非常に初心者の方法で何をすべきか教えてください。

事前にどうもありがとうございました。

4

1 に答える 1

1

サブシステムではmysql_query、エスケープ関数が機能する前にアクティブな接続を定義する必要がありますが、わざわざこれを修正しないでください。代わりに、正しく使用しているデータベース ライブラリを使用してください。

この短い例では、どちらを使用しているのか明確ではありません。接続コードは省略されています。

PDO実行関数は値をバインドでき、mysqli bind_paramメソッドも同様です。どちらも完全に置き換えmysql_real_escape_stringます。

于 2013-05-03T16:41:02.763 に答える