Skocz do zawartości

Formularz kontaktowy - brak polskich znaków


Diablotic

Rekomendowane odpowiedzi

Witam,

Tworzę swoją pierwszą stronę internetową i nie mogę przebrnąć przez stworzenie formularza który poprawnie by wysyłał emaila (brak polskich znaków).

Kod strony na ktorej jest formularz wyglada tak:

Kodowanie

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">

oraz formularz

<form id="form" action="wyslij.php" method="post" >
				<div class="h_f">
				  <input type="text" name="imie" value="Imię i nazwisko" onfocus="if (this.value == 'Imię i nazwisko') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Imię i nazwisko';}" />
		</div>
				<div class="h_f"><input type="text" name="email" value="Email" onfocus="if (this.value == 'Email') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Email';}" /> </div>
				<div>
				  <textarea name="tresc" cols="2" onfocus="if (this.value == 'Wiadomość') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Wiadomość';}">Wiadomość</textarea>
</div>
				<div><strong style="margin:0 15px 0 0px;">
				<input type="submit" value="Wyślij" />
				<input type="reset" value="Reset"></strong></div>
		  </form>

Kod formularza w pliku php wyglada tak

<?php
if (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
$message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
$header = "From: $_POST[imie] <$_POST[email]>";
@mail("moj@email.pl","Wiadomość ze strony WWW","$message","$header")
or die('Nie udało się wysłać wiadomości');
echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
}
else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
?>

Polskie znaki na stronie sie wyswietlaja poprawnie ale po wyslaniu formularza dochodzi do mnie email bez polskich znaków. Prosze o pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

Dzieki, moj plik wyglada teraz tak:

<?php
if (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
	$message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
	$header = 'MIME-Version: 1.0' . "\r\n";
	$header .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
	$header .= "$_POST[imie] <$_POST[email]>\r\n";
	@mail("moj@email.pl","Wiadomość ze strony WWW","$message","$header")
	or die('Nie udało się wysłać wiadomości');
	echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
}
else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
?>

A mimo to nadal przychodza wiadomosci bez polskich znaków ;)

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 lata później...

Podpinam się pod temat bo mam podobny problem.

Otóż, mam całą podstronę w PHP bo był problem z działaniem formularza w HTML+PHP

Teraz działa, wysyła, na stronie są polskie znaki ale gdy meil dojdzie na skrzynkę wyskakują "Wiadomo���� od:..."

Kodowanie jest na utf-8 zarówno w nagłówku jak i w body przy treści całej strony.

KOD Całej strony;

<?php
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
$message = '';
$twoj_email = 'divers@onet.eu'; // twoj adres e-mail

if ( $_POST['submit'] )
{
$name = $_POST['nick'];
$mail = $_POST['mail'];
$temat = $_POST['temat'];
$message = $_POST['tresc'];

if ( empty($name) || empty($mail) || empty($temat) || empty($message) )
{
	$message_die = '<div style="background: none repeat scroll 0% 0% #ff0000; font: bold 17px Arial,Helvetica,sans-serif; color: #000000; padding: 8px; display: block; margin: 0pt 0pt 7px; text-align: center; border: 1px solid #dedbd1; height: 16px;">Uzupełnij wszystkie pola!</div><br>';
}
else if ( !filter_var($mail, FILTER_VALIDATE_EMAIL) )
{
	$message_die = '<div style="background: none repeat scroll 0% 0% #ff0000; font: bold 17px Arial,Helvetica,sans-serif; color: #000000; padding: 8px; display: block; margin: 0pt 0pt 7px; text-align: center; border: 1px solid #dedbd1; height: 16px;">Wpisany adres e-mail jest niepoprawny!</div><br>';
}
else
{
	mail($twoj_email, $temat, 'Wiadomość od: '.$name.' // Adres e-mail: '.$mail.' // Treść: '.$message.'');
	$message_die = '<div style="background: none repeat scroll 0% 0% green; font: bold 17px Arial,Helvetica,sans-serif; color: #000000; padding: 8px; display: block; margin: 0pt 0pt 7px; text-align: center; border: 1px solid #dedbd1; height: 16px;">Wiadomość została wysłana!</div><br>';
}
}
$body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//PL" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8";
<title>Kontakt: kwiaty</title>
<link rel="stylesheet" type="text/css" href="css/reset.css" media="screen">
<link rel="stylesheet" type="text/css" href="css/style.css" media="screen">

</head>
<body>

<div id="background-image">	
<div id="logo">
</div>
<div id="container">

	<!-- poczatek nagłówka-->


