Formularz - HTML
<div id="formularz"> <form method="post" id="form" enctype="text/plain"> <div> <input id="name" name="name" type="text" /> </div> <div> <input id="email" name="email" type="text" /> </div> <div> </div> <div> <input id="send" name="send" type="submit" value="Wyślij" onclick="wyslij();"/> </div> </form> </div>
Javascript
/* ----- XMLHttpRequestObject ----- */ function getXMLHttpRequestObject() { if(window.XMLHttpRequest) { try{ return new XMLHttpRequest(); } catch(e){ return false; } } else if (window.ActiveXObject) { var wersjeMSXML = new Array( "MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ); for (var indeks in wersjeMSXML){ try{ return new ActiveXObject(wersjeMSXML[indeks]); } catch(e){ } } return false; } } var XMLHttpRequestObject = getXMLHttpRequestObject(); /* ----- Validation ----- */ function wyslij() { //global vars var form = $("#form"); var name = $("#name"); var nameInfo = $("#nameInfo"); var email = $("#email"); var emailInfo = $("#emailInfo"); var message = $("#message"); //On key press name.keyup(validateName); email.keyup(validateEmail); message.keyup(validateMessage); //On Submitting form.submit(function(){ if(validateName() & validateEmail() & validateMessage()) return true else return false; }); //validation functions function validateEmail(){ //testing regular expression var a = $("#email").val(); var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/; //if it's valid email if(filter.test(a)){ email.removeClass("error"); emailInfo.text("Pole wypełnione prawidłowo."); emailInfo.removeClass("error"); return true; } //if it's NOT valid else{ email.addClass("error"); emailInfo.text("Proszę wpisać prawidłowy adres e-mail."); emailInfo.addClass("error"); return false; } } function validateName(){ //if it's NOT valid if(name.val().length < 4){ name.addClass("error"); nameInfo.text("To pole powinno zawierać conajmniej 4 znaki."); nameInfo.addClass("error"); return false; } //if it's valid else{ name.removeClass("error"); nameInfo.text("Pole wypełnione prawidłowo."); nameInfo.removeClass("error"); return true; } } function validateMessage(){ //it's NOT valid if(message.val().length < 10){ message.addClass("error"); return false; } //it's valid else{ message.removeClass("error"); return true; } } /* ----- Sending ----- */ var dName = document.getElementById('name'); var dEmail = document.getElementById('email'); var dMessage = document.getElementById('message'); var tName = dName.value; var tEmail = dEmail.value; var tMessage = dMessage.value; tName = escape(tName); tMessage = escape(tMessage); if(XMLHttpRequestObject){ var przycisk = document.getElementById('send'); var div= document.getElementById('formularz'); var url = "../send.php?"; url += "name=" + tName + "&email=" + tEmail + "&message=" + tMessage; if(validateName() & validateEmail() & validateMessage()) { przycisk.disabled = true; XMLHttpRequestObject.open("GET", url); XMLHttpRequestObject.onreadystatechange = function() { if (XMLHttpRequestObject.readyState == 4){ if(XMLHttpRequestObject.status == 200){ var tekst = XMLHttpRequestObject.responseText; tekst = unescape(tekst); div.innerHTML = tekst; } } else { div.innerHTML = tekst; } przycisk.disabled = false; } XMLHttpRequestObject.send(null); } } }
PHP - send.php
<?php function to_utf8($string) { [\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 )*$%xs', $string) ) { return $string; } else { return iconv( 'CP1252', 'UTF-8', $string); } } function validateName($name){ //if it's NOT valid return false; //if it's valid else return true; } function validateEmail($email){ return false; } else { return true; } } function validateMessage($tresc){ //if it's NOT valid return false; //if it's valid else return true; } $name = to_utf8($_GET['name']); $tresc = to_utf8($_GET['message']); $nadawca = to_utf8($_GET['email']); if (validateName($name) && validateEmail($nadawca) && validateMessage($tresc)) { $mail = "przykladowy@email.pl"; $message = "$tresc\nOd: $name\ne-mail: $nadawca"; $header = "From: $name <$nadawca>\r\nContent-Type: text/plain; charser=UTF-8"; } else { } } else { } ?>
PS. Próbowałem pobawić się funkcją to_utf8 ale w wysłanym mailu i tak nie ma polskich znaków. Co mnie ciekawi to to, że gdy zamiast @mail wstawię echo $message to polskie znaki są, tak więc są wszędzie oprócz w wysłanym mailu.
PS 2. Kodowanie na każdej z moich stron mam UTF-8.
Proszę o pomoc
Z góry dziękuję