Czyszczenie formularza po wysłaniu i sprawdzeniu |
Czyszczenie formularza po wysłaniu i sprawdzeniu |
6.04.2010, 13:19:36
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 6.04.2010 Ostrzeżenie: (0%) |
Witam
Zrobiłam formularz kontaktowy na stronę. Skorzystałam z porad z jakiegoś forum. Wszystko działa. Sprawdza on czy wszystkie dane zostały wpisane. Jeśli nie zostały, to wyświetla komunikat, żeby uzupełnić dane. Jeśli wszystko zostało wypełnione, to wysyła maila. Pierwsze: Po wysłaniu maila pojawia się pusta strona, do której mogę ewentualnie za pomocą echo podać napis typu Dziękujemy za wysłanie maila itp. Ja chciałabym, żeby podziękowanie za wysłanie maila pojawiało się np. zamiast napisu *Pola wymagane. Bądź gdzieś wyżej nad formularzem. Drugie: Chciałabym, żeby po wysłaniu maila, gdy już wszystkie dane są sprawdzone oraz po odśwież, czyściło wypełniony formularz. Bo gdy robię odśwież, to wpisane dane zostają. A nie chcę, żeby ktoś złośliwy przysyłał mi 1000 maili dziennie Mam teraz na onSubmit="return validate.check(this)" Czyli zawsze sprawdza gdy są błędy. Gdy dodam do tego: "nazwaformy.submit();nazwaformy.reset();return false;" to wtedy najpierw sprawdzi mi czy dane są wpisane, jeśli nie to wyskoczy komunikat, że nie. Ale gdy na komunikacie z błędem kliknę OK, to i tak wysyła. Nie sprawdza wtedy tych pól czy są wypełnione. Nie znam się za bardzo na php. Szukałam po różnych forach, ale nie mogę znaleźć. Mój formularz kontaktowy:
Mój plik wyslij.php
moj plik do sprawdzania:
I jeszcze mały fragment w head:
Z góry dziękuję za pomoc. Pozdrawiam Aga Ten post edytował agapart 6.04.2010, 14:06:30 |
|
|
6.04.2010, 13:46:36
Post
#2
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 16.01.2009 Skąd: lubelskie Ostrzeżenie: (10%) |
ładniej i dogodniej ten kod wyglądał by gdyby był w odpowiednich znacznikach:)
Ten post edytował micha12344 6.04.2010, 13:47:15 |
|
|
6.04.2010, 13:53:25
Post
#3
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź |
~agapart, proszę dodać BBCode.
-------------------- Life's simple... You make choices and don't look back...
|
|
|
6.04.2010, 13:53:35
Post
#4
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ |
Ad. "pierwsze"
To formularz przenosi Cię do innej podstrony (action="wyslij.php") - jeżeli chcesz na niej pozostać musisz zmienić parametr action na np. nazwę strony na której umieściłaś formularz . Pamiętaj, że zawartość pliku wyslij.php musisz w takim układzie przenieść do pliku z formularzem, pamiętając o tym, że plik musi mieć rozszerzenie *php. Ad. "drugie" Po wysłaniu zmiennych musisz je "wyczyścić". Ten post edytował Daiquiri 6.04.2010, 13:54:02 |
|
|
6.04.2010, 14:50:19
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 6.04.2010 Ostrzeżenie: (0%) |
Czyli plik nie może się nazywać kontakt.html tylko kontakt.php? Wtedy action będzie action=kontakt.php?
A ten kod z wyślij to gdzie wkleić w tym formularzu? A te dane to jak wyczyścić po wysłaniu? Jak pisałam w on submit "nazwaformy.submit();nazwaformy.reset();return false;" to wtedy omijalo mi sprawdzanie czy pola sa wypelnione. Ten post edytował agapart 6.04.2010, 14:57:17 |
|
|
6.04.2010, 15:06:17
Post
#6
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ |
Jeżeli plik, w którym obecnie trzymasz np. formularz, nazywa się kontakt.html to aby "zadziałał" umieszczony w nim kod php - plik musi mieć rozszerzenie *php.
|
|
|
7.04.2010, 00:41:05
Post
#7
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 6.04.2010 Ostrzeżenie: (0%) |
Ok. Zmieniłam troszkę kod (znalezione na jakimś forum, troszkę przerobione). Wszystko działa w tym samym pliku kontakt.php. Gdy pola puste to wyświetla napis, że puste. Gdy wszystko ok to wysyła maila. Sprawdza też poprawność maila (nie czy istnieje adres mail, ale czy jest zbudowany z odpowiednich ciągów znaków - tyle wystarczy).
Problem jest natomiast , że po wysłaniu już, gdy jest napis "Twoja wiadomość została wysłana", to przy odświeżaniu strony, znowu wysyła maila. Jeśli ktoś odświeży mi stronę 50 razy, to dostanę 50 maili.
Co zmienić, żeby przy odświeżaniu nie wysyłało ponownie? Ten post edytował agapart 7.04.2010, 10:44:19 |
|
|
7.04.2010, 16:08:29
Post
#8
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 11 Dołączył: 2.02.2010 Ostrzeżenie: (0%) |
Pierwszy (gorszy ale prosty) proponowany przeze mnie sposób:
zmienił bym: na
Ew. przekazanie jakiegoś parametru, który poinformuje, że można wyświetlić komunikat o wysłaniu. To wyeliminuje problem odświeżania. Drugi pomysł wymaga jakiejś bazy danych: Jest to generowanie w polu hidden unikalnego klucza dla każdego wywołania formularza (np. md5 + mktime). Przy wysyłaniu należy najpierw sprawdzić w bazie, czy taki klucz już jest: a ) nie ma -> zapisujemy go do bazy i wysyłamy wiadomość b ) jest -> nie podejmujesz akcji (nie wysyłasz maila) To wyeliminowało by i odświeżanie i cofanie i wsjo Ten post edytował toel 7.04.2010, 16:09:16 |
|
|
Wersja Lo-Fi | Aktualny czas: 28.03.2024 - 09:34 |