<div id="menu">
				<ul>
					<a href="index.html"><li class="start"></li></a>
					<a href="rosliny.html"><li class="rosliny"></li></a>
					<a href="forum.html"><li class="forum"></li></a>
					<a href="kontakt.html"><li class="kontakt"></li></a>
					<a href="regulamin.html"><li class="regulamin"></li></a>
			</ul>
		<div class="clear"></div>
	</div>
	<div class="clear"></div>
	<!--koniec nagłówka-->



	<div id="spacee">
		<div class="email">
		<a href="mailto:esemoka85a@o2.pl"><B>esemok85a@o2.pl</B></a>
		</div>
		<div id="mapa">
			<div class="google">
				<iframe width="240" height="240"src="https://maps.google.pl/maps/ms?msa=0&msid=210462275917890636085.0004c0a345c4dfe4ab372&hl=pl&ie=UTF8&t=m&ll=52.83404,15.838423&spn=0.003889,0.006437&z=16&output=embed"></iframe><br />
				</div>
		</div>
	</div>
	<div class="email2"><font size="1"><a style="text-decoration:none" href="mailto:k3nzo@onet.eu">k3nzo@onet.eu</a></font>
	</div>
	<div class="line2"></div>
	<div id="space-info">
				<div class="margines1"></div>
					<div class="sekcja1">
					<font style="arila"><B><h1>Szybki kontakt "ESEMOKA"</h1></B></font>
					</div>
		<div class="margines1"></div>
		<div class="margines1"></div>
		<div class="informacje">
			<font face="Arial">Jeśli zależy Ci na szybkim kontakcie<p> i uzyskaniu jak najszybciej informacji (odpowiedzi)
			skorzystaj z formularza kontaktowego.
			My ze swojej strony obiecujemy odpowiedz na wskazany adres email.<p>
			Pozdrawiamy serdecznie.</font>
		</div>
		<div class="kontakty">
		'.$message_die.'
			<form action="kontakt.php" method="post" id="formularz">
				<div><label>Nick / Imę i nazwisko: <span class="red">*</span></label> <input type="text" id="nick" name="nick" value=""></div>
				<div><label>Adres e-mail: <span class="red">*</span></label>
				<input type="text" id="mail" name="mail" value=""></div>
				<div><label>Temat: <span class="red">*</span></label> <input type="text" id="temat" name="temat" value=""></div>
				<div><label>Treść: <span class="red">*</span></label> 
				<textarea cols="27" rows="10" id="tresc" name="tresc"></textarea></div>
				<div><span class="red">*</span> - oznacza pola wymagane.</div>
				<div><input type="submit" name="submit" value="Wyślij"></div>
			</form>		
		</div>
		<div class="margines1"></div>
	</div>
	<div class="end"></div>
	<div class="margines-dol"></div>



	<!--koniec sekcji-->
	<!-- poczatek stupki-->

	<div id="stupka">
			<div class="partnerzy"></div>

			<div class="line"></div>

			<div id="baner-tlo">
				<div class="margines-dol"></div>
					<a target="_blank" href="https://www.wwfpl.panda.org/"><div id="baner"></div></a>
			</div>
				<a target="_blank" href="https://allegro.pl/listing/user.php?us_id=15530778"><div id="allegro"></div></a>
	</div>	
	<div class="podpis">
			<div class="tekst-podpis">
				<font size="1">ESEMOKA wszystkie prawa zastrzeżone. <a href="regulamin.html">REGULAMIN</a>
				                                                                                                                                                                                     WEB DESIGNE: Jorg (<a href="mailto:k3nzo@onet.eu">K3nzo Designe<a>)</font>
			</div>
	</div>

<div>



</script>
</body>
</html>';
echo $body;
?>

Proszę wdzięcznie o pomoc:)

Odnośnik do komentarza
Udostępnij na innych stronach

Zrobiłem jak mówiłeś, stworzyłem nowy dok z utf bez BOM i wkleiłem zawartość i prawda, na stronie tym razem nie zniknęły polskie znaki ale w meilu nadal dochodzą choinki:/

Błąd chyba jest gdzieś w treści ale znajomy (autor php) i twierdzi żę u niego działają w meilu ?!

Może mógłby to ktoś sprawdzić u siebie?

Odnośnik do komentarza
Udostępnij na innych stronach

Sory że post pod postem.

Zrobiłem już skrypt. Był błąd w treści bo gdy go usunąłem i zmieniłem na nowy to wszystko działa i są literki polskie.

Mam jeszcze pytanko, jaka komenda odpowiada za wyświetlanie nadawcy w meilu.

Chcę aby w skrzynce na liście mieli wiadomość widniała jako "od: nazwa.strony.pl" a szczegóły jak meil, Imię, nazwisko temat dopiero w treść.

W tej chwili owe szczegóły (meil, imie itd) mam w treści meila jednak w widoku listy jako nadawca jest pierwsza część wpisanego meila czyli

jeśli ktoś podał w formularzu "tomciu@meil.pl to na liście jest "Od: tomciu"

Dodam ze we wcześniejszym skrypcie tak własnie było, jednak w nowym nie mogę tego osiągnąć:/

Nowy skrypt:

