Witam,
mam taki problem. Na stronie mam formularz kontaktowy napisanyw php. Strona ustawiona ma utf-8. W skrypcie formularza mam ustawione konwertowanie z utf-8 na iso, no i konwerutuję dobrze tytuł, adresata, ale już sama treść znika po pierwszym polskim znaku. Czyli np. oryginalna wiadomość to "Nowa wiadomość ze strony", to na skrzynce pojawia mi się tylko "Nowa wiadomo". Tutaj kody formularza:
<?php
class mirvanosContact {
var $content = '';
var $template = '';
var $mail_email = '';
var $mail_name = '';
var $mail_content = '';
public function __construct() {
$m = 'Brak pliku konfiguracyjnego mirvanos_contact_config.php !';
echo $this->errorMessage($m); echo $this->alertMessage($m); }
require_once('mirvanos_contact_config.php');
$m = 'Brak pliku szablonu mirvanos_contact_template.html !';
echo $this->errorMessage($m); echo $this->alertMessage($m); }
if(defined('USE_CAPTCHA') AND USE_CAPTCHA
) { $this->template = str_replace('<!--CAPTCHA-->', $captcha, $this->template); }
// Uwaga !
$this->template = "\n".'<!-- Skrypt kontaktu by mirvanos.org -->'."\n".$this->template;
if(isset($_POST['mirvanos_content']) AND
!empty($_POST['mirvanos_content'])) $this->parse();
else
$this->content .= $this->template;
}
private function parse() {
if(!isset($_POST['mirvanos_email']) OR
empty($_POST['mirvanos_email']) OR
!$this->checkEmail(trim($_POST['mirvanos_email']))) { $m = 'Proszę, podaj prawidłowy adres e-mail';
$this->content .= $this->errorMessage($m);
$this->content .= $this->alertMessage($m);
$this->content .= $this->template;
return false;
}
$this->mail_email = trim($_POST['mirvanos_email']);
if(!isset($_POST['mirvanos_name']) OR
empty($_POST['mirvanos_name'])) { $m = 'ProszÄ™, podaj swoje imiÄ™ i nazwisko';
$this->content .= $this->errorMessage($m);
$this->content .= $this->alertMessage($m);
$this->content .= $this->template;
return false;
}
if(defined('USE_CAPTCHA') AND USE_CAPTCHA
) if(!isset($_POST['mirvanos_antibot']) OR
!$this->checkCode($_POST['mirvanos_antibot'])) { $m = 'Proszę, przepisać tekst z obrazka poprawnie';
$this->content .= $this->errorMessage($m);
$this->content .= $this->alertMessage($m);
$this->content .= $this->template;
return false;
}
$this->mail_content = 'Nowa wiadomość od <b> '.$this->mail_name.' </b> <br />'."\n";
$this->mail_content .= 'Adres email <a href="'.$this->mail_email.'">'.$this->mail_email.' </a> <br />'."\n";
$this->mail_content .= 'Adres IP <b> '.$_SERVER["REMOTE_ADDR"].' </b> <br />'."\n\n";
$this->mail_content .= " <br /><br />\n\n ";
$this->mail_content .= trim( $_POST['mirvanos_content'] );
if(USE_ICONV_CONVERT) {
$this->mail_content = iconv('UTF-8', 'ISO-8859-2', $this->mail_content);
$this->mail_name = iconv('UTF-8', 'ISO-8859-2', $this->mail_name);
}
if($this->sendMail()) {
$this->mail_email = '';
$this->mail_name = '';
$this->mail_content = '';
$this->template = '';
if(defined('USE_CAPTCHA') AND USE_CAPTCHA
) unset($_SESSION['AntitokenID']); }
}
private function checkEmail($email='') {
return eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $email ); }
private function checkCode($code='')
{
if(empty($code)) return false; if(!isset($_SESSION['AntitokenID']) OR
empty($_SESSION['AntitokenID'])) return false;
if($_SESSION['AntitokenID']!=$code)
return false;
return true;
}
private function sendMail() {
require_once(CLASS_PHPMAILER);
$mail = new PHPMailerLite();
$mail->isMail();
$mail->setFrom($this->mail_email, $this->mail_name);
$mail->CharSet = 'iso-8859-2';
if(USE_ICONV_CONVERT)
{
$mail->Subject = iconv('UTF-8', 'ISO-8859-2', MAIL_SUBJECT);
}
else
$mail->Subject = MAIL_SUBJECT;
$mail->MsgHTML( $this->mail_content );
$mail->AddAddress(ADRES_EMAIL, TWOJA_NAZWA);
if(!$mail->Send()) {
$m = 'WystÄ‌piĹ‚ bĹ‚Ä‌d w wysyĹ‚ce maila :( '.$mail->ErrorInfo." <br /> \n";
$this->content .= $this->errorMessage($m);
$this->content .= $this->alertMessage($m);
return false;
}
// Clear all addresses and attachments
$mail->ClearAddresses();
$mail->ClearAttachments();
$m = WIADOMOSC_ZOSTALA_WYSLANA;
$this->content .= $this->errorMessage($m);
$this->content .= $this->alertMessage($m);
return true;
}
private function alertMessage($message='') {
return '<script type="text/javascript">
alert(\''.$message.'\');
</script>'."\n";
}
private function errorMessage($message='') {
return '<b class="mirvanos_error">'.$message.'</b>';
}
public function getHtml() {
return $this->content;
}
public function getMailName() {
return $this->mail_name;
}
public function getMailEmail() {
return $this->mail_email;
}
public function getMailContent() {
return $this->mail_content;
}
}
<?php
// sciezka do styli formularza, mozna dac pusta
define('INCLUDE_CSS', 'css/mirvanos_contact.css'); // sciezka do klasy phpmailera
define('CLASS_PHPMAILER', 'class.phpmailer-lite.php'); //temat maila
define('MAIL_SUBJECT', 'Nowa wiadomość z xxx'); // Twoj adres email, na niego przyjda wiadomosci
define('ADRES_EMAIL', 'xxx@xxx.pl'); // Twoje Imie i nazwisko - aby mail ladnie wygladal :)
// Komunikat na stronie po wyslaniu maila
define('WIADOMOSC_ZOSTALA_WYSLANA', 'Dziękujemy! Wiadomość została wysłana - Postaramy się odpowiedzieć jak najszybciej. '); // czy uzywac obrazkow CAPTCHA do zabezpieczenia przed botami - zalecane
// zmiana z utf8 na iso-8859-2
define('USE_ICONV_CONVERT', TRUE);