Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz kontaktowy
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
sasadam
mam problem z formularzem kontaktowym... gotowy formularz wygląda tak jak na zdjęciu screen.jpg



kod w pliku index.html dotyczący tego fragmentu wygląda następująco:

  1.  
  2. <div class="container">
  3. <div class="sixteen columns contact-form">
  4. <h2>Get in touch with us</h2>
  5. <form method="post" action="mailer.php" id="cform">
  6. <input type="text" name="name" class="textfield" placeholder="Your name" required />
  7. <input type="email" name="email" class="textfield" placeholder="Your email address" required />
  8. <textarea name="message" class="textarea" placeholder="Your message" required></textarea>
  9. <input type="submit" value="Send Message" class="button color" />
  10. </form>
  11. <div id="success"></div>
  12. </div>
  13.  
  14. </div>
  15.  



Poblem w tym że nie posiadam pliku mailer.php i moja prośba to taka czy ktoś niemógłby mi pokazać jak to zrobić? chodzi mi o takie cos aby po wcisnieciu przycisku "send" pojawił się komunikat w małym okienku jakims np alercie ze wiadomosc została wysłana. Niestety nie mam pojecia jak tego dokonac. Bradzo prosze o pomoc w napisaniu takiego pliku mailer.php

z góry dziekuje za każdą pomoc, Adam
NetBeans
Taki plik to banał, widzę, że nie chciało Ci się poszukać. W każdym razie.

Na początku pliku sprawdzasz, czy wymagane pola istnieją instrukcją IF
  1. if (isset($_POST['name'])) {}

Analogicznie dla reszty pól.

Później wysyłasz maila, funkcja mail() http://php.net/manual/en/function.mail.php

Komunikat, to prosty javascript, też banał. http://www.w3schools.com/jsref/met_win_alert.asp

I to tyle w zasadzie. Gotowe przykłady znajdziesz w sieci.

Powodzenia, w razie czego pytaj.
ber32
Proszę
  1. $( "#wyslane" ).click(function() {
  2. alert( "Wysłane" );
  3. });
  4. <div class="container">
  5. <div class="sixteen columns contact-form">
  6. <h2>Get in touch with us</h2>
  7. <form method="post" action="mailer.php" id="cform">
  8. <input type="text" name="name" class="textfield" placeholder="Your name" required />
  9. <input type="email" name="email" class="textfield" placeholder="Your email address" required />
  10. <textarea name="message" class="textarea" placeholder="Your message" required></textarea>
  11. <input type="submit" value="Send Message" id="wyslane" class="button color" />
  12. </form>
  13. <div id="success"></div>
  14. </div>
  15. </div>
sasadam
dziękuje bardzo za odpowiedz, a w którym miejscu mam wprowadzić mój adres email tzn adres email na ktory ma byc wysyłana widomosc z formularza.
oraz moja olbrzymia prośba czy mógłbyś to napisać tak abym mogl to wkleic do jakiegos edytora i zapisac jako plik php tzn aby przypominał coś takiego.

  1. <?php
  2. if (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  3. $message = "Tresc wiadomosci:\n$_POST[tresc]\nWyslal: $_POST[imie]\ne-mail: $_POST[email]";
  4. $header = "From: $_POST[imie] <$_POST[email]>";
  5. @mail("TUTAJ+TWOJ@ADRES+EMIAL.PL","Wiadomosc ze strony WWW","$message","$header")
  6. or die('Nie udalo sie wyslac wiadomosci');
  7. echo "<div align=\"center\"><strong>Wiadomosc zostala wyslana poprawnie!</strong></div>";
  8. }
  9. else echo "<span style=\"color: #FF0000; text-align: center;\">Wypelnij wszystkie pola formularza!</span>";
  10. ?>