function wyswietl_forme($komunikat='') {
global $formularz;

$do_zmiany = array(
	'#komunikat#',
	'#strona#',
	'#nick#',
	'#mail#',
	'#temat#',
	'#tresc#'
);
$zmien_na = array(
	$komunikat,
	$_SERVER['REQUEST_URI'],
	$_POST['nick'],
	$_POST['mail'],
	$_POST['temat'],
	$_POST['tresc']
);

$formularz = str_replace ( $do_zmiany, $zmien_na, $formularz);

return $formularz;	
}


function waliduj() {
global $komunikat;
global $valid;

if( $valid['nick'] > 0 ) {
	if(strlen($_POST['nick']) < $valid['nick'] ){
	$message_die = '<div style="background: none repeat scroll 0% 0% #ff0000; font: bold 17px Arial,Helvetica,sans-serif; color: #000000; padding: 8px; display: block; margin: 0pt 0pt 7px; text-align: center; border: 1px solid #dedbd1; height: 16px;">Wpisany nick jest niepoprawny!</div><br>';
	}
}

if( $valid['mail'] == 1 ) {
	if(!filter_var($_POST['mail'],FILTER_VALIDATE_EMAIL)) {
	$message_die = '<div style="background: none repeat scroll 0% 0% #ff0000; font: bold 17px Arial,Helvetica,sans-serif; color: #000000; padding: 8px; display: block; margin: 0pt 0pt 7px; text-align: center; border: 1px solid #dedbd1; height: 16px;">Wpisany adres e-mail jest niepoprawny!</div><br>';
	}
}

if( $valid['temat'] > 0 ) {
	if(strlen($_POST['temat']) < $valid['temat'] ){
	$message_die = '<div style="background: none repeat scroll 0% 0% #ff0000; font: bold 17px Arial,Helvetica,sans-serif; color: #000000; padding: 8px; display: block; margin: 0pt 0pt 7px; text-align: center; border: 1px solid #dedbd1; height: 16px;">Wpisany teamt jest niepoprawny!</div><br>';; 
	}
}

if( $valid['tresc'] > 0 ) {
	if(strlen($_POST['tresc']) < $valid['tresc'] ){
	$message_die = '<div style="background: none repeat scroll 0% 0% #ff0000; font: bold 17px Arial,Helvetica,sans-serif; color: #000000; padding: 8px; display: block; margin: 0pt 0pt 7px; text-align: center; border: 1px solid #dedbd1; height: 16px;">Wpisana tereść jest niepoprawna!</div><br>'; 
	}
}

if(empty($walidacja)) {
	return 'true';
}else{
	return $walidacja;
}

}

// Działanie
if (($_SERVER['REQUEST_METHOD'] == 'POST')) {// wejście postem
	$walidacja = waliduj();

	if ($walidacja == 'true'){ //poprawnie wypełniony formularz

		if(mail($adres_odbiorcy,"=?UTF-8?B?".base64_encode($_POST['temat'])."?=",'<p>Od: <b>'.$_POST['nick'].'</b></p><pre>'.$_POST['tresc'].'</pre>','From:'.$_POST['mail']."\r\nContent-Type: text/html; charset=utf-8")){ //sukces

			$message_die = '<div style="background: none repeat scroll 0% 0% green; font: bold 17px Arial,Helvetica,sans-serif; color: #000000; padding: 8px; display: block; margin: 0pt 0pt 7px; text-align: center; border: 1px solid #dedbd1; height: 16px;">Wiadomość została wysłana!</div><br>';					
		}else{ //bląd serwera

			$message_die = '<div style="background: none repeat scroll 0% 0% green; font: bold 17px Arial,Helvetica,sans-serif; color: #000000; padding: 8px; display: block; margin: 0pt 0pt 7px; text-align: center; border: 1px solid #dedbd1; height: 16px;">Błąd serwera!</div><br>';	

			print wyswietl_forme();
		}

	}else{
		//błędna walidacja
		$blad_walidacji = $walidacja;

		$blad_walidacji = '
				<div id="blad">
					<p>'.$komunikat['blad'].'</p>
					<ul>
					';
		foreach ($walidacja as $wpis) {
			$blad_walidacji .= '<li>'.$wpis.'</li>';
		}	
		$blad_walidacji .= '
					</ul>
				</div>
				';

		print wyswietl_forme($blad_walidacji);
	}	

}else{
// nowe wejście
print wyswietl_forme();

Odnośnik do komentarza
Udostępnij na innych stronach

Sory że post pod postem.

Chcę aby w skrzynce na liście mieli wiadomość widniała jako "od: nazwa.strony.pl" a szczegóły jak meil, Imię, nazwisko temat dopiero w treść.

W tej chwili owe szczegóły (meil, imie itd)

Masz to opisane w przykładach https://www.php.net/manual/en/function.mail.ph

Zainteresuj się nagłówkiem $headers i sekcją

/ To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności