PDA

Zobacz pełną wersję : J DContact - brak polskich znaków w treści wiadomości



Krisuuu
03-03-2014, 16:17
Witam,


Moja strona jest postawiona na cmsie Joomla 3 i ostatnio wgrałem do niej pewny moduł nazywa się mod J Dcontact.
Niestety za chiny ludowe nie umiem ustawić polskich znaków w samej TREŚCI wiadomości.


Tytuł oraz info o użytkowniku posiada polskie znaki, natomiast sama treść już nie.
Cała strona posiada kodowanie utf-8
Po zmianie charset na iso nadal nie ma polskich znaków w treści, ale są w nagłówku wiadomości.

Przykładowa wiadomość wygląda tak:

Wiadomość: nowść i gżegżóła




Link do modułu: http://www.j-download.com/component/attach...ownload/12.html (http://www.j-download.com/component/attachments/download/12.html)


Kod głównego pliku odpowiadającego za wysłanie wiadomości





<?php
defined('_JEXEC') or die;
class modJdcontactHelper{ static function preLoadprocess(&$params) { if($_POST){ $javascript_enabled = trim($_REQUEST['browser_check']); $department = trim($_REQUEST['dept']); $name = trim($_REQUEST['name']); $email = trim($_REQUEST['email']); $phno = trim($_REQUEST['phno']); $subject = trim($_REQUEST['subject']); $msg = trim($_REQUEST['msg']); $sales_address = $params->get( 'sales_address', 'sales@yourdomain.com' ); $support_address = $params->get( 'support_address', 'support@yourdomain.com' ); $billing_address = $params->get( 'billing_address', 'billing@yourdomain.com' ); $selfcopy = isset($_REQUEST['selfcopy']) ? $_REQUEST['selfcopy'] : ""; $humantest = $_REQUEST['human_test']; $sum_test = $_REQUEST['sum_test']; $humantestpram = $params->get( 'humantestpram', '1' ); $headers = 'MIME-Version: 1.0rn'; $headers .= 'Content-type: text/html; charset=iso-8859-2'."\r\n"; $headers .= 'Wiadomość od: '.$name.' <'.$email.'>'."\r\n";

$message = "Imię: $name\nE-mail: $email\nTelefon: $phno\n\nWiadomość: $msg";
if ( $department == "sales") $to = $sales_address; elseif ( $department == "support") $to = $support_address; elseif ( $department == "billing") $to = $billing_address; else $to = $sales_address;
if ( $name == "" ) { $result = "".JText::_('MOD_JDCONTACT_VLDNAME').""; } elseif (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/", $email)) { $result = "".JText::_('MOD_JDCONTACT_VALIDEMAIL').""; } else if($phno=="") { $result = "".JText::_('MOD_JDCONTACT_PHONENUMB').""; } elseif ( $subject == "" ) { $result = "".JText::_('MOD_JDCONTACT_MSGSUBJECT').""; } elseif ( strlen($msg) < 10 ) { $result = "".JText::_('MOD_JDCONTACT_MORETENWRD').""; } else if($humantestpram=='1' && $humantest!=$sum_test){ $result = "".JText::_('MOD_JDCONTACT_CORRECTNUM').""; } else { if(@mail($to, $subject, $message, $headers)){ $sucs=1; } if( $selfcopy == "yes" ){ if(@mail($email, $subject, $message, $headers)){ $sucs=1; } } if($sucs==1){ $result = "".JText::_('MOD_JDCONTACT_SUCCESSMSG').""; } else{ $result = "".JText::_('MOD_JDCONTACT_MAILSERVPROB').""; } }
if($javascript_enabled == "true") { echo $result; die(); } } }}
?>

komodore
03-03-2014, 22:46
Wygląda to na niezgodność kodowania znaków. Zapisz pliki tego modułu z kodowaniem utf-8 (bez BOM) powinno pomóc.

Krisuuu
04-03-2014, 08:51
Zapisywałem pod różnymi kodowania i nic to nie pomogło.

komodore
04-03-2014, 16:07
Pobrałem paczkę z linku, który podałeś i tak jak pisałem wcześniej w większości plików jest kodowanie "ANSI" zamiast "UTF-8(bez BOM)" lub jak kto woli "ANSI as UTF-8". Trzeba zapisać pliki z właściwym kodowaniem znaków i podmienić je na serwerze.