Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]formularz php / błąd przy powiadamianiu o zakończonej operacji
Forum PHP.pl > Forum > Przedszkole
cachaito
Witam. PHP nie potrafię, walczę z tym formularzem jak potrafię...

Mam na stronie kontakt.php formularz i kod php:
  1. <?php
  2. if(isset($_POST['submit'])){
  3. if(empty($_POST['fromname'])){
  4.  
  5. echo 'Nie wypełniłaś(eś) pola imię i nazwisko';
  6.  
  7. }
  8. elseif(empty($_POST['fromemail']))
  9. {
  10.  
  11. echo 'Nie podałaś(eś) swojego email\'a';
  12.  
  13. }
  14. elseif(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $_POST['fromemail']))
  15. {
  16.  
  17. echo 'Podano błędny email';
  18.  
  19. }
  20.  
  21. class MicroMailer {
  22. var $mail = "cachaito@o2.pl";
  23. var $subject = "";
  24. var $message = "";
  25. var $fromName = "";
  26. var $fromEmail = "";
  27. var $header = "";
  28. var $type = "text/plain";
  29. var $characterSet = "utf-8";
  30.  
  31.  
  32. function send(){
  33. $this->createHeader();
  34. if (@mail($this->mail,$this->subject,$this->message."\r\n".$this->mode,$this->header)){
  35. return true;
  36. } else {
  37. return false;
  38. }
  39. }
  40.  
  41. function createHeader(){
  42. $from = "From: $this->fromName <$this->fromEmail>\r\n";
  43. $replay = "Reply-To: $this->fromEmail\r\n";
  44. $params = "MIME-Version: 1.0\r\n";
  45. $params .= "Return-Path: $this->fromEmail\r\n";
  46. $params .= "Content-type: $this->type; charset=$this->characterSet\r\n";
  47. $params .= "Content-Transfer-Encoding: 8bit\r\n";
  48.  
  49. $this->header = $from.$replay.$params;
  50. return $this->header;
  51. }
  52. }
  53.  
  54.  
  55. $mailer = new MicroMailer();
  56.  
  57. $mailer->to = isset($_POST["to"]) ? $_POST["to"] : "";
  58. $mailer->fromName = isset($_POST["fromname"]) ? $_POST["fromname"] : "";
  59. $mailer->fromEmail = isset($_POST["fromemail"]) ? $_POST["fromemail"] : "";
  60. $mailer->subject = isset($_POST["subject"]) ? $_POST["subject"] : "";
  61. $mailer->message = isset($_POST["message"]) ? $_POST["message"] : "";
  62. }
  63. ?>


  1. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="contact_form">
  2.  
  3. <div>
  4. <label for="fromname"><strong>Imię i nazwisko</strong></label>
  5. <input type="text" size="50" name="fromname" class="required">
  6. </div>
  7. <div>
  8. <label for="fromemail"><strong>E-mail</strong></label>
  9. <input type="text" size="50" name="fromemail" id="fromemail" class="required">
  10. </div>
  11. <div>
  12. <label for="subject"><strong>Tytuł wiadomości</strong></label>
  13. <input type="text" size="50" name="subject" class="required">
  14. </div>
  15. <div>
  16. <label for="message"><strong>Treść</strong></label>
  17. <textarea rows="5" cols="50" name="message" class="required"></textarea>
  18. </div>
  19.  
  20. <input type="submit" name="submit" value="Wyślij">
  21.  
  22. </form>


i pod spodem tego formularza
  1. <?php
  2. if($mailer->send()) {
  3. echo '<p class="info">Dziękuję za wysłaną wiadomość!</p>';
  4. } else {
  5. echo '<p class="info">Błąd podczas wysyłania wiadomości!</p>';
  6. }
  7. ?>


Wszytko (tj. wysyłanie wiadomości i informacja o wysłaniu) działa, problem w tym, że gdziekolwiek wstawię ostatni kod php, tam reszta strony jest ucięta. Czy można ostatni kod jakoś przerobić?

Z góry dziękuję za pomoc!
Kshyhoo
Można na wiele sposobów, np. tak:
  1. if (warunek) {
  2. // przed_wysłaniem_formularza
  3. } else {
  4. // po_wysłaniu_formularza
  5. }

Twój kod generalnie wygląda tak:
  1. if(isset($_POST['submit'])){
  2.  
  3. if(empty($_POST['fromname'])){
  4. echo 'Nie wypełniłaś(eś) pola imię i nazwisko';
  5. } elseif(empty($_POST['fromemail'])){
  6. echo 'Nie podałaś(eś) swojego email\'a';
  7. } elseif(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $_POST['fromemail'])){
  8. echo 'Podano błędny email';
  9. }
  10.  
  11. }

Można by więc tak:
  1. if(isset($_POST['submit'])){
  2. if(empty($_POST['fromname'])){
  3. echo 'Nie wypełniłaś(eś) pola imię i nazwisko';
  4. } elseif(empty($_POST['fromemail'])){
  5. echo 'Nie podałaś(eś) swojego email\'a';
  6. } elseif(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $_POST['fromemail'])){
  7. echo 'Podano błędny email';
  8. }
  9.  
  10. // tu funkcje
  11.  
  12. if($mailer->send()) {
  13. echo '<p class="info">Dziękuję za wysłaną wiadomość!</p>';
  14. } else {
  15. echo '<p class="info">Błąd podczas wysyłania wiadomości!</p>';
  16. }

Teoretycznie... winksmiley.jpg
cachaito
Problem rozwiązany. Na forum Pozycjonowanie i Optymalizacja użytkownik o loginie Mion już mi pomógł biggrin.gif
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.