Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP] Nie działa contact-form
TomaszEkk
post 1.12.2016, 07:12:16
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 1.12.2016

Ostrzeżenie: (0%)
-----


Dzień dobry,

Tworzę prostą stronę wizytówkę na własne potrzeby, pobrałem prosty szablon html i sobie go przerabiam. Utknąłem na formularzu kontaktowym. Otóż dostaję maila na zdefiniowany adres ale po 1. jest on pusty, po 2. wpada do spamu(pewnie przez dziwną zawartosc), 3. nie ma nadawcy. Jeśli byłby ktoś tak dobry i poprawił mnie w tym co robię:

  1. <h4>Kontakt</h4>
  2. <div class="status alert alert-success" style="display: none"></div>
  3.  
  4. <form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php">
  5. <div class="row-fluid">
  6. <div class="span5">
  7. <label>Imię</label>
  8. <input type="text" class="input-block-level" required="required" placeholder="Twoje imię">
  9. <label>Nazwisko</label>
  10. <input type="text" class="input-block-level" required="required" placeholder="Twoje nazwisko">
  11. <label>Adres e-mail</label>
  12. <input type="text" class="input-block-level" required="required" placeholder="Twój adres e-mail">
  13. </div>
  14. <div class="span7">
  15. <label>Treść wiadomości:</label>
  16. <textarea name="message" id="message" required="required" class="input-block-level" rows="8"></textarea>
  17. </div>
  18.  
  19. </div>
  20. <button type="submit" class="btn btn-primary btn-large pull-right">Wyślij wiadomość</button>
  21. <p> </p>
  22.  
  23. </form>
  24. </div>


Zawartość pliki sendemail.php:
  1. <?php
  2. header('Content-type: application/json');
  3. $status = array(
  4. 'type'=>'success',
  5. 'message'=>'Wiadomość wysłana!'
  6. );
  7.  
  8. $name = @trim(stripslashes($_POST['name']));
  9. $email = @trim(stripslashes($_POST['email']));
  10. $subject = @trim(stripslashes($_POST['subject']));
  11. $message = @trim(stripslashes($_POST['message']));
  12.  
  13. $email_from = $email;
  14. $email_to = 'info@mojadomena.pl';
  15.  
  16. $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
  17.  
  18. $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
  19.  
  20. echo json_encode($status);
  21. die;


Chciałbym dostać po prostu maila z zawartością i to wszystko. Mail info@mojadomena.pl oczywiście istnieje na serwerze.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
viking
post 1.12.2016, 07:48:16
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Nie masz nigdzie w inputach atrybutu name (oprócz textarea) zatem jak się chcesz do nich odwołać? Mają być nazwy takie same jak w POST. Status powinien być określony na podstawie $success bo może zwrócić false jeśli nie wysłano maila.


--------------------
Go to the top of the page
+Quote Post
TomaszEkk
post 1.12.2016, 08:25:42
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 1.12.2016

Ostrzeżenie: (0%)
-----


Poprawiłem w ten sposób jednak dalej pusty mail:

  1. <form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php">
  2. <div class="row-fluid">
  3. <div class="span5">
  4. <label>Imię</label>
  5. <input type="text" name="name" id="name" class="input-block-level" required="required" placeholder="Twoje imię">
  6. <label>Temat</label>
  7. <input type="text" name="subject" id="subject" class="input-block-level" required="required" placeholder="Temat wiadomości">
  8. <label>Adres e-mail</label>
  9. <input type="text" name="email" id="email" class="input-block-level" required="required" placeholder="Twój adres e-mail">
  10. </div>
  11. <div class="span7">
  12. <label>Treść wiadomości:</label>
  13. <textarea name="message" id="message" required="required" class="input-block-level" rows="8"></textarea>
  14. </div>
  15.  
  16. </div>
  17. <button type="submit" class="btn btn-primary btn-large pull-right">Wyślij wiadomość</button>
  18. <p> </p>
  19.  
  20. </form>


Mam jeszcze katalog js a w nim parę plików ale nie widzę tu nigdzie odwołań do nich eh.
Go to the top of the page
+Quote Post
viking
post 1.12.2016, 09:19:40
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Na pewno jeśli poprawiłeś $body powinno zawierać treść. Pewnie gdzieś indziej jest problem.


--------------------
Go to the top of the page
+Quote Post
TomaszEkk
post 1.12.2016, 09:43:23
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 1.12.2016

Ostrzeżenie: (0%)
-----


Cytat(viking @ 1.12.2016, 09:19:40 ) *
Na pewno jeśli poprawiłeś $body powinno zawierać treść. Pewnie gdzieś indziej jest problem.


