Доброго времени суток! вот только сейчас заметил, что в отзывах нет картинки с кодом (капча). в логах вот такая ошибка есть: PHP Warning: Cannot modify header information - headers already sent by (output started at /home/promotop/domains/z-ledy.ru/public_html/catalog/language/russian/russian.php:1) in /home/*****/domains/****/public_html/system/library/captcha.php on line 40 Помогите пожалуйста разобраться!
Просмотрите внимательно файлы, на которые указывает ошибка. Возможно, какие-нибудь левые символы в начале или конце файла, или не в той кодировке сохранено
Проверил файлы вроде как все в порядке, на всякий случай перезалил новый из дистрибутива. Еще одну ошибку в логах увидел: PHP Warning: Cannot modify header information - headers already sent by (output started at /home/promotop/domains/z-ledy.ru/public_html/catalog/language/russian/russian.php:1) in /home/promotop/domains/z-ledy.ru/public_html/system/library/currency.php on line 45 Может у кого есть какие предположения по этим ошибкам?
Вот 45 строка: setcookie('currency', $currency, time() + 60 * 60 * 24 * 30, '/', $this->request->server['HTTP_HOST']); Вот файл: PHP: <?phpclass Currency { private $code; private $currencies = array(); public function __construct($registry) { $this->config = $registry->get('config'); $this->db = $registry->get('db'); $this->language = $registry->get('language'); $this->request = $registry->get('request'); $this->session = $registry->get('session'); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency"); foreach ($query->rows as $result) { $this->currencies[$result['code']] = array( 'currency_id' => $result['currency_id'], 'title' => $result['title'], 'symbol_left' => $result['symbol_left'], 'symbol_right' => $result['symbol_right'], 'decimal_place' => $result['decimal_place'], 'value' => $result['value'] ); } if (isset($this->request->get['currency']) && (array_key_exists($this->request->get['currency'], $this->currencies))) { $this->set($this->request->get['currency']); } elseif ((isset($this->session->data['currency'])) && (array_key_exists($this->session->data['currency'], $this->currencies))) { $this->set($this->session->data['currency']); } elseif ((isset($this->request->cookie['currency'])) && (array_key_exists($this->request->cookie['currency'], $this->currencies))) { $this->set($this->request->cookie['currency']); } else { $this->set($this->config->get('config_currency')); } } public function set($currency) { $this->code = $currency; if (!isset($this->session->data['currency']) || ($this->session->data['currency'] != $currency)) { $this->session->data['currency'] = $currency; } if (!isset($this->request->cookie['currency']) || ($this->request->cookie['currency'] != $currency)) { setcookie('currency', $currency, time() + 60 * 60 * 24 * 30, '/', $this->request->server['HTTP_HOST']); } } public function format($number, $currency = '', $value = '', $format = true) { if ($currency && $this->has($currency)) { $symbol_left = $this->currencies[$currency]['symbol_left']; $symbol_right = $this->currencies[$currency]['symbol_right']; $decimal_place = $this->currencies[$currency]['decimal_place']; } else { $symbol_left = $this->currencies[$this->code]['symbol_left']; $symbol_right = $this->currencies[$this->code]['symbol_right']; $decimal_place = $this->currencies[$this->code]['decimal_place']; $currency = $this->code; } if ($value) { $value = $value; } else { $value = $this->currencies[$currency]['value']; } if ($value) { $value = (float)$number * $value; } else { $value = $number; } $string = ''; if (($symbol_left) && ($format)) { $string .= $symbol_left; } if ($format) { $decimal_point = $this->language->get('decimal_point'); } else { $decimal_point = '.'; } if ($format) { $thousand_point = $this->language->get('thousand_point'); } else { $thousand_point = ''; } $string .= number_format(round($value, (int)$decimal_place), (int)$decimal_place, $decimal_point, $thousand_point); if (($symbol_right) && ($format)) { $string .= $symbol_right; } return $string; } public function convert($value, $from, $to) { if (isset($this->currencies[$from])) { $from = $this->currencies[$from]['value']; } else { return 0; } if (isset($this->currencies[$to])) { $to = $this->currencies[$to]['value']; } else { return 0; } return $value * ($to / $from); } public function getId($currency = '') { if (!$currency) { return $this->currencies[$this->code]['currency_id']; } elseif ($currency && isset($this->currencies[$currency])) { return $this->currencies[$currency]['currency_id']; } else { return 0; } } public function getSymbolLeft($currency = '') { if (!$currency) { return $this->currencies[$this->code]['symbol_left']; } elseif ($currency && isset($this->currencies[$currency])) { return $this->currencies[$currency]['symbol_left']; } else { return ''; } } public function getSymbolRight($currency = '') { if (!$currency) { return $this->currencies[$this->code]['symbol_right']; } elseif ($currency && isset($this->currencies[$currency])) { return $this->currencies[$currency]['symbol_right']; } else { return ''; } } public function getDecimalPlace($currency = '') { if (!$currency) { return $this->currencies[$this->code]['decimal_place']; } elseif ($currency && isset($this->currencies[$currency])) { return $this->currencies[$currency]['decimal_place']; } else { return 0; } } public function getCode() { return $this->code; } public function getValue($currency = '') { if (!$currency) { return $this->currencies[$this->code]['value']; } elseif ($currency && isset($this->currencies[$currency])) { return $this->currencies[$currency]['value']; } else { return 0; } } public function has($currency) { return isset($this->currencies[$currency]); }}?>
Это же не ошибки, а ворнинги. Они не могут на работоспособность каптчи повлиять. Я бы тоже посоветовал перезалить стандартный файл капчи. Да и вообще - зачем она Вам? так уж боитесь нашествия спамеров? Во многих случаях она не только плохих спамеров останавливает...
Да по сути дела она и не нужна, но без нее невозможно оставить отзыв. Пишет, что: "Код, указанный на картинке, введен неверно!" Файлы перезалил, не помогло(