oprac.: J.Mazur Tworzenie formularza z prostą
Transkrypt
oprac.: J.Mazur Tworzenie formularza z prostą
oprac.: J.Mazur Tworzenie formularza z prostą walidacją danych (Flash, XML, PHP) Poniższy rysunek przedstawia przykładowy rozkład warstw jakie mogą przydać się w tym zadaniu. W klatce warstwy przyciski wstawiamy kod: stop(); var odbierz:LoadVars = new LoadVars(); var wyslij:LoadVars = new LoadVars(); /* Definiujemy obiekty odbierz i wyslij Obiekty LoadVars wykorzystywane są w przechowywania danych pochodzących z używana jest w czasie pracy z danymi zmiennych z pliku tekstowego lub ich stronie serwera. */ klasy LoadVars języku AS do wczytywania i zewnętrznych źródeł. Klasa LoadVars w formacie URL. Pozwala na ładowanie wymianę ze skryptem uruchamianym po W klatce warstwy akcje wpisujemy poniższe funkcje: /* Funkcja zawartosc() ładuje do lewej części okien informacyjnych formularza dane dot. nazwy firmy i opis zawarty w pliku kontakt.xml. Te dynamiczne pola tekstowe powinny mieć nazwy instancji odpowiednio nazFir i tekstFir. */ zawartosc(); function zawartosc() { var zaw:XML = new XML(); zaw.ignoreWhite = true; zaw.onLoad = function(success) { if (success) { var root:XMLNode = this.firstChild; var nazwaFirmy:String = root.childNodes[0].childNodes[0].nodeValue; var tekstFirmowy:String = root.childNodes[1].childNodes[0].nodeValue; nazFir.htmlText = nazwaFirmy; tekstFir.htmlText = tekstFirmowy; } }; zaw.load("xml/kontakt.xml"); } /* Funkcja sprawdzFormularz() sprawdza istnienie oraz poprawność wpisów w polach typu Input naszego formularza. Odpowiada również, za wyświetlenie odpowiedniego do sytuacji komentarza w kolorze czerwonym. */ function sprawdzFormularz() { if (nazwisko.text == "") { nazwisko.text = "Podaj Imię i Nazwisko"; nazwisko.textColor = "0xFF0000"; } if ((email.text == "") or (email.text.indexOf("@", 0) == -1) or (email.text.indexOf('.', 0) == -1)) { email.text = "Podaj poprawny adres e-mail"; email.textColor = "0xFF0000"; } if (wiadomosc.text == "") { wiadomosc.text = "Wpisz treść zapytania"; wiadomosc.textColor = "0xFF0000"; } } 2 /* Funkcja czyscFormularz() kasuje wpisy w polach tekstowych w momencie wysłania wiadomości. Przywraca również czarny kolor dla tekstu w polach tekstowych. */ function czyscFormularz() { nazwisko.text = ""; nazwisko.textColor = "0x000000"; email.text = ""; email.textColor = "0x000000"; wiadomosc.text = ""; wiadomosc.textColor = "0x000000"; } /* Funkcja wyslijFormularz() jest tu najważniejsza. To ją właśnie wywołujemy naciskając przycisk Wyślij. Poniżej przypisujemy zmiennym name, email i message obiektu wyslij dane z pól formularza. */ function wyslijFormularz() { wyslij.name = nazwisko.text; wyslij.email = email.text; wyslij.message = wiadomosc.text; /* w poniższym fragmencie funkcji wyslijFormularz() używamy indexOf dla pozyskania informacji o występowaniu znaku w ciągu znaków. */ if ((nazwisko.text != "") and (nazwisko.text != "Podaj Imię i Nazwisko") and (email.text != "") and (email.text != "Podaj poprawny adres e-mail") and (email.text.indexOf("@", 0) != -1) and (email.text.indexOf('.', 0) != -1) and (wiadomosc.text != "") and (wiadomosc.text != "Wpisz treść zapytania")) { /* metoda sendAndLoad pozwala na określenie obiektu LoadVars którego zawartość ma zostać wysłana (tutaj: wyslij) za pośrednictwem contactForm.php, oraz tego, do którego ma zostać wysłana odpowiedź (tutaj: odbierz). Jeżeli w pola formularza wpisano poprawne dane następuje ich wysłanie i odebranie wartości zmiennej status, która jeśli równa formOK wymusza czyszczenie formularza */ wyslij.sendAndLoad("contactForm.php",odbierz,"GET"); } else { sprawdzFormularz(); } odbierz.onLoad = function(success:Boolean) { if (success) { if (odbierz.status == "formOk") { czyscFormularz(); } } else { trace("blad po stronie serwera"); } }; } 3 Kod dla przycisku to tylko wywołanie funkcji wysyłającej formularz on (press) { wyslijFormularz(); } Kod dla pliku contactForm.php <?php $sendTo = "[email protected]"; $subject = "kontakt ze strony WWW"; $message = $_GET['message']; $email = $_GET['email']; $name = $_GET['name']; $headers = "From: $email\r\n"; $msg = "Informacja wysłana za pośrednictwem strony WWW:\n\nNazwisko:".$name."\n\nE-mail:".$email."\n\nWiadomość:".$message.""; mail($sendTo, $subject, $msg, $headers); echo "status=formOk"; ?> Zawartość pliku contact.xml <?xml version="1.0" encoding="utf-8" ?> <contacts> <contactTitle><![CDATA[NAZWA FIRMY]]></contactTitle> <contactDesc><![CDATA[Aby skontaktować się z nami wypełnij wszyskie pola formularza. Postaramy się niezwłocznie odpowiedzieć.]]></contactDesc> </contacts> (Sekcja CDATA jest techniką, która pozwala stosować w dokumencie dowolne znaki, gdyż zabrania procesorowi XML przetwarzania ich zgodnie z zasadami XML. Pełni analogiczną funkcję jak znacznik <pre> w dokumentach HTML. Wyłącza objęty nią fragment dokumentu z przetwarzania i dosłownie "cytuje" jego zawartość). Dla poprawnego działania formularza powinniśmy wrzucić pliki: - formularz.swf - formularz.html - contactForm.php - xml/kontakt.xml na serwer z obsługą PHP 4