Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » обратная связь

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

bass2207

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общим имеется обратная связь на PHP и MySQL, все вроде нормально работает, за исключением одной проблемы, письма приходят какими то непонятны буквами, кодировку у файлов менял, не помогло, что интересно когда на английском пишешь письма приходят нормальные, но когда на русском пишешь приходит письмо с какими то иероглифами. Во общем нужна помощь, что надо сделать что бы нормально на русском приходили письма? Исходники прилагаются.
http://habrasorium.ru/engine/download.php?id=161

Всего записей: 6 | Зарегистр. 11-03-2014 | Отправлено: 11:50 11-03-2014
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что за кодировка, то на сайте?
Ну как вариант в php скрипт добавить первой строчкой

Код:
 
header('Content-Type: text/html; charset=НУЖНАЯ КОДИРОВКА');
 

или в .htaccess

Код:
 
AddDefaultCharset НУЖНАЯ КОДИРОВКА
 

 

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 12:18 11-03-2014
bass2207

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извиняюсь, ссылка на исходники что-то не работает нормально. вот ссылка на страницу формы http://habrasorium.ru/php/333-phpmysql-obratnaya-svyaz-s-jquery.html

Всего записей: 6 | Зарегистр. 11-03-2014 | Отправлено: 12:20 11-03-2014
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А забыл, в запросе тоже можно указать  

Код:
 
mysqli_query($con, "set CHARACTER SET НУЖНАЯ КОДИРОВКА");
 

 
Добавлено:
bass2207 вот содержимое файла db.php
просто замени

Код:
 
<?php
require_once("config.php"); /* Configuration File */
 
class DB{
    
    private $link;
    
    public function __construct(){
        $this->link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS,DB_NAME);
        if (mysqli_connect_errno())
            exit();
    }
    
    public function __destruct() {
        mysqli_close($this->link);
    }
    
    public function dbNewMessage($email,$name,$website,$message){
        $email          = mysqli_real_escape_string($this->link,$email);
        $name         = mysqli_real_escape_string($this->link,$name);
        $website     = mysqli_real_escape_string($this->link,$website);
        $message     = mysqli_real_escape_string($this->link,$message);
        
        mysqli_autocommit($this->link,FALSE);
        
        $query = "INSERT INTO CONTACT(pk_contact,name,email,website,message)  
                  VALUES('NULL','$name','$email','$website','$message')";
        mysqli_query($con, "set CHARACTER SET UTF8");
        mysqli_query($this->link,$query);
        
        if(mysqli_errno($this->link))
            return -1;
        else{
            mysqli_commit($this->link);
            return 1;
        }
    }    
};
?>
 

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 12:20 11-03-2014
bass2207

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не работает, вот что прходит на email Hi, п&#9569;п&#9567;п©п&#9569;п&#9567;п©(mail@mail.ru - ) sent you a message from yoursite.com
email: mail@mail.ru
message:  
п&#9569;п&#9567;п©п&#9569;п&#9567;п©п&#9569;п&#9567;п©п&#9569;п&#9567;
 
 
Добавлено:
Ну или что то похожее, просто на сайте такого не увидишь, меня кажется, что дело в файле is_email.php. С базой данных это никак не должно связываться.

Всего записей: 6 | Зарегистр. 11-03-2014 | Отправлено: 12:41 11-03-2014
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дело конечно каждого, но почему бы не использовать собственную форму обратной связи?
А не делать сайт по принципу copypaste?
В строке

Код:
 
mysqli_query($con, "set CHARACTER SET UTF8");  
 

Замените $con на $this->link
Моё упущение.
 
 
 
Добавлено:
is_email.php - Валидатор email адресов.

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 12:55 11-03-2014
bass2207

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Заменил, но все те же иероглифы приходят, не знаю а это не может быть из за того, что я тестирую на Денвере.

Всего записей: 6 | Зарегистр. 11-03-2014 | Отправлено: 13:04 11-03-2014
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никогда денвер не пользовал, тестирую на Ubuntu либо в виртуальной ОС, либо на отдельном серваке. А Денвер я так понял виндовая финтифлюшка? Тогда все возможно, у Вас хостинг же на Unix системе, вот на Unix системах и тестировать нужно. ИМХО.

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 13:17 11-03-2014
bass2207

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да я бы согласился с вами, но вот я много перепробовал форм обратной связи , да не все они работали нормально в плане присылаемого текста (тоже были иероглифы), но опять же стоило сменить кодировку и все нормально работает, но с этой формой, какая то фиговина твориться, она по сути мне не сильно то и надо, просто на будущее приглянулась, а ещё больше меня заинтересовала сама проблема, вот и решил поинтересоваться у народа в чём же проблема то.

Всего записей: 6 | Зарегистр. 11-03-2014 | Отправлено: 13:26 11-03-2014
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну форму то состряпать не хитрое дело. Отправляю почту через SMTP при помощи, как мне кажется лучшего скрипта на php php_LibMail . Ну и копию в БД, INSERT INTO дело то простое. Опять же чисто ИМХО

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 14:13 11-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bass2207
почитайте.. в заголовках письма нужно указывать кодировку.
Perl, PHP: отправка формы на e-mail
такую же, как и кодировка страницы. тег <meta> не определяет кодировку страницы - важно какую указывает сервер при выдаче html страницы с формой.
 
кодировка для mysql тут не столько важна, раз речь о кодировке отправляемых писем.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:32 12-03-2014 | Исправлено: Cheery, 05:32 12-03-2014
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Странно, а с чего я решил, что проблемы с кодировкой в БД?

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 17:54 12-03-2014
bass2207

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да я уже решил эту проблему, там надо в contact.php дописать $headers = 'Content-type: text; charset=utf-8'; и всё, я написал в 105 строке. Нашёл другой скрипт конт. формы а там ситуация аналогичная этой, блин у меня аж голова начала болеть, а тут такая маленькая фиговинка и проблем сколько)))

Всего записей: 6 | Зарегистр. 11-03-2014 | Отправлено: 21:23 12-03-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » обратная связь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru