Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Problem z walidacja formularza
Forum PHP.pl > Forum > Przedszkole
MatBlo
Zacznę od początku. Niedawno rozpocząłem swoja przygodę z PHP i język sprawa mi sporo problemu. Jestem w trakcje tworzenia strony www z elementami PHP. Struktura strony wygląda następująco menu poziome wraz z grafiką znajdującą się po prawej stronie jest statyczne natomiast treść znajdująca się po lewej dynamiczna. Problem ten rozwiązałem za pomocą instrukcji include_once(), jednak nie na tym problem polega jedna z podstron kontakt.php posiada następujący kod:
  1.  
  2. <h3>Formularz kontaktowy:</h3>
  3.  
  4. <form method="post" action="index.php?id=8">
  5. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  6. <div class="tabelaTresc"><input type="text" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  7. <div class="clear" style="height: 5px;"></div>
  8. <div class="tabelaNazwa"><label for="email">E-mail:</label></div>
  9. <div class="tabelaTresc"><input type="text" id="email" name="email" style="width:290px;" /><br /></div>
  10. <div class="clear" style="height: 5px;"></div>
  11. <div class="tabelaNazwa"><label for="phone">Telefon:</label></div>
  12. <div class="tabelaTresc"><input type="text" id="phone" name="phone" style="width:290px;" /><br /></div>
  13. <div class="clear" style="height: 5px;"></div>
  14. <div class="tabelaNazwa"><label for="theme">Temat*:</label></div>
  15. <div class="tabelaTresc"><input type="text" id="theme" name="theme" style="width:290px;" /><br /></div>
  16. <div class="clear" style="height: 5px;"></div>
  17. <div class="tabelaNazwa"><label for="other">Wiadomość:</label></div>
  18. <div class="tabelaTresc"><textarea id="other" name="other" rows="7" cols="50"></textarea><br /></div>
  19. <div class="clear" style="height: 10px;"></div>
  20. <div class="tabelaTresc"><input type="submit" value="Wyślij" name="Wyślij" /></div>
  21. </form>


natomiast skrypt odpowiedzialny za wysyłanie wygląda następująco:
  1. <?php
  2. $imie = $_POST['firstname'];
  3. $email = $_POST['email'];
  4. $tel = $_POST['phone'];
  5. $temat = $_POST['theme'];
  6. $wiadomosc = $_POST['other'];
  7. $to = '...@gmail.com';
  8. $subject = "$temat";
  9. $msg = "Imię: $imie\n" .
  10. "Telefon: $tel\n" .
  11. "Treść wiadomości: $wiadomosc";
  12. mail($to, $subject, $msg, 'From:'.$email);
  13. ?>
  14.  
  15. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  16. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  17. <head>
  18. <title>Salon Dom</title>
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  20. <link rel="stylesheet" href="styl.css" type="text/css" />
  21.  
  22. </head>
  23.  
  24. <body>
  25.  
  26. <p>Dziękuję za przesłanie formularza</p>
  27.  
  28. </body>
  29. </html>


W takim wypadku formularz działa, wysyła maila odraz w miejscu formularza wyświetlany jest komunikat dziękujący za wysłanie maila. W momencie gry zamiast fragmentu napisanego w html użyć echo nie wyświetla mi się podziękowanie. I nie bardzo wiem dlaczego ;/ Chciałem również dokonać sprawdzenia dwóch pól imię i temat napisałem taki kawałek kodu:
  1. <?php
  2. if (isset($_POST['submit'])) {
  3. $imie = $_POST['firstname'];
  4. $email = $_POST['email'];
  5. $tel = $_POST['phone'];
  6. $temat = $_POST['theme'];
  7. $wiadomosc = $_POST['other'];
  8. if(empty($imie) && empty($temat)) {
  9. echo'Nie podałeś imienia i tematu wiadomości.<br />';
  10. }
  11. if(empty($imie) && (!empty($temat))) {
  12. echo'Nie podałeś imienia.<br />';
  13. }
  14. if((!empty($imie)) && empty($temat)) {
  15. echo'Nie podałeś tematu.<br />';
  16. }
  17. if((!empty($imie)) && (empty($temat))) {
  18. $to = '...@gmail.com';
  19. $subject = "$temat";
  20. $msg = "Imię: $imie\n" .
  21. "Telefon: $tel\n" .
  22. "Treść wiadomości: $wiadomosc";
  23. mail($to, $subject, $msg, 'From:'.$email);
  24. echo 'Dziękuję za przesłanie formularza';
  25. }
  26. }
  27. ?>


