Marius Cramer
2015-01-13 385f5459a9331f2dfe753cc64431dc3fc9ddc561
- added utf8 conversion to db escape function
2 files modified
73 ■■■■ changed files
interface/lib/classes/db_mysql.inc.php 36 ●●●● patch | view | raw | blame | history
server/lib/classes/db_mysql.inc.php 37 ●●●● patch | view | raw | blame | history
interface/lib/classes/db_mysql.inc.php
@@ -425,6 +425,34 @@
    }
    /**
     * check if a utf8 string is valid
     *
     * @access public
     * @param string  $string the string to check
     * @return bool true if it is valid utf8, false otherwise
     */
    private function check_utf8($str) {
        $len = strlen($str);
        for($i = 0; $i < $len; $i++){
            $c = ord($str[$i]);
            if ($c > 128) {
                if (($c > 247)) return false;
                elseif ($c > 239) $bytes = 4;
                elseif ($c > 223) $bytes = 3;
                elseif ($c > 191) $bytes = 2;
                else return false;
                if (($i + $bytes) > $len) return false;
                while ($bytes > 1) {
                    $i++;
                    $b = ord($str[$i]);
                    if ($b < 128 || $b > 191) return false;
                    $bytes--;
                }
            }
        }
        return true;
    } // end of check_utf8
    /**
     * Escape a string for usage in a query
@@ -442,16 +470,16 @@
            $sString = '';
        }
        /*$cur_encoding = mb_detect_encoding($sString);
        $cur_encoding = mb_detect_encoding($sString);
        if($cur_encoding != "UTF-8") {
            if($cur_encoding != 'ASCII') {
                $app->log('String ' . substr($sString, 0, 25) . '... is ' . $cur_encoding . '.', LOGLEVEL_WARN);
                $app->log('String ' . substr($sString, 0, 25) . '... is ' . $cur_encoding . '.', LOGLEVEL_INFO);
                if($cur_encoding) $sString = mb_convert_encoding($sString, 'UTF-8', $cur_encoding);
                else $sString = mb_convert_encoding($sString, 'UTF-8');
            }
        } elseif(!PXBase::check_utf8($sString)) {
        } elseif(!$this->check_utf8($sString)) {
            $sString = utf8_encode($sString);
        }*/
        }
        if($this->_iConnId) return mysqli_real_escape_string($this->_iConnId, $sString);
        else return addslashes($sString);
server/lib/classes/db_mysql.inc.php
@@ -390,6 +390,35 @@
    /**
     * check if a utf8 string is valid
     *
     * @access public
     * @param string  $string the string to check
     * @return bool true if it is valid utf8, false otherwise
     */
    private function check_utf8($str) {
        $len = strlen($str);
        for($i = 0; $i < $len; $i++){
            $c = ord($str[$i]);
            if ($c > 128) {
                if (($c > 247)) return false;
                elseif ($c > 239) $bytes = 4;
                elseif ($c > 223) $bytes = 3;
                elseif ($c > 191) $bytes = 2;
                else return false;
                if (($i + $bytes) > $len) return false;
                while ($bytes > 1) {
                    $i++;
                    $b = ord($str[$i]);
                    if ($b < 128 || $b > 191) return false;
                    $bytes--;
                }
            }
        }
        return true;
    } // end of check_utf8
    /**
     * Escape a string for usage in a query
     *
     * @access public
@@ -405,16 +434,16 @@
            $sString = '';
        }
        /*$cur_encoding = mb_detect_encoding($sString);
        $cur_encoding = mb_detect_encoding($sString);
        if($cur_encoding != "UTF-8") {
            if($cur_encoding != 'ASCII') {
                $app->log('String ' . substr($sString, 0, 25) . '... is ' . $cur_encoding . '.', LOGLEVEL_WARN);
                $app->log('String ' . substr($sString, 0, 25) . '... is ' . $cur_encoding . '.', LOGLEVEL_INFO);
                if($cur_encoding) $sString = mb_convert_encoding($sString, 'UTF-8', $cur_encoding);
                else $sString = mb_convert_encoding($sString, 'UTF-8');
            }
        } elseif(!PXBase::check_utf8($sString)) {
        } elseif(!$this->check_utf8($sString)) {
            $sString = utf8_encode($sString);
        }*/
        }
        if($this->_iConnId) return mysqli_real_escape_string($this->_iConnId, $sString);
        else return addslashes($sString);