Перейти к содержимому

Сервис обмена электронных валют


При переносе на другой хостинг сбилась кодировка комментариев

#1 cap4369

cap4369
  • Пользователь
  • 62 сообщений
  • Репутация: 1
0

Отправлено 29 Декабрь 2013 - 17:46

Здравствуйте!
Может кто сталкивался с такой проблемой? Перенес сайт на хостинг, все работает нормально за исключением добавления комментариев, они почему- то заносятся в базу данных в кодировке CP1251. Тех служба мне говорит, что скрипт в этой кодировке. Но у меня в текстовом редакторе выставлена кодировка UTF-8 по умолчанию. Да и на Денвере работало без проблем. Я на всякий случай еще раз сохранил скрипт в UTF-8.
Да и в самом скрипте указано, что переменные, значения полей указываются в этой кодировке. Вот код обработчика:
<?php
session_start();
require "config.php";
if($_POST['submit']) {
$name = trim(mysql_real_escape_string(mb_substr($_POST['name'],0,20,'UTF-8')));
$comment = trim(mysql_real_escape_string(mb_substr($_POST['comment'],0,1000,'UTF-8')));
$captcha = $_POST['captcha'];

if(empty($name)) $error = " <p><b>Введите имя</b></p>";
if(empty($comment)) $error .= "<p><b>Введите комментаий</b></p>";
if(empty($captcha)) $error ."<p><b>Введите ответ</b></p>";
if($captcha != $_SESSION['res_captcha']) $error .= "<p><b>Не верный ответ</p>";

if(empty($error)){
  $res = mysql_query("INSERT INTO `comments_fest` SET `name` = '$name', `comment` = '$comment'");
  if(mysql_affected_rows() >0) {
   $_SESSION['res_comm'] = '<p><strong>Спасибо! Ваше сообщение добавлено.</strong></p>';
   header("Location: $site_url?option=blysc#res_comm");
   exit();
  }
  else {
   $_SESSION['res_comm'] = '<p><strong>Ваше сообщение не добавлено. Попробуйте позже.</strong></p>';
   header("Location: $site_url?option=blysc#res_comm");
   exit();
  }
}
else {
  $_SESSION['res_comm'] = '<p><strong>Ошибка заполнения формы:</strong></p>'.$error;
  $_SESSION['name'] = $name;
  $_SESSION['comment'] = $comment;
  header("Location: $site_url?option=blysc#res_comm");
  exit();
}
}
?>

 

 

  • 0

#2 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 29 Декабрь 2013 - 18:08

В файл htaccess добавьте следующее

php_value default_charset UTF-8

  • 0

#3 cap4369

cap4369
    Topic Starter
  • Пользователь
  • 62 сообщений
  • Репутация: 1

Отправлено 29 Декабрь 2013 - 18:15

На хостинге стоит запрет на php_value и php_flag. И у меня в .htaccess обозначено AddDefaultCharset utf-8
Вот ссылка на страницу http://www.s-lapkovs...m/?option=blysc
  • 0

#4 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 29 Декабрь 2013 - 18:16

А при подключении к базе кодировка указана?
  • 0

#5 cap4369

cap4369
    Topic Starter
  • Пользователь
  • 62 сообщений
  • Репутация: 1

Отправлено 29 Декабрь 2013 - 18:26

Нет, а как она указывается? Но ведь в других формах, например в админке, данные в БД заносятся в нормальной кодировке.
  • 0

#6 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 29 Декабрь 2013 - 18:33

Ну тогда не знаю почему так происходит, возможно где-то ошибка в кодировке всё же.
Для MySQL так
mysql_query('SET NAMES `utf8`');

  • 0

#7 cap4369

cap4369
    Topic Starter
  • Пользователь
  • 62 сообщений
  • Репутация: 1

Отправлено 29 Декабрь 2013 - 18:54

Все, разобрался, спасибо! Эту строку нужно писать в скрипте перед запросом

$res = mysql_query("INSERT INTO `comments_fest` SET `name` = '$name', `comment` = '$comment'");


  • 0

#8 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 30 Декабрь 2013 - 09:42

cap4369, какую именно? Ту что я дал с кодировкой? Её лучше указать вместе с подключением к БД, тогда она будет распространена для всех запросов. Иначе потом могут быть проблемы с дампом базы данных. Я сам когда-то так полностью потерял базу
  • 0

#9 cap4369

cap4369
    Topic Starter
  • Пользователь
  • 62 сообщений
  • Репутация: 1

Отправлено 30 Декабрь 2013 - 17:47

Спасибо, переделал
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru