I have little problem with contact form. When I send a message, subject and sender name does not display special characters. Message box display special characters correct. I set UTF-8, so I think it should work for all fields. I have no idea.
My PHP code:
define( "RECIPIENT_NAME", "My name" );
define( "RECIPIENT_EMAIL", "info@domain.com" );
$success = false;
$senderName = isset( $_POST['username'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['username'] ) : "";
$senderEmail = isset( $_POST['email'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['email'] ) : "";
$subject = isset( $_POST['subject'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['subject'] ) : "";
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";
if ( $senderName && $senderEmail && $subject && $message) {
$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
/* $headers = "From: " . $senderName . " <" . $senderEmail . ">"; */
$headers = 'From:'.$senderName.' <'.$senderEmail.'>' . "\r\n";
$headers .= "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$msgBody = "From: " . $senderName . "<br><br>Message:<br>" . $message;
$success = mail( $recipient, $subject, $msgBody, $headers );
header('Location: contact.php');
}
else {
header('Location: index.php');
}