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

Podobne dokumenty