Wątek przeniesiony 2015-09-01 08:45 z PHP przez dzek69.

Brak polskich znaków w formularzu php - kontakt

0

Witam.

Mam mały problem którego nie mogę rozwiązać.

Otóż na stronie na bazie szablonu z themeforest, wszystko fajnie działa formularz wysyła wiadomości, jednak jak tylko ktoś napisze coś z polskimi znakami, wysyła jakieś cuda w ich miejsce.

kod send.php wygląda tak:

<?php
<? header("Content-Type: text/html; charset=UTF-8");
if($_POST)
{
	$to_Email   	= "tutaj mamy sobie maila do nas" ; //Replace with recipient email address
	$subject        = 'Wiadomość z mojego formularza na mojej stronie'; //Subject line for emails
	
	
	//check if its an ajax request, exit if not
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
	
		//exit script outputting json data
		$output = json_encode(
		array(
			'type'=>'error', 
			'text' => 'Request must come from Ajax'
		));
		
		die($output);
    } 
	
    
	//check $_POST vars are set, exit if any missing
	if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
	{
		$output = json_encode(array('type'=>'error', 'text' => 'Input fields are empty!'));
		die($output);
	}

	//Sanitize input data using PHP filter_var().
	$user_Name        = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
	$user_Email       = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
	$user_Message     = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
	
	$user_Message = str_replace("\&#39;", "'", $user_Message);
	$user_Message = str_replace("&#39;", "'", $user_Message);
	
	//additional php validation
	if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
	{
		$output = json_encode(array('type'=>'error', 'text' => 'Imię niepoprawne!'));
		die($output);
	}
	if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
	{
		$output = json_encode(array('type'=>'error', 'text' => 'Wpisz poprawny e-mail!'));
		die($output);
	}
	if(strlen($user_Message)<5) //check emtpy message
	{
		$output = json_encode(array('type'=>'error', 'text' => 'Za krótka wiadomość! Wpisz treść wiadomości!'));
		die($output);
	}
	
	//proceed with PHP email.
	$headers = 'From: '.$user_Email.'' . "\r\n" .
	'Reply-To: '.$user_Email.'' . "\r\n" .
	'X-Mailer: PHP/' . phpversion();
	
	$sentMail = @mail($to_Email, $subject, $user_Message . "\r\n\n"  .'-- '.$user_Name. "\r\n" .'-- '.$user_Email, $headers);
	
	if(!$sentMail)
	{
		$output = json_encode(array('type'=>'error', 'text' => 'Could not send mail! Please check your PHP mail configuration.'));
		die($output);
	}else{
		$output = json_encode(array('type'=>'message', 'text' => 'Witaj '.$user_Name .'! Twoja wiadomość została wysłana'));
		die($output);
	}
}
?> 

dodawałem tam do tego kodu sekcję

 <? header("Content-Type: text/html; charset=UTF-8"); 

Ale wtedy w ogóle nie wysyła wiadomości i formularz na stronie nie reaguje.

Proszę o pomoc.

0
Tumeg napisał(a):

http://stackoverflow.com/questions/19708097/php-mail-special-characters-utf8

Ewentualnie możesz użyć wrappera: https://github.com/PHPMailer/PHPMailer

Jestem laikiem w tej sprawie. Czy możesz napisać co mam po prostu wkleić do swojego kodu i w które miejsce?

0

Gotowce to dział zleceń. A programowanie nie polega na kopiuj-wklej.

0
dzek69 napisał(a):

Gotowce to dział zleceń. A programowanie nie polega na kopiuj-wklej.

A gdzie napisałem, że chcę gotowca? Mam gotowy kod, działa wysyła wiadomości tylko nie mają Polskich liter i szukam komendy którą mogę wkleić już do gotowego kodu aby były Polskie znaki.

0

Sprawdź jeszcze, czy kodowanie pliku php na pewno masz UTF-8 i czy kodowanie pliku html, w którym masz formularz też jest UTF-8.

[Adam]

1 użytkowników online, w tym zalogowanych: 0, gości: 1