wiem że to może głupio brzmi dla was ale nie umie tego inaczej opisac.
sasadam
wow... a dacie rade umieścić ten cały kod w jednym pliku php aby współgrało to z tym kodem co mam w pliku index.html ktory umiescilem w powyzszym poscie, bo nie mam pojecia jak to ugrysc, potrzebuje pliku mailer.php w ktorym bede mogl wpisac swoj adre s emeial na kry wysylane beda wiadomosci ze strony bo moja wiedza nie pozwala na wieksze edycje. niestety nic z php nie rozumie i dlatego napisalem na pomoc aby uzyskac mozliwa pomoc.
Turson
  1. <?php
  2. function form(){
  3. echo '
  4. <div class="container">
  5. <div class="sixteen columns contact-form">
  6. <h2>Get in touch with us</h2>
  7. <form method="post" action="mailer.php" id="cform">
  8. <input type="text" name="name" class="textfield" placeholder="Your name" required />
  9. <input type="email" name="email" class="textfield" placeholder="Your email address" required />
  10. <textarea name="content" class="textarea" placeholder="Your message" required></textarea>
  11. <input type="submit" value="Send Message" class="button color" />
  12. </form>
  13. <div id="success"></div>
  14. </div>
  15.  
  16. </div>';
  17. }
  18.  
  19.  
  20. $obiekt = new Mail();
  21. if(isset($_POST["sent"])){
  22. $name=$_POST["name"];
  23. $email=$_POST["email"];
  24. $content=$_POST["content"];
  25.  
  26. if($obiekt->checkData($name,$email,$content)){
  27. if($obiekt->ifMail($email)){
  28. if($obiekt->sendMail($name,$email,$content)){
  29. echo "Wiadomośc została wysłana!";
  30. }
  31. else{
  32. echo "Wystąpił nieoczekiwany błąd. Spróbuj ponownie.";
  33. form();
  34. }
  35. }
  36. else{
  37. echo "Adres e-mail jest niepoprawny.";
  38. form();
  39. }
  40. }
  41. else{
  42. echo "Uzupełnij wszystkie pola formularza.";
  43. form();
  44. }
  45. }
  46. else{
  47. form();
  48. }
  49.  
  50.  
  51. class Mail{
  52.  
  53. private $adminMail = 'adres e-mail'; //adres e-mail administratora gdzie mają przychodzić wiadomości
  54.  
  55. function checkData($name,$email,$content){
  56. $name=trim($name);
  57. $email=trim($email);
  58. $content=trim($content);
  59. if(!empty($name) && !empty($email) && !empty($content)){
  60. return true;
  61. }
  62. }
  63. function ifMail($email){
  64. if(preg_match('/^[a-zA-Z0-9\.\-_]+\@[a-zA-Z0-9\.\-_]+\.[a-z]{2,4}$/D', $email)){
  65. return true;
  66. }
  67. }
  68. function sendMail($name,$email,$content){
  69. $naglowek ="Content-type: text/html; charset=utf-8";
  70. $temat= "=?UTF-8?B?".base64_encode("Tytuł wiadomości")."?=";
  71. $tresc = 'Wiadomość od: '.$email.' <br>'.$content.'';
  72. $mail = mail($this->adminMail,$temat,$tresc,$naglowek);
  73. if($mail){
  74. return true;
  75. }
  76. }
  77. }
  78. ?>
sasadam
dziękuje za odpowiedź mam nadzieje ze to już ostatni raz poruszam ten temat... dla pewności wkleje kod z index.html wyglada on tak:

  1. <div class="container">
  2. <div class="sixteen columns contact-form">
  3. <h2>Get in touch with us</h2>
  4. <form method="post" action="mailer.php" id="cform">
  5. <input type="text" name="name" class="textfield" placeholder="Your name" required />
  6. <input type="email" name="email" class="textfield" placeholder="Your email address" required />
  7. <textarea name="message" class="textarea" placeholder="Your message" required></textarea>
  8. <input type="submit" value="Send Message" class="button color" />
  9. </form>
  10. <div id="success"></div>
  11. </div>
  12.  
  13. </div>





