[Помогите] Ошибка в index.php файле

Тема в разделе "OpenCart", создана пользователем eGeo, 5 июл 2017.

Метки:
  1. eGeo

    eGeo

    Регистрация:
    30 авг 2013
    Сообщения:
    170
    Симпатии:
    6
    Вот эту ошибку выдает:
    Fatal error: Call to undefined method DB::esсape() in /www/polvmire/www/htdocs/index.php on line 52

    Вот эта злополучная строка:
    // Store
    Код:
    // Store
    49.    if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) {
    50.   $store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`ssl`, 'www.', '') = '" . $db->escape('https://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
    51.      } else {
    52.     $store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`url`, 'www.', '') = '" . $db->esсape('http://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
    53.  }
    Как исправить?
     
  2. Master2KAZ

    Master2KAZ

    Регистрация:
    25 окт 2014
    Сообщения:
    183
    Симпатии:
    72
    Посмотрите файл system/library/db.php
    Скорее всего в нем нет функции esсape
     
  3. eGeo

    eGeo

    Регистрация:
    30 авг 2013
    Сообщения:
    170
    Симпатии:
    6
    Спасибо за помощь! Но вот смотрите:
    Код:
    <?php
    class DB {
        private $driver;
        
        public function __construct($driver, $hostname, $username, $password, $database) {
            if (file_exists(DIR_DATABASE . $driver . '.php')) {
                require_once(DIR_DATABASE . $driver . '.php');
            } else {
                exit('Error: Could not load database file ' . $driver . '!');
            }
                    
            $this->driver = new $driver($hostname, $username, $password, $database);
        }
            
          public function query($sql) {
            return $this->driver->query($sql);
          }
        
        public function escape($value) {
            return $this->driver->escape($value);
        }
        
          public function countAffected() {
            return $this->driver->countAffected();
          }
    
          public function getLastId() {
            return $this->driver->getLastId();
          }   
    }
    ?>
    Это указанный вами файл. И функция esсape там есть.
     
  4. settr

    settr

    Регистрация:
    12 окт 2016
    Сообщения:
    67
    Симпатии:
    54
    Посмотрите еще в system/database/mysql.php (или mysqli.php еслы вы используете mysqli)
    Там тоже должен быть метод escape()
     
  5. eGeo

    eGeo

    Регистрация:
    30 авг 2013
    Сообщения:
    170
    Симпатии:
    6
    Вот указанный вами файл. И там есть эта функция (60 строка):
    Код:
    <?php
    final class MySQLi {
        private $mysqli;
        
        public function __construct($hostname, $username, $password, $database) {
            $this->mysqli = new mysqli($hostname, $username, $password, $database);
            
            if ($this->mysqli->connect_error) {
                  trigger_error('Error: Could not make a database link (' . $this->mysqli->connect_errno . ') ' . $this->mysqli->connect_error);
            }
            
            $this->mysqli->query("SET NAMES 'utf8'");
            $this->mysqli->query("SET CHARACTER SET utf8");
            $this->mysqli->query("SET CHARACTER_SET_CONNECTION=utf8");
            $this->mysqli->query("SET SQL_MODE = ''");
          }
            
          public function query($sql) {
            $result = $this->mysqli->query($sql);
    
            
    
            if ($this->mysqli->errno) {
            //$mysqli->errno
            }
            
                if (is_resource($resource)) {
                    $i = 0;
            
                    $data = array();
            
                    while ($row = $result->fetch_object()) {
                        $data[$i] = $row;
            
                        $i++;
                    }
    
                    $result->close();
                    
                    $query = new stdClass();
                    $query->row = isset($data[0]) ? $data[0] : array();
                    $query->rows = $data;
                    $query->num_rows = $result->num_rows;
                    
                    unset($data);
                    
                    
                    
                    
                    return $query;   
                } else {
                    return true;
                }
            } else {
                trigger_error('Error: ' . mysql_error($this->link) . '<br />Error No: ' . mysql_errno($this->link) . '<br />' . $sql);
                exit();
            }
          }
        
        public function escape($value) {
            return $this->mysqli->real_escape_string($value);
        }
        
          public function countAffected() {
            return $this->mysqli->affected_rows;
          }
    
          public function getLastId() {
            return $this->mysqli->insert_id;
          }   
        
        public function __destruct() {
            $this->mysqli->close();
        }
    }
    ?>
    --- Добавлено, 5 июл 2017 ---
    Все было нормально. Но в день передачи мне этого интернет магазину, утром кто-то вошел и в 10.15 изменил файл index.php
     
  6. Master2KAZ

    Master2KAZ

    Регистрация:
    25 окт 2014
    Сообщения:
    183
    Симпатии:
    72
    А у вас точно драйвер mysqli? И покажите файл index.php и config.php полностью.
     
  7. eGeo

    eGeo

    Регистрация:
    30 авг 2013
    Сообщения:
    170
    Симпатии:
    6
    Спасибо всем! Оказалось просто поменяли английскую букву на русскую...
    Отсюда вопрос: есть ли сервис (программа) позволяющая обнаружить в английском тексте русскую букву (или что-то подобное)?. Теперь понятно для чего такой сервис нужен...
     
  8. Master2KAZ

    Master2KAZ

    Регистрация:
    25 окт 2014
    Сообщения:
    183
    Симпатии:
    72
    Жесть! ))) Я думаю 90% программистов такое даже в голову не придет )))
     
  9. ISomeInterface

    ISomeInterface

    Регистрация:
    4 окт 2016
    Сообщения:
    106
    Симпатии:
    76
    Обычно такие вещи делают когда заказчик не выполняет обязательства по оплате труда программиста. Тонкий намек о том что проект сдан, а денег все еще нет. Просто странно что вы спрашиваете об этом тут, а не у тех кто вам этот проект сдавал. :threaten:
     
    Последнее редактирование: 8 июл 2017
    Master2KAZ нравится это.
  10. Master2KAZ

    Master2KAZ

    Регистрация:
    25 окт 2014
    Сообщения:
    183
    Симпатии:
    72
    :Acute: "А ларчик просто открывался!" (с) Крылов
     
  11. eGeo

    eGeo

    Регистрация:
    30 авг 2013
    Сообщения:
    170
    Симпатии:
    6
    Программист взял 50 т.р. и его третий год ищут :threaten:.... причем, несколько заказчиков! Давно нет у него доступов. А поменять букву может и не программист ... Так что кидают и программистов, и программисты кидают :Acute:
     
  12. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Любопытно, как предыдущие два года сайт работал с этой опечаткой? :Smile:
     
  13. ISomeInterface

    ISomeInterface

    Регистрация:
    4 окт 2016
    Сообщения:
    106
    Симпатии:
    76
    Да тут много что не сходится. В день сдачи кто-то что-то изменил. День сдачи был когда? 3 года назад? Как сайт работал 3 года? Почему вы пытаетесь исправить эту ошибку только спустя 3 года?
     
    Последнее редактирование: 9 июл 2017
  14. eGeo

    eGeo

    Регистрация:
    30 авг 2013
    Сообщения:
    170
    Симпатии:
    6
    Какой сдачи? Сдали давно и работал... Потом читайте внимательно и не придется вас поправлять)
     
  15. Master2KAZ

    Master2KAZ

    Регистрация:
    25 окт 2014
    Сообщения:
    183
    Симпатии:
    72
    Программист кидает когда не может сделать работу, а заказчик когда работа уже сделана. Если работа сделана и сдается - то программисту нет смысла кидать заказчика.
    А насчет 50 т.р. - дико интересно кто же делает такие предоплаты удаленному программисту? Познакомьте, может и я его кину... :Biggrin:
     
  16. ISomeInterface

    ISomeInterface

    Регистрация:
    4 окт 2016
    Сообщения:
    106
    Симпатии:
    76
    Тогда объясните эту фразу. Что вам передавали? И когда?
     
  17. eGeo

    eGeo

    Регистрация:
    30 авг 2013
    Сообщения:
    170
    Симпатии:
    6
    А вы что думаете передавали? :Biggrin: Нуу.. с 3-х раз)