Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz kontaktowy - potwierdzenie wysłania wiadomości
Forum PHP.pl > Forum > PHP
master89
Witam,
tak jak w temacie. Jak mogę zrobić potwierdzenie wysłania wiadomości z formularza kontaktowego? Przygotowałem taką grafikę, żeby zobrazować to o co mi chodzi. Aktualnie pojawia się biała strona z napisem: Wiadomość została wysłana.

Proszę o pomoc i pozdrawiam
markonix
Skoro pojawia Ci się biała strona to znaczy, że Twój formularz wysyła dane do innej strony w tradycyjny sposób - bez AJAX.

Średnio ładnie ale w dosyć prosty sposób możesz zrobić tak:
1. Formularz wysyła się na stronę gdzie teraz.
2. Z tej strony przekierowujesz z powrotem z dodatkowym parametrem GET.
3. Wyświetlasz na stronie swój komunikat jeżeli masz ten parametr.
W tej wersji bez JS się nie obejdzie bo i tak musisz oskryptować przycisk "powrót".

Ładniejsze ale trudniejsze:
1. Zmieniasz na AJAX.
2. Kiedy success wywołujesz okienko (szukaj pod określeniem dialog box).
master89
A jest mozliowść, zeby zamiast napisu: Wiadomość wysłana!, żeby przechidzł na stronę którą stworzę i będzie to ładniej wyglądało niż zwykły napis?

Albo po wysłaniu wiadomości, żeby napis Wiadomość wysłana pokazywał sie pod, nad lub zamiast buttona Wyślij?

Która z tych opcji jest wykonalna i łatwiejsza do wykonania?
!*!
Cytat(master89 @ 9.02.2013, 13:01:21 ) *
Która z tych opcji jest wykonalna i łatwiejsza do wykonania?


Obie są łatwe. Przekierowanie robisz za pomocą header
master89
Proszę o dokładniejszą pomoc:(


formularz na stronie:

  1. <form method="post" action="form.php" enctype="multipart/form-data">
  2. <label>Imię i nazwsko</label>
  3. <input type="text" name="formName" id="name">
  4. <label>Twój Email</label>
  5. <input type="text" name="formEmail" id="email">
  6. <label>Wiadomość</label>
  7. <textarea style="height:160px" cols="50" name="formText" id="message"></textarea>
  8. <input type="submit" name="submit" class="btn btn-prime btn-full" value="Wyślij formularz"/>
  9. </form>


plik form.php

  1. <?php
  2. //--- początek formularza ---
  3. if(empty($_POST['submit'])) {
  4. ?>
  5.  
  6. <?php
  7. } else {
  8.  
  9. //twoje dane
  10. $email = 'moj@email.pl';
  11.  
  12. //dane z formularza
  13. $formName = $_POST['formName'];
  14. $formEmail = $_POST['formEmail'];
  15. $formText = $_POST['formText'];
  16.  
  17. if(!empty($formName) && !empty($formEmail) && !empty($formText)) {
  18.  
  19. //--- początek funkcji weryfikującej adres e-mail ---
  20. function checkMail($checkmail) {
  21. if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) {
  22. if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){
  23. return true;
  24. }
  25. else{
  26. return false;
  27. }
  28. } else {
  29. return false;
  30. }
  31. }
  32. //--- koniec funkcji ---
  33. if(checkMail($formEmail)) {
  34. //dodatkowe informacje: ip i host użytkownika
  35. $ip = $_SERVER['REMOTE_ADDR'];
  36. $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
  37.  
  38. //tworzymy szkielet wiadomości
  39. //treść wiadomości
  40. $mailText = "Treść wiadomości:\n$formText\nOd: $formName, $formEmail ($ip, $host)";
  41.  
  42. //adres zwrotny
  43. $mailHeader = "Content-type: text/plain; charset=utf-8";
  44.  
  45. //funkcja odpowiedzialna za wysłanie e-maila
  46. @mail($email, 'Formularz kontaktowy', $mailText, $mailHeader) or die('Błąd: wiadomość nie została wysłana');
  47.  
  48. //komunikat o poprawnym wysłaniu wiadomości
  49. echo 'Wiadomość została wysłana';
  50. } else {
  51. echo 'Adres e-mail jest niepoprawny';
  52. }
  53.  
  54. } else {
  55. //komunikat w przypadku nie powodzenia
  56. echo 'Wypełnij wszystkie pola formularza';
  57. }
  58.  
  59. //--- koniec formularza ---
  60. }
  61. ?>
!*!
I z czym masz problem? Z chwilą poprawnego wysłania formularza w php, robisz przekierowanie. Jak chcesz to zrobić w ajax, to dokładny opis masz w dokumentacji http://api.jquery.com/jQuery.ajax/ i przykładach.
master89
W tym, że nie znam się na PHPie. A tym bardziej na Ajaxie. Byłbym wdzięczny jak mógłbyś mi pomóc rozwiązać ten "problem". Bo nie wiem jak to zrobić.

pozdraiwam
!*!
Rozwiązanie już padło, pomyśl trochę.
Zamień 49 linijkę na header i gotowe.
master89
header("contact.html'); questionmark.gif?

nie wiem jak dziala header... możesz mi powiedzieć co muszę zrobić zeby przechodziło na podstronę contact.html??

z góry dziekuję!
!*!
Tak, z tym że musi być tak jak tam opisali.
  1. // lub
  2. header('Location: ./sciezka/do/pliku/costam.html');


cholerne parsowanie kodu, psuje efekt na forum.
master89
A teraz chciałbym wstawić do tego linka

  1. header('Location: contact.html');


odnośnik do miejsca na stronie. Jak to się robi?
Wiem, że w html wstawia się
  1. #miejsce
.
A w phpie? Chyba ze mogę ustalić domyslne przechodzenie do miejsca na tej stronie?
!*!
Nie rozumiem pytania.
markonix
Kotwice?
master89
Naprzyklad tak jak tu na forum. Po otrzymaniu maila, że ktoś odpisał w Twoim temacie link przkierowuje Cie bezpośrednio do odpowiedzi, a nie na górę strony.

Cytat(markonix @ 9.02.2013, 14:55:55 ) *
Kotwice?

Tak
markonix
No to odnośniki kotwic w header są analogiczne do normalnych linków.
master89
Cytat(markonix @ 9.02.2013, 14:59:01 ) *
No to odnośniki kotwic w header są analogiczne do normalnych linków.

W takim razie miałem gdzie indziej błąd. Ponieważ po zastosowaniu takiego kodu wyskoczył błąd bazy.
markonix
Co ma przekierowanie do błędów bazy danych... sciana.gif
master89
O co Ci chodzi? Przecież wyraźnie napisałem:
Cytat(master89 @ 9.02.2013, 15:02:05 ) *
W takim razie miałem gdzie indziej błąd.

markonix
Zacytuj drugie zdanie i zupełnie zmienia się kontekst.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.