proglém s diakritikov v PHP

Sekcia o programovaní, programovacích jazykoch...
cerkoxxl

proglém s diakritikov v PHP

Príspevok od používateľa cerkoxxl »

Ahojte.
Mám taký malý-veľký problém. Som úplný začiatočník v PHP (ovládam len HTML).
Po dlhom 2 mesačnom hľadaní sa mi podarilo najísť stránku (http://phpformgen.sourceforge.net), ktorá mi pomohla s vytvorením formulára pomocou kotného pošlem aj text aj prílohu (resp. link kde je príloha umiestnená).
Formulár som rozbehal aj na základe iných tutorialov a príkladov na fórach, ale príloha mi funguje iba v tomto prípade.

PHP code:

Kód: Vybrať všetko

<?php

$where_form_is="http://".$_SERVER['SERVER_NAME'].strrev(strstr(strrev($_SERVER['PHP_SELF']),"/"));

// File upload handling
if($_FILES['field_6']['name']!=''){
$field_6_filename = "file_6_".date("sihdmY").substr($_FILES['field_6']['name'],strlen($_FILES['field_6']['name'])-4);
if(!move_uploaded_file($_FILES['field_6']['tmp_name'], "./files/".$field_6_filename)){
die("File " .  $_FILES['field_6']['name'] . " was not uploaded.");
}
}

mail("hocijaky_mail@mail.sk","phpFormGenerator - Form submission","Form data:

Full_Name: " . $_POST['field_1'] . " 
Adress: " . $_POST['field_2'] . " 
Phone: " . $_POST['field_3'] . " 
Mail: " . $_POST['field_4'] . " 
Text: " . $_POST['field_5'] . " 
Attach: ".$where_form_is."files/".$field_6_filename." (original file name: " . $_FILES['field_6']['name'] . ")


 powered by phpFormGenerator.
");

include("confirm.html");

?>

Problémom je však diakritika. HTML stránka je kódovaná v UTF- 8, takže celá informácia odosielaná týmto formulárom tiež. Keď formulár nadstavím na posielanie na Gmail alebo centrum.sk, žiaden problém. Keď mail pošlem na firemný mail tak v v mailovom kliente (HORDE), ktorý poskytuje prevádzkovateľ webhostinngu je všetko v poriadku, ale keď poštu stiahnem do Outlooku zmení sa kódovanie textu na

Zobrazenie v http prostredí (Gmail, centrum, aj HORDE na mojom serveri) –SPRÁVNE
Form data:

Product: Tričko
Text:
Picture: http://www.XXX.sk/files/ (original file name: )
Items: 1
Name: 1
Street:
Mesto:
Phone: 1
Mail: 1@dd.dk
Getting:
Name_fac:
Street__fac:
Town__fac:
ICO:
DIC:
Phone_fac:
Mail_fac:
DPH:
Note:
Color: ľščťžý
powered by phpFormGenerator.
[/kurziva]

Zobrazenie v Outlooku – NESPRÁVNE:
[kurziva]
Form data:

Product: Tričko
Text:
Picture: http://www.XXX.sk/files/ (original file name: )
Items: 1
Name: 1
Street:
Mesto:
Phone: 1
Mail: 1@dd.dk
Getting:
Name_fac:
Street__fac:
Town__fac:
ICO:
DIC:
Phone_fac:
Mail_fac:
DPH:
Note:
Color: ľščťžý

powered by phpFormGenerator.

[/kurziva]

Formát sa zmení na ISO a je to v ... Skúšal som to aj na iných serveroch a výsledok bol rovnaký. Správu musím otvoriť a manuálne zmeniť formátovanie na UTF-8. Outlooku sa to automaticky nadstaviť nadá a ja som v HORDE nadstaviť UTF-8 všade kde sa len dalo.
Prosím, neviete niekto pomôcť.
Používateľov profilový obrázok
RP
Administrátor
Administrátor
Príspevky: 2549
Dátum registrácie: St 21. Mar, 2001, 20:00
Bydlisko: Kosice

Re: proglém s diakritikov v PHP

Príspevok od používateľa RP »

Pokus o radu - nestudoval som Tvoj problem do hlbky, tak len pokus.

Skus pouzit funkciu utf8_encode ( nejako takto $retazec = utf8_encode($retazec); ).
badyto

Re: proglém s diakritikov v PHP

Príspevok od používateľa badyto »

Skus pridat tomu mailu hlavicku v ktorej definujes kodovanie. Proste do tej funkcie mail() pridaj este jeden parameter, "Content-Type: text/html; charset=utf-8"
Používateľov profilový obrázok
glirpi
Používateľ
Používateľ
Príspevky: 1270
Dátum registrácie: Ne 09. Máj, 2010, 03:36
Bydlisko: Handlova / okres PD

Re: proglém s diakritikov v PHP

Príspevok od používateľa glirpi »

snad ti takouto jednoduchou funkciou pomozem .. aspom sa zorientovat.

Kód: Vybrať všetko

//send email
function sendEmail($sendFrom, $sendTo, $subject, $message)
{
	$header = 'MIME-Version: 1.0' . "\n" . 'Content-type: text/plain; charset=UTF-8' . "\n" . 'From: ' . $sendFrom;
	
	if ($_SERVER['HTTP_HOST'] != 'localhost')
	{
		mail($sendTo, '=?UTF-8?B?' . base64_encode($subject) . '?=', $message, $header);
	}
	else
	{
		echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>';
		echo '<pre>' . $subject. '</pre>';
		echo '<pre>' . $message. '</pre>';
		echo '---------------------------<br /><a href="' . $_SERVER['HTTP_REFERER'] . '">Continue</a>';
		echo '</body></html>';
		exit();
	}
}
I♥C64 0,97Mhz CPU, 64KB RAM, VIC-II GPU (320x200 multicolor / 16 farieb) a aka zabava..
Spoiler: ukázať
PC: CPU: INTEL Core i5-9600KF / CPU-COOLER: NZXT Kraken X52 / MB: GIGABYTE Z390 M / RAM: Corsair 16 GB KIT DDR4 3600 MHz CL18 Vengeance LPX / SSD: WD Black SN750 NVMe SSD 1 TB / DVD-RW: - / PSU: Seasonic X-Series 560W / CASE: NZXT H400 / VGA: GIGABYTE GeForce RTX3060 GAMING OC 12GB / SOUND: SOUND BLASTER AE-7 / SPEAKERS: - / HEADPHONES: BEYERDYNAMIC DT 770 PRO (80 ohm) / LCD: DELL UltraSharp U2717D 27" / KEYBOARD: DELL Premier Wireless Keyboard / MOUSE: DELL KM717 / GAMEPAD: MICROSOFT Xbox 360 wireless controller / OS: MICROSOFT Windows 10 PRO 64Bit

Návrat na "Programovanie"