Właśnie tego $body nie poprawiłem.. wygląda to tak:
  1. <?php
  2. header('Content-type: application/json');
  3. $status = array(
  4. 'type'=>'success',
  5. 'message'=>'Wiadomość wysłana!'
  6. );
  7.  
  8. $name = @trim(stripslashes($_POST['name']));
  9. $subject = @trim(stripslashes($_POST['subject']));
  10. $email = @trim(stripslashes($_POST['email']));
  11. $message = @trim(stripslashes($_POST['message']));
  12.  
  13. $email_from = $email;
  14. $email_to = 'xys.sikora@gmail.com';
  15.  
  16. $body = 'Imię: ' . $name . "\n\n" . 'E-mail: ' . $email . "\n\n" . 'Temat: ' . $subject . "\n\n" . 'Treść wiadomości: ' . $message;
  17.  
  18. $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
  19.  
  20. echo json_encode($status);
  21. die;


W tym pliku poza zmianami wyswietlanych informacji nic nie zmieniałem.. Już jestem coraz bliżej snitch.gif
Go to the top of the page
+Quote Post
emstawicki
post 1.12.2016, 10:00:44
Post #6





Grupa: Zarejestrowani
Postów: 207
Pomógł: 40
Dołączył: 2.06.2016
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Próbowałeś prześledzić skrypt dumpując na poczatku wszystkie zmienne z tablicy POST, a następnie po przypisaniu?
Co to znaczy dziwną zawartość? - może po prostu dodaj nagłówek definiujący content-type.


--------------------
Jak w Olsztynie, to tylko w Revolver Rock Cafe .
Sprawdź postęp propagacji DNS
Go to the top of the page
+Quote Post
TomaszEkk
post 1.12.2016, 11:27:56
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 1.12.2016

Ostrzeżenie: (0%)
-----


Problem chyba leży w ajaxie. Znalazłem jakaś modyfikację:
  1. //Ajax contact
  2. $('.contact-form').submit(function () {'use strict',
  3. $this = $(this);
  4. $.post("sendemail.php", $(".contact-form").serialize(),function(result){
  5. if(result.type == 'success'){
  6. $this.prev().text(result.message).fadeIn().delay(3000).fadeOut();
  7. }
  8. });
  9. return false;
  10. });


i to wysyła mi dalej bez nadawcy, wszystkie pola puste poza wiadomością. Treść wiadomości jest już widoczna. Raczej zdecyduję się na odpłatną pomoc.
Go to the top of the page
+Quote Post
Niree
post 1.12.2016, 11:48:11
Post #8





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

Ostrzeżenie: (0%)
-----


Usuń ten kod JS, przecież formularz możesz wysłać zwykłym <form>.
Go to the top of the page
+Quote Post
emstawicki
post 1.12.2016, 13:31:01
Post #9





Grupa: Zarejestrowani
Postów: 207
Pomógł: 40
Dołączył: 2.06.2016
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


  1. $headers = 'MIME-Version: 1.0' . "\r\n";
  2. $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  3. $headers .= 'From: Automat <xys.sikora@gmail.com>' . "\r\n";
  4. $success = @mail($email_to, $subject, $body, $headers );


Edytuj to w ten sposób i sprawdź.
Mam nadzieję, że jesteś świadomy że wysyłasz tak naprawdę z konta serwera http ze swojego hostingu a nie z gmaila - to tak odnośnie traktowania wiadomości jako spam - podszywasz się pod konto na nieswojej domenie smile.gif


--------------------
Jak w Olsztynie, to tylko w Revolver Rock Cafe .
Sprawdź postęp propagacji DNS
Go to the top of the page
+Quote Post
TomaszEkk
post 2.12.2016, 10:48:48
Post #10





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 1.12.2016

Ostrzeżenie: (0%)
-----


Cytat(emstawicki @ 1.12.2016, 13:31:01 ) *
  1. $headers = 'MIME-Version: 1.0' . "\r\n";
  2. $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  3. $headers .= 'From: Automat <@gmail.com>' . "\r\n";
  4. $success = @mail($email_to, $subject, $body, $headers );


Edytuj to w ten sposób i sprawdź.
Mam nadzieję, że jesteś świadomy że wysyłasz tak naprawdę z konta serwera http ze swojego hostingu a nie z gmaila - to tak odnośnie traktowania wiadomości jako spam - podszywasz się pod konto na nieswojej domenie smile.gif


Niestety nic to nie dało, brakuje mi wiedzy i czasu żeby nad tym siedzieć. Jeśli ostatecznie zdecyduję się na ten szablon html to wtedy przeróbka odpłatnie..

Ten post edytował TomaszEkk 2.12.2016, 10:49:16
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 23:26