Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кодировка при отправки картинки 
:(
    Опции темы
fakeman
Дата 18.7.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Т.к. не разобрался толком с отправкой формы на е-майл + прикладной файл. решил сделать так текст формы пересылать на е-майл а файл кидать сразу в папку присвоев ему название то что пойдёт на е-майл. Вроде как всё работает но вот 1 он присылает на е-майл эроглифы ну и как вы уже наверна поняли файл тоже присылаеться с названием в эроглифах.. кодировка самого оброботчика у меня в UTF-8 без BOM(что бы не было никаких лишних отступов в дизайне сайта), пробовал и в UTF-8 - тоже самое.

это мой обработчик-
Код

$nick = $_SESSION['username'];
$submit = $_POST['submit'];
$mail = strip_tags($_POST['mail']);
$title = strip_tags($_POST['title']);
$country = strip_tags($_POST['country']);
$city = strip_tags($_POST['city']);
$name = strip_tags($_POST['name']);
$contacts = strip_tags($_POST['contacts']);
$about = strip_tags($_POST['about']);


$prov = mysql_query("SELECT * FROM schools WHERE title='$title'");
$prova = mysql_fetch_assoc($prov);

$subject = "Добавить Школу";
$to = "[email protected]";
$message = "
Название Школы: $title
\nСтрана: $country
\nГород: $city
\nТренер: $name
\nКонтакты: $contacts
\nО школе: $about
\nОтослал: $nick
";
$headers = "From: $mail";



if($submit)
{
if ($prova['title'] != $title)
{
    if($mail && $title && $country && $city && $name && $contacts && $about && $pic)
    {
        if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$mail))
        {
            if(!empty($pic))
            {
                $valid_types = array('gif', 'jpg', 'png', 'jpeg', 'GIF', 'JPG', 'PNG', 'JPEG');
                $ext = substr($pic,1 + strrpos($pic, '.'));
                if(in_array($ext, $valid_types))
                {
                    if ($size_name < 1024*1024) 
                    {
                        
                        preg_match('#image\/[x\-]*([a-z]+)#', $type_name, $filetype);
                        switch ($filetype['1']) 
                         {
                                case 'jpeg':
                                case 'pjpeg':
                                case 'jpg': $type = '.jpg';break;
                                case 'gif': $type = '.gif';break;
                                case 'png': $type = '.png';break;
                            }
                            $image = $title.$type;
                        if(move_uploaded_file($_FILES['pic']['tmp_name'] ,getcwd().'/../schools/img/'.$image))
                        {
                            mail($to, $subject, $message, $headers);
                            echo "<div style='margin:0 20 0; '>Вы успешно отправили данные о вашей школе, если всё корректно написано то в ближайшее время ваша школа будет добавлена в общий список.</div>";
                        }
                        else
                        {
                            echo "<div style='margin:0 20 0; '>Ошибка: Невозможно загрузить изображение <b>$pic</b>, возможно произошла системная ошибка. Попробуйте ещё раз.</div>";
                        }
                    }
                    else
                    {
                        echo "<div style='margin:0 20 0; '>Ошибка: Превышен объем файла. Попробуйте ещё раз.</div>";
                    }
                }
                else
                {
                    echo "<div style='margin:0 20 0; '>Ошибка: Невозможно загрузить <b>$pic</b>, т.к. инициализировано <b>неизвестное</b> расширение файла. Допустимые расширения: <b>jpg, jpeg, gif, png</b>. Попробуйте ещё раз.</div>";
                }
            }
        }
        else
        {
            echo "<div style='margin:0 20 0; '>Ошибка: Задан не верный формат E-Mail (Пример: <b>[email protected]</b>). Попробуйте ещё раз.</div>";
        }
    }
    else
    {
        echo "<div style='margin:0 20 0; '>Ошибка: Не все поля введены. Попробуйте ещё раз.</div>";
    }
}
else
{
    echo "<div style='margin:0 20 0; '>Ошибка: Извините но такая школа уже существует. Попробуйте ещё раз.</div>";
}
}
else
{
    echo "<div style='margin:0 20 0; '>".$myrow['text']."</div>";
}