dodatkowo umieszczam plik o nazwie mailer.php w tym samym folderze na ftp co strona który wewnątrz wyglada tak:

  1. <?php
  2. function form(){
  3. echo '
  4. <div class="container">
  5. <div class="sixteen columns contact-form">
  6. <h2>Get in touch with us</h2>
  7. <form method="post" action="mailer.php" id="cform">
  8. <input type="text" name="name" class="textfield" placeholder="Your name" required />
  9. <input type="email" name="email" class="textfield" placeholder="Your email address" required />
  10. <textarea name="content" class="textarea" placeholder="Your message" required></textarea>
  11. <input type="submit" value="Send Message" class="button color" />
  12. </form>
  13. <div id="success"></div>
  14. </div>
  15.  
  16. </div>';
  17. }
  18.  
  19.  
  20. $obiekt = new Mail();
  21. if(isset($_POST["sent"])){
  22. $name=$_POST["name"];
  23. $email=$_POST["email"];
  24. $content=$_POST["content"];
  25.  
  26. if($obiekt->checkData($name,$email,$content)){
  27. if($obiekt->ifMail($email)){
  28. if($obiekt->sendMail($name,$email,$content)){
  29. echo "Wiadomośc została wysłana!";
  30. }
  31. else{
  32. echo "Wystąpił nieoczekiwany błąd. Spróbuj ponownie.";
  33. form();
  34. }
  35. }
  36. else{
  37. echo "Adres e-mail jest niepoprawny.";
  38. form();
  39. }
  40. }
  41. else{
  42. echo "Uzupełnij wszystkie pola formularza.";
  43. form();
  44. }
  45. }
  46. else{
  47. form();
  48. }
  49.  
  50.  
  51. class Mail{
  52.  
  53. private $adminMail = 'adres e-mail'; //adres e-mail administratora gdzie mają przychodzić wiadomości
  54.  
  55. function checkData($name,$email,$content){
  56. $name=trim($name);
  57. $email=trim($email);
  58. $content=trim($content);
  59. if(!empty($name) && !empty($email) && !empty($content)){
  60. return true;
  61. }
  62. }
  63. function ifMail($email){
  64. if(preg_match('/^[a-zA-Z0-9\.\-_]+\@[a-zA-Z0-9\.\-_]+\.[a-z]{2,4}$/D', $email)){
  65. return true;
  66. }
  67. }
  68. function sendMail($name,$email,$content){
  69. $naglowek ="Content-type: text/html; charset=utf-8";
  70. $temat= "=?UTF-8?B?".base64_encode("Tytuł wiadomości")."?=";
  71. $tresc = 'Wiadomość od: '.$email.' <br>'.$content.'';
  72. $mail = mail($this->adminMail,$temat,$tresc,$naglowek);
  73. if($mail){
  74. return true;
  75. }
  76. }
  77. }
  78. ?>



jednak po wpisaniu adresu email administratora na ktory maja byc wysylanne wiadomosci po uzupełnieniu formularza kontaktowego i wsisnieciu przycisku send nic sie nie dzieje nie pojawia sie zaden komunikat, a email nie zostaje wyslany na poczte... w czy tkwi problem?


dla sprawdzenia jak to wyglada: www.asgrap.y0.pl/test/index.htlm formularz kontaktowy jest na samym dole strony
Turson
<input type="submit" value="Send Message" class="button color" />
dodaj tu
name="sent"
sasadam
dodałem zarówno z treścią "sent" jak i "send" jednak nadal bez zadnej zmiany...

całość strony dostępna na asgrap.y0.pl/test/index.htnl
a plik mailer na asgrap.y0.pl/test/mailer.php

jednak jak wchodze bezpośrednio na asgrap.y0.pl/test.mailer.php i uzupełniam dane z formularza i wysłam to dochodzi bez problemu... dlaczego wiec ze strony nie mgę tego dokonac?
Turson
Dostałeś gotowca, to wklej go i zmień rozszerzenie pliku na .php
Dodatkowo masz action="mail.php", czyli przekieruje do innego co jest nieintuicyjne
sasadam
coś jednak nie działa... kiedy wchodzę na strone www.asgrap.y0.pl/test/index.html to formuarz nie działa (prośba o sprawdzenie czy dobrze wkleiłem kod w odpowienie miejsce)
a gdzy wchodze bezpośrenio do pliku php tj na www.asgrap.y0.pl/test/mailer.php to po uzupełnieniu danych w formularzu wysyła bezbłędnie wiadomość na pocztę.

w czym leży problem...? prosze was o ewentualna odpowiedz w jak najprostrzy sposob. z óry dziękuje za uzyskana pomoc.
ber32
Podaj w tym miejscu pełny adres
  1. action="mailer.php"
np.
  1. action="http://www.asgrap.y0.pl/test/mailer.php"
sasadam
zrobiłem juz tak wcześniej... teraz też to zrobiłem dla dowodu zostawiam tak jak napisałeś można zobaczyć bo kod zarono htm jak i php jest udostępniony na www.asgrap.y0.pl/test/index.html oraz www.asgrap.y0.pl/test/mailer.php zmiana w kodzie html na action="http://www.asgrap.y0.pl/test/mailer.php" nie pomogła może jakieś inne pomysły? bo sam już nie wiem co może być nie tak...
Turson
Przy próbie wysłania formularza:

Cytat
<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx</center>
</body>
</html>