po wrzuceniu tego kodu na serwer ani nie wyświetla się żaden komunikat anie mail nie zostaje wysłany. Tematy na formum przeglądałem jednak nie znalazłem odp na mój problem - być może źle szukałem .
zend
  1. //to
  2. if (isset($_POST['submit'])) {
  3. //zastąp
  4. if(count($_POST)) {

Pobieważ przycisku submit nie uświadczysz w formularzu i trzymaj kod w
  1.  
  2. </body>
MatBlo
Wstawiłem formularz do body, if zamieniłem i pomogło. Wiadomość jest wysyłana, podziękowanie również otrzymuję z tym, że nawet gdy wyślę pusty formularz. Czyli nadal instrukcja if nie dział sad.gif
zend
  1. $submit = true;
  2.  
  3. if(empty($imie))
  4. {
  5. echo 'CO jest? Nie masz imienia?';
  6. $submit = false;
  7. }
  8.  
  9. if($submit)
  10. {
  11. //mail
  12. echo 'Thanks';
  13. }

Dostosuj sobie do własnych potrzeb
MatBlo
Coś mi nie wychodzi - muszę chyba być prowadzonym jak dziecko za rękę. Wykorzystałem Twój skrypt jednak nie działa do końca prawidłowo. Co prawda jeśli nie wpiszę imienia to mail nie zostanie wysłany jednak nie otrzymuje również informacji o braku imienia. W przypadku podania imienia nie mam wiadomości o wysłaniu :?
  1. <?php
  2. if(count($_POST)) {
  3. $imie = $_POST['firstname'];
  4. $email = $_POST['email'];
  5. $tel = $_POST['phone'];
  6. $temat = $_POST['theme'];
  7. $wiadomosc = $_POST['other'];
  8. $submit = true;
  9. if(empty($imie))
  10. {
  11. echo'Nie podałeś imienia i tematu wiadomości.<br />';
  12. $submit = false;
  13. }
  14. if($submit)
  15. {
  16. $to = '...@gmail.com';
  17. $subject = "$temat";
  18. $msg = "Imię: $imie\n" .
  19. "Telefon: $tel\n" .
  20. "Treść wiadomości: $wiadomosc";
  21. mail($to, $subject, $msg, 'From:'.$email);
  22. echo 'Dziękuję za przesłanie formularza';
  23. }
  24. }
  25. ?>
zend
  1. ini_set('display_errors' , 'On'); //daj to na początku pliku


Ps Trochę to niemądre tak na forum swój email podawać smile.gif
MatBlo
Niestety nie ma żadnych zmian. Tak wyglądała cała moja nauka z PHP co coś wymyśle albo ktoś mi zaproponuje jakieś rozwiązanie czy też gdzieś przeczytam to nie działa:/ Co do maila jest to mój któryś mail taki zapasowy, ale zgadza się nie jest to zbyt inteligentne więc go usunąłem.
zend
Dorzuć do każdego warunku if warunek else z inną wiadomością, może wtedy Ci się wyjaśni
Damiian
Powinno być ok..

  1. <?php
  2.  
  3. if (empty($_POST['firstname']))
  4. {
  5. echo 'Uzupelnij nick!<br/>';
  6.  
  7. }
  8.  
  9. if (empty($_POST['email']))
  10. {
  11. echo 'Uzupelnij mail!<br/>';
  12.  
  13. }
  14.  
  15.  
  16. if (empty($_POST['tel']))
  17.  
  18. {
  19.  
  20. echo 'Uzupelnij telefon!<br/>';
  21.  
  22. }
  23.  
  24. if (empty($_POST['theme']))
  25.  
  26. {
  27.  
  28. echo 'Uzupelnij temat!<br/>';
  29.  
  30. }
  31.  
  32. if (empty($_POST['other']))
  33.  
  34. {
  35.  
  36. echo 'Uzupelnij Wiadomość!<br/>';
  37.  
  38. }
  39.  
  40.  
  41.  
  42. if(!empty($_POST['firstname']) && !empty($_POST['email']) && !empty($_POST['tel']) && !empty($_POST['theme']) && !empty($_POST['other']) &&))
  43. {
  44.  
  45.  
  46. // Co ma robic jak wszystko bedzie ok
  47.  
  48.  
  49. }
  50. ?>
MatBlo
Po drobnych przeróbkach działa biggrin.gif
  1. <?php
  2. if (empty($_POST['firstname']))
  3. {
  4. echo 'Uzupelnij nick!<br />';
  5. }
  6. if (empty($_POST['email']))
  7. {
  8. echo 'Uzupelnij mail!<br />';
  9. }
  10. if (empty($_POST['phone']))
  11. {
  12. echo 'Uzupelnij telefon!<br />';
  13. }
  14. if (empty($_POST['theme']))
  15. {
  16. echo 'Uzupelnij temat!<br />';
  17. }
  18. if (empty($_POST['other']))
  19. {
  20. echo 'Uzupelnij Wiadomość!<br />';
  21. }
  22. if (!empty($_POST['firstname']) && !empty($_POST['email']) && !empty($_POST['phone']) && !empty($_POST['theme']) && !empty($_POST['other']))
  23. {
  24. $to = '...@gmail.com';
  25. $email = $_POST['email'];
  26. $subject = $_POST['theme'];
  27. $imie = $_POST['firstname'];
  28. $tel = $_POST['phone'];
  29. $wiadomosc = $_POST['other'];
  30. $msg = "Imię: $imie\n" .
  31. "Telefon: $tel\n" .
  32. "Treść wiadomości: $wiadomosc";
  33. mail($to, $subject, $msg, 'From:'.$email);
  34. echo 'Dziękuję za przesłanie formularza';
  35. }
  36. ?>


Mam jeszcze jedno pytanie co musiałbym zrobić, aby komunikaty u uzupełnieniu pojawiały mi się obok tego pola, a nie na nowej stronie?
gigzorr
Pewnie masz dwa pliki czyli formularz i action="link do skryptu" a jak chcesz zeby na tej samej sie pojawialy to zostaw action puste i formularz wklej do tego samego skryptu z plikiem.
Damiian
Tak jak kolega wyżej powiedział
Stare action zamieniasz na:
  1. <form method="post" action="">


I pod formularzem dajesz:
  1. <?php
  2. if(count($_POST)) {
  3.  
  4. if (empty($_POST['firstname']))
  5. {
  6. echo 'Uzupelnij nick!<br/>';
  7. }
  8. }
  9. ?>

Dalej analogicznie.
MatBlo
Sprawa nie wygląda tak łatwo, a to dlatego że jeśli zrobię tak jak mówicie to od razu po załadowaniu strony dostaje komunikat, że nie mam wypełnionego takiego i takiego pola, wiec brakuje fragment, który by aktywował sprawdzenie po naciśnięciu przycisku wyślij.
Damiian
Dlatego że pisujesz samo:

  1. <?php
  2. if (empty($_POST['firstname']))
  3.  
  4. {
  5.  
  6. echo 'Uzupelnij nick!<br/>';
  7.  
  8. }
  9. ?>


I skrypt odrazu po wejściu na stronę sprawdza czy są wypełnione pola, wiadomo że pokaże, iż nie są...



Wklej to w formularz, tak jak tu jest:

  1. <h3>Formularz kontaktowy:</h3>
  2.  
  3. <form method="post" action="">
  4. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  5. <div class="tabelaTresc"><input type="text" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  6. <div class="clear" style="height: 5px;"></div>
  7. <div class="tabelaNazwa"><label for="email">E-mail:</label></div>
  8. <div class="tabelaTresc"><input type="text" id="email" name="email" style="width:290px;" /><br /></div>
  9. <div class="clear" style="height: 5px;"></div>
  10. <div class="tabelaNazwa"><label for="phone">Telefon:</label></div>
  11. <div class="tabelaTresc"><input type="text" id="phone" name="phone" style="width:290px;" /><br /></div>
  12. <div class="clear" style="height: 5px;"></div>
  13. <div class="tabelaNazwa"><label for="theme">Temat*:</label></div>
  14. <div class="tabelaTresc"><input type="text" id="theme" name="theme" style="width:290px;" /><br /></div>
  15. <div class="clear" style="height: 5px;"></div>
  16. <div class="tabelaNazwa"><label for="other">Wiadomość:</label></div>
  17. <div class="tabelaTresc"><textarea id="other" name="other" rows="7" cols="50"></textarea><br /></div>
  18. <div class="clear" style="height: 10px;"></div>
  19. <div class="tabelaTresc"><input type="submit" value="Wyślij" name="Wyślij" /></div>
  20. </form>
  21.  
  22.  
  23. <?php
  24.  
  25. if(count($_POST)) {
  26.  
  27. if (empty($_POST['firstname']))
  28.  
  29. {
  30.  
  31. echo 'Uzupelnij nick!<br/>';
  32.  
  33. }
  34.  
  35. }
  36.  
  37. ?>


To jest samo sprawdzenie first name, pododawaj potem wszystkie pola...
MatBlo
Wkleiłem tak jak podaliście i nadal to samo.
bastard13
  1. if($_POST)
  2. { //instrukcje z tego bloku wykonają się tylko jeśli przesłano posta
  3. if(!isset($_POST['imie']))
  4. echo 'Nie wypełniłeś pola imię!!!'
  5. //dodaj resztę walidaji
  6. }
  7. else
  8. {
  9. //wyświetlanie formularza
  10. }
MatBlo
  1. <h3>
  2. Formularz kontaktowy:
  3. </h3>
  4. <form method="post" action="">
  5. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  6. <div class="tabelaTresc"><input type="text" value="<? echo htmlspecialchars($_POST['firstname']); ?>" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  7. <div class="clear" style="height: 5px;"></div>
  8. <div class="tabelaNazwa"><label for="email">E-mail*:</label></div>
  9. <div class="tabelaTresc"><input type="text" value="<? echo htmlspecialchars($_POST['email']); ?>" id="email" name="email" style="width:290px;" /><br /></div>
  10. <div class="clear" style="height: 5px;"></div>
  11. <div class="tabelaNazwa"><label for="phone">Telefon*:</label></div>
  12. <div class="tabelaTresc"><input type="text" value="<? echo htmlspecialchars($_POST['phone']); ?>" id="phone" name="phone" style="width:290px;" /><br /></div>
  13. <div class="clear" style="height: 5px;"></div>
  14. <div class="tabelaNazwa"><label for="theme">Temat*:</label></div>
  15. <div class="tabelaTresc"><input type="text" value="<? echo htmlspecialchars($_POST['theme']); ?>" id="theme" name="theme" style="width:290px;" /><br /></div>
  16. <div class="clear" style="height: 5px;"></div>
  17. <div class="tabelaNazwa"><label for="other">Wiadomość*:</label></div>
  18. <div class="tabelaTresc"><textarea id="other" name="other" rows="7" cols="50"><? echo htmlspecialchars($_POST['other']); ?></textarea><br /></div>
  19. <div class="clear" style="height: 10px;"></div>
  20. <div class="tabelaTresc"><input type="submit" value="Wyślij" name="submit" /></div>
  21. </form>


  1. <?php
  2. if($_POST)
  3. {
  4. if (empty($_POST['firstname']))
  5. {
  6. echo '<br />Uzupełnij imię!';
  7. }
  8. if (empty($_POST['email']))
  9. {
  10. echo '<br />Uzupełnij mail!';
  11. }
  12. elseif(!eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']))
  13. {
  14. echo '<br />Podano błędny email!';
  15. }
  16. if (empty($_POST['phone']))
  17. {
  18. echo '<br />Uzupełnij telefon!';
  19. }
  20. if (empty($_POST['theme']))
  21. {
  22. echo '<br />Uzupełnij temat!';
  23. }
  24. if (empty($_POST['other']))
  25. {
  26. echo '<br />Uzupełnij wiadomość!';
  27. }
  28. if (!empty($_POST['firstname']) && !empty($_POST['email']) && eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']) && !empty($_POST['phone']) && !empty($_POST['theme']) && !empty($_POST['other']))
  29. {
  30. $to = 'xxx@gmail.com';
  31. $subject = $_POST['theme'];
  32. $message = "Imię: $_POST[firstname]\n
  33. Telefon: $_POST[phone]\n
  34. Treść wiadomości:\n $_POST[other]";
  35. $header = "From: $_POST[email]";
  36. $header .= "\r\n";
  37. $header .= 'Content-type: text/plain; charset=utf-8'."\r\n";
  38. mail($to, $subject, $message, $header);
  39. echo '<br/>Dziękuję za przesłanie formularza';
  40. }
  41. }
  42. ?>


Wszystkim, którzy pomogli oczywiście bardzo dziękuję. Odświeżam temat ponieważ, mam jeszcze jeden problem w jaki sposób wyświetlić komunikaty o błędach, aby nie wyświetlały się pod formularzem tylko obok konkretnego pola? Np komunikat o braku wpisania imienia, obok pola z imieniem?
gigzorr
marginesami to ustaw .
MatBlo
Możesz trochę rozwinąć swoją wypowiedź.
Ruio
Zrób coś alla to :

  1. <span style="margin-left:15px; margin-top:20px">tu co ma się pokazać</span>


Marginesy ustaw jak chcesz winksmiley.jpg
MatBlo
Nie o to mi chodzi - pytam jak za pomocą jakiś instrukcji przy nie wpisaniu imienia mam otrzymać komunikat. np w tym span.
Ruio
Ustaw sobie do każdego inną zmienną np:

  1. if (empty($_POST['firstname']))
  2. {
  3. $name = '<br />Uzupełnij imię!';
  4. }


i póxniej tam gdzie chcesz daj
  1. echo $name;


PS. Nie koniecznie do każdego inną możesz tą samą ale pamietaj o kropce po =

tzn
  1. if (empty($_POST['firstname']))
  2. {
  3. $name =. '<br />Uzupełnij imię!';
  4. }
MatBlo
coś mi nie działa ;/

mam tak
  1. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  2. <div class="tabelaTresc"><input type="text" value="<? echo htmlspecialchars($_POST['firstname']); ?>" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  3. <span style="margin-left:350px; margin-top:50px"><? echo $test; ?></span>

w php
  1. if (empty($_POST['firstname']))
  2. {
  3. $test = 'Uzupełnij imię!';
  4. }

to nie otrzymuje żądnego komunikatu, natomiast jeśli w if zapiszę tak:
  1. if (empty($_POST['firstname']))
  2. {
  3. echo $test = 'Uzupełnij imię!';
  4. }

to wówczas komunikat znów otrzymuje pod spodem.
Ruio
Nie widzę błędu w tym co ci podałem ani w twoim.

To raczej nie to ale popraw na długie znaczniki:
  1. <?php echo $test; ?>
MatBlo
Niestety nie pomogło to.
Ruio
Pokaż cały kod php który tyczy się tych ifów po poprawkach bo tu błedu nie ma
MatBlo
Najpierw chciałem sprawdzić z jednym błędem czy jest ok, wiec te zmiany były wprowadzone tylko w jednej instrukcji.
  1. <h3>
  2. Formularz kontaktowy:
  3. </h3>
  4. <form method="post" action="">
  5. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  6. <span style="margin-left:10px; margin-top:5px"><?php echo $test; ?></span>
  7. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['firstname']); ?>" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  8. <div class="clear" style="height: 5px;"></div>
  9. <div class="tabelaNazwa"><label for="email">E-mail*:</label></div>
  10. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['email']); ?>" id="email" name="email" style="width:290px;" /><br /></div>
  11. <div class="clear" style="height: 5px;"></div>
  12. <div class="tabelaNazwa"><label for="phone">Telefon*:</label></div>
  13. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['phone']); ?>" id="phone" name="phone" style="width:290px;" /><br /></div>
  14. <div class="clear" style="height: 5px;"></div>
  15. <div class="tabelaNazwa"><label for="theme">Temat*:</label></div>
  16. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['theme']); ?>" id="theme" name="theme" style="width:290px;" /><br /></div>
  17. <div class="clear" style="height: 5px;"></div>
  18. <div class="tabelaNazwa"><label for="other">Wiadomość*:</label></div>
  19. <div class="tabelaTresc"><textarea id="other" name="other" rows="7" cols="50"><?php echo htmlspecialchars($_POST['other']); ?></textarea><br /></div>
  20. <div class="clear" style="height: 10px;"></div>
  21. <div class="tabelaTresc"><input type="submit" value="Wyślij" name="submit" /></div>
  22. </form>


  1. <?php
  2. if($_POST)
  3. {
  4. if (empty($_POST['firstname']))
  5. {
  6. $test = '<br />Uzupełnij imię!';
  7. }
  8. if (empty($_POST['email']))
  9. {
  10. echo '<br />Uzupełnij mail!';
  11. }
  12. elseif(!eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']))
  13. {
  14. echo '<br />Podano błędny email!';
  15. }
  16. if (empty($_POST['phone']))
  17. {
  18. echo '<br />Uzupełnij telefon!';
  19. }
  20. if (empty($_POST['theme']))
  21. {
  22. echo '<br />Uzupełnij temat!';
  23. }
  24. if (empty($_POST['other']))
  25. {
  26. echo '<br />Uzupełnij wiadomość!';
  27. }
  28. if (!empty($_POST['firstname']) && !empty($_POST['email']) && eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']) && !empty($_POST['phone']) && !empty($_POST['theme']) && !empty($_POST['other']))
  29. {
  30. $to = 'xxx@gmail.com';
  31. $subject = $_POST['theme'];
  32. $message = "Imię: $_POST[firstname]\nTelefon: $_POST[phone]\nTreść wiadomości:\n$_POST[other]";
  33. $header = "From: $_POST[email]";
  34. $header .= "\r\n";
  35. $header .= 'Content-type: text/plain; charset=utf-8'."\r\n";
  36. mail($to, $subject, $message, $header);
  37. echo '<br/>Dziękuję za przesłanie formularza';
  38. }
  39. }
  40. ?>
Instrukcja wyświetla wszystkie komunikaty o błędach za wyjątkiem imienia.
Ruio
  1. <?php
  2. if($_POST)
  3. {
  4. if (empty($_POST['firstname']))
  5. {
  6. $test = '<br />Uzupełnij imię!';
  7. }
  8. if (empty($_POST['email']))
  9. {
  10. $test .= '<br />Uzupełnij mail!';
  11. }
  12. elseif(!eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']))
  13. {
  14. $test .= '<br />Podano błędny email!';
  15. }
  16. if (empty($_POST['phone']))
  17. {
  18. $test .= '<br />Uzupełnij telefon!';
  19. }
  20. if (empty($_POST['theme']))
  21. {
  22. $test .= '<br />Uzupełnij temat!';
  23. }
  24. if (empty($_POST['other']))
  25. {
  26. $test .= '<br />Uzupełnij wiadomość!';
  27. }
  28. if (!empty($_POST['firstname']) && !empty($_POST['email']) && eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']) && !empty($_POST['phone']) && !empty($_POST['theme']) && !empty($_POST['other']))
  29. {
  30. $to = 'xxx@gmail.com';
  31. $subject = $_POST['theme'];
  32. $message = "Imię: $_POST[firstname]\nTelefon: $_POST[phone]\nTreść wiadomości:\n$_POST[other]";
  33. $header = "From: $_POST[email]";
  34. $header .= "\r\n";
  35. $header .= 'Content-type: text/plain; charset=utf-8'."\r\n";
  36. mail($to, $subject, $message, $header);
  37. echo '<br/>Dziękuję za przesłanie formularza';
  38. }
  39. }
  40. ?>
  41.  
  42. <h3>
  43. Formularz kontaktowy:
  44. </h3>
  45. <form method="post" action="">
  46. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  47.  
  48. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['firstname']); ?>" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  49. <span style="margin-left:10px; margin-top:5px"><?php echo $test; ?></span> <div class="clear" style="height: 5px;"></div>
  50. <div class="tabelaNazwa"><label for="email">E-mail*:</label></div>
  51. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['email']); ?>" id="email" name="email" style="width:290px;" /><br /></div>
  52. <div class="clear" style="height: 5px;"></div>
  53. <div class="tabelaNazwa"><label for="phone">Telefon*:</label></div>
  54. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['phone']); ?>" id="phone" name="phone" style="width:290px;" /><br /></div>
  55. <div class="clear" style="height: 5px;"></div>
  56. <div class="tabelaNazwa"><label for="theme">Temat*:</label></div>
  57. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['theme']); ?>" id="theme" name="theme" style="width:290px;" /><br /></div>
  58. <div class="clear" style="height: 5px;"></div>
  59. <div class="tabelaNazwa"><label for="other">Wiadomość*:</label></div>
  60. <div class="tabelaTresc"><textarea id="other" name="other" rows="7" cols="50"><?php echo htmlspecialchars($_POST['other']); ?></textarea><br /></div>
  61. <div class="clear" style="height: 10px;"></div>
  62. <div class="tabelaTresc"><input type="submit" value="Wyślij" name="submit" /></div>
  63.  
  64. </form>


