Mam formuarz ktory uzytkownik wysyla wpisujac kilka danych a nastepnie PHP sprawdza poprawnosc danych. Chcialbym wyswietlic uzytkownikowi wynik koncowy wyslanego formularza w postaci - gratulacje e-mail zostal wyslany na adres "e-mail" z "IP" dnia "data". Jak to mozna ugryzc bez przeladowania strony jesli jest taka opcja? Jesli nie to bede musial zrobic nowa strone ktora bedzie wyswietlana po wyslaniu formularza. Jaka wedlug was opcja jest najlepsza. Chcialbym oczywiscie aby wszystko odbywalo sie w czystym HTML + CSS.
Ale żeby zwalidować formularz w PHP musisz go przesłać tym samym przeładować stronę.
Pchanie akcji wysyłania maila w proces walidacji to zły pomysł. Co jeśli wysyłka będzie trwać kilkanaście sekund lub dłużej?
A czemu miala by trwac kilkanascie sekund lub dluzej? Wszystko leci po SMTP i jest tam jakis max timeout. Dzialam na tym systemie od pol roku i jakos nie bylo jeszcze z tym problemu.
Przeczytaj to np. :
https://askleo.com/long-email-delivery-take/
Jeżeli chcesz to zrobić bez przeładowywania strony to nie obejdzie się bez ajax'a. Schemat jest prosty:
- Asynrchroniczny submit formularza
- Walidacja po stronie PHP i wysyłka maila
- Zwrot wyniku na front i wyświetlenie odpowiedniego komunikatu użytkownikowi
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.