"NetworkError: 405 Not Allowed - http://www.asgrap.y0.pl/test/mailer.html"
mlawnik
Zapisz z rozszerzeniem php

Zapisz z rozszerzeniem php
sasadam
dziękuje za odpowiedź plik mailer ma rozszerzenie php na dowód przesyłam screen z total commander:



cały kod mozna zobaczyc w zrodle strony na asgrap.y0.pl/test/index.html
a kod formularza na asgrap.y0.pl/test/mailer.php

sam nie mam ojecia co jest nie tak ;/ bo bezposrednio asgrap.y0.pl/test/mailer.php dziala i wsyła wiadomosci na wskazany adres emial...
Turson
po próbie wysłania formularza

Cytat
Przepraszamy, strona nie została znaleziona.

Page not found


przycisk kieruje na mailer.html
sasadam
a gdzie zmienic w pliku index.html aby kierował na mailer.php?

bo wydaje mi się ze z pliku index.html to ten fragment jest za to odpowiedzialny...

  1. <!-- Basic Contact Form -->
  2. <div class="sixteen columns contact-form">
  3. <h2>Get in touch with us</h2>
  4. <form method="post" action="http://www.asgrap.y0.pl/test/mailer.php" id="cform">
  5. <input type="text" name="name" class="textfield" placeholder="Your name" required />
  6. <input type="email" name="email" class="textfield" placeholder="Your email address" required />
  7. <textarea name="message" class="textarea" placeholder="Your message" required></textarea>
  8. <input type="submit" value="Send Message" name="sent" class="button color" />
  9. </form>
  10. <div id="success"></div>
  11. </div>


a tutaj jest odwolanie do mailer.php
Turson
Formularz jest ok (tylko zmień message na content), więc dziwne, że akcja kierowana jest na .html a nie .php


Kod
/*----------------------------------------------------------*/
/* # CONTACT FORM */
/*----------------------------------------------------------*/
$(function() {
  $("#cform").on("submit",function(e){
    
    if($("#cform")[0].checkValidity()) {
      $.post("mailer.html", $("#cform").serialize(),  function(response) {
        $('#success').fadeIn(500).html(response);
        $("#cform").fadeOut(300);
        e.preventDefault();
      });
    } else console.log("invalid form");
    e.preventDefault(); // stop actual submission
  });
});

js/custom.js - wysyła formularz ajaxem pod inny adres smile.gif
sasadam
ok jest już duży postęp smile.gif mianowicie w pliku custom.js ktory wygladał tak:

  1. /*----------------------------------------------------------*/
  2. /* # CONTACT FORM */
  3. /*----------------------------------------------------------*/
  4. $(function() {
  5. $("#cform").on("submit",function(e){
  6.  
  7. if($("#cform")[0].checkValidity()) {
  8. $.post("mailer.html", $("#cform").serialize(), function(response) {
  9. $('#success').fadeIn(500).html(response);
  10. $("#cform").fadeOut(300);
  11. e.preventDefault();
  12. });
  13. } else console.log("invalid form");
  14. e.preventDefault(); // stop actual submission
  15. });
  16. });



zmieniłem linijke >>>>>$.post("mailer.php", $("#cform").serialize(), function(response) {<<<<< i teraz wyglada tak:

  1. /*----------------------------------------------------------*/
  2. /* # CONTACT FORM */
  3. /*----------------------------------------------------------*/
  4. $(function() {
  5. $("#cform").on("submit",function(e){
  6.  
  7. if($("#cform")[0].checkValidity()) {
  8. $.post("mailer.php", $("#cform").serialize(), function(response) {
  9. $('#success').fadeIn(500).html(response);
  10. $("#cform").fadeOut(300);
  11. e.preventDefault();
  12. });
  13. } else console.log("invalid form");
  14. e.preventDefault(); // stop actual submission
  15. });
  16. });



i sprawa wyglada tak ze jak wchodze na strone asgrap.y0.pl/test/index.htm uzupełniam formularz danymi i wciskam przycisk send message to przeładowywuje strone, i pojawia sie ten sam formularz bez danych ktore wpisalem, ale gdy tylko uzupełnie 2gi raz ten formularz to juz wysyła smile.gif jak moge ominac to przekierowywyanie zeby nie pisac 2gi raz wszystkiego? tak aby po wpisaniu poraz pierwszy i wcisnieciu przycisku send message wysłao od razu na moj adres?

mam nadzieje ze napisałem to w miare do zrozumienia smile.gif

up
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-2024 Invision Power Services, Inc.