Działa bo sprawdzałem ;]

PS. Połaczyłem ci wszystkie komunikaty w jednej zmiennej ale chyba dasz sobie rade zmienić je na pojedyńcze smile.gif
MatBlo
Wielkie dzięki smile.gif (ofc za pomoc podziekowałem) nie wiedziałem, że wstawienie kodu php nad cześć html będzie miało znaczenie.
thek
Kolejność ma znaczenie. Przecież nie możesz wywołać zmiennej, której jeszcze nie ma winksmiley.jpg Normalnie interpreter rzuca w takich sytuacjach ostrzeżeniem a zmienna, w zależności od kontekstu, przyjmuje wartość 0, false lub ciąg pusty. Jeśli chcesz zobaczyć jak może wyglądać wariacja na temat formularza to obejrzyj kod poglądowy w innym temacie, też tyczącym formularza i jego walidacji -> http://forum.php.pl/index.php?showtopic=15...st&p=762498 Może to podejście podsunie Ci jakieś pomysły dla własnego forma. Nie ma on co prawda wysyłki maila, ale to już drobiazg dla copy-paste winksmiley.jpg Zwróć w nim uwagę na obsługę komunikatów błędów i walidację, bo to chyba najbardziej interesujący Cię fragment. Korzystaj jeśli rozumiesz i Ci się spodoba takie podejście. Przypatrz się co robię ze zmienną $errors zarówno w części walidującej, jak i samym wyświetlaniu formularza oraz poczytaj moje wyjaśniające posty poniżej tego posta, a powinieneś złapać co się dzieje i dlaczego oraz jak w kodzie. Nie jest to pełny gotowiec, ale daje pewne pobieżne pojęcie jak powinno się pewne rzeczy rozdzielać i stosować. Ciężko w polskim necie znaleźć dobrze opisany schemat tego pokroju. Zazwyczaj dostajesz mnóstwo kodu i minimum komentarzy. Tutaj starałem jak krowie na rowie niemal. Zwłaszcza dalszy post z opisem części dla $_GET.
MatBlo
Dzięki na pewno skorzystam.
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.