?>


Помогите разобраться с данной проблемой.
PM MAIL   Вверх
fesor
Дата 18.7.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



воспользуйся функциями для перевода в юникод и обратно.
PM MAIL WWW   Вверх
Photon
Дата 19.7.2009, 04:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



Вопрос номер раз: в базе данные в какой кодировке?
На всякий случай сделай до запроса к базе
Код

mysql_query('set names UTF8');


Вопрос номер два: а разве отменяли указание кодировки прямо в заголовках посылаемого сообщения?

Код

$headers  = 'MIME-Version: 1.0' . "\r\n".
                    'Content-type: text/html; charset=UTF-8'."\r\n".
                    'From: '.$mail."\r\n".
                    'X-Mailer: PHP/' . phpversion();



--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
fakeman
Дата 21.7.2009, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Photon, да кодировка сработала,

Цитата(Photon @  19.7.2009,  04:20 Найти цитируемый пост)
$headers  = 'MIME-Version: 1.0' . "\r\n".
                    'Content-type: text/html; charset=UTF-8'."\r\n".
                    'From: '.$mail."\r\n".
                    'X-Mailer: PHP/' . phpversion();


 но он пишет всё предыдущие там - Страна, город. Название школы не в стобец (\n) а в строку и теперь вопрос по поводу картинки как перевести в кодировку саму картинку(название картинки) что бы при пересылке на серв не приходили карякули..

И что касаеться 

Цитата(Photon @  19.7.2009,  04:20 Найти цитируемый пост)
На всякий случай сделай до запроса к базе
Выделить всёкод PHP
1:
    
mysql_query('set names UTF8');


а разве не после запроса ? и оно стояло не помагает.. smile
PM MAIL   Вверх
Photon
Дата 21.7.2009, 04:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



Код

mysql_query('set names UTF8');

выполняется для того, чтобы MySQL возвращал данные в нужной кодировке независимо от того, в какой они хранятся (ну может не совсем правильная формулировка, но работает именно так), так что эту команду надо выполнять до первого запроса к базе (ну т.е. сразу после mysql_connect и mysql_select_db)

А по поводу того, что всё выводится в строку..  Дык ты же отправляешь сообщение в HTML, откуда ж там \n?  Надо 
Код

<br />

использовать


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
fakeman
Дата 21.7.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Photon, ну да у меня 
Цитата(Photon @  21.7.2009,  04:20 Найти цитируемый пост)
    
mysql_query('set names UTF8');


и стоит после mysql_connect и mysql_select_db.

Блин, точно чет я сразу не догнал по поводу <br> сработало всё... 

А вот что касаеться по поводу отсылки фотки ? 

Код

$valid_types = array('gif', 'jpg', 'png', 'jpeg', 'GIF', 'JPG', 'PNG', 'JPEG');
                $ext = substr($pic,1 + strrpos($pic, '.'));
                if(in_array($ext, $valid_types))
                {
                    if ($size_name < 1024*1024) 
                    {
                        
                        preg_match('#image\/[x\-]*([a-z]+)#', $type_name, $filetype);
                        switch ($filetype['1']) 
                         {
                                case 'jpeg':
                                case 'pjpeg':
                                case 'jpg': $type = '.jpg';break;
                                case 'gif': $type = '.gif';break;
                                case 'png': $type = '.png';break;
                            }
                            $image = $title.$type;
                        if(move_uploaded_file($_FILES['pic']['tmp_name'] ,getcwd().'/../schools/img/'.$image))
                        {



как видно название ей даётся такое - $image = $title.$type т.е. если у кто то введёт название школы на русском то он пришлёт мне карякули.формат картинки ... а если всё транслитом то всё нормально.. как решить эту проблему с кодировкой ?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0480 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.