Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt do wysyłania maili - coś mi nie działa.
Forum PHP.pl > Forum > PHP
ReBeLs513
Cześć,

znalazłem skrypt, który ogólnie mi chodzi. Ale jak już podpinam swój formularz to nawet nie chce sprawdzać czy pola zostały wypełnione. Jak usunąłem sprawdzanie pól to i tak nic nie wysyła.
Sprawdzałem nazewnictwo pól, wszystko się zgadza.
Walczę z tym od wczoraj.
Może ktoś zerknąć?

  1. <form method="post" action="">
  2. <div class="row gtr-uniform">
  3. <div class="col-6 col-12-xsmall">
  4. <input type="text" name="name" id="demo-name" placeholder="Imię" />
  5. </div>
  6. <div class="col-6 col-12-xsmall">
  7. <input type="email" name="email" id="email" placeholder="Email" />
  8. </div>
  9. <div class="col-6">
  10. <select name="to" id="demo-category">
  11. <option>- Kategoria -</option>
  12. <option <?php if($_GET && $_GET['do'] == "studia"): ?>selected<?php endif; ?> value="@gmail.com">Kontakt do studia</option>
  13. <option <?php if($_GET && $_GET['dla'] == "mediow"): ?>selected<?php endif; ?> value="@gmail.com">Dla mediów/ sponsorów</option>
  14. <option <?php if($_GET && $_GET['do'] == "webmastera"): ?>selected<?php endif; ?> value="@gmail.com">Zgłoś błąd na stronie</option>
  15.  
  16. </select>
  17. </div>
  18.  
  19. <div class="col-6 col-12-xsmall">
  20. <input type="text" name="subject" id="demo-subject" value="<?php if($_GET['subject']){ echo $_GET['subject']; }?>" placeholder="Temat" />
  21. </div>
  22.  
  23. <div class="col-6 col-12-small">
  24. <input type="checkbox" id="demo-copy" name="kopia">
  25. <label for="demo-copy">Wyślij mi kopię</label>
  26. </div>
  27. <div class="col-6 col-12-small">
  28. <input type="checkbox" id="demo-human" name="human" checked>
  29. <label for="demo-human">Nie jestem robotem</label>
  30. </div>
  31. <div class="col-12">
  32. <textarea name="message" id="demo-message" placeholder="Wpisz swoją wiadomość" rows="6"><?php if($_GET['msg']){ echo strip_tags($_GET['msg']); }?></textarea>
  33. </div>
  34. <div class="col-12">
  35. <ul class="actions">
  36. <li><input type="submit" value="Wyślij wiadomość" class="primary" /></li>
  37. <li><input type="reset" value="Wyczyść formularz" /></li>
  38. </ul>
  39. </div>
  40. </div>
  41. </form>
  42.  
  43. </div>


  1. <?php
  2. if (isset($_POST['submit'])) {
  3.  
  4. // twoje dane
  5. $mojemail = '@gmail.com';
  6.  
  7. // dane z formularza
  8. $name = $_POST['name'];
  9. $email = $_POST['email'];
  10. $dzial = $_POST['dzial'];
  11. @$kopia = $_POST['kopia'];
  12. $temat = $_POST['temat'];
  13. $text = $_POST['text'];
  14.  
  15. if(!empty($name) && !empty($dzial) && !empty($temat) && !empty($email) && !empty($text)) {
  16.  
  17. // weryfikujemy wprowadzony w formularzu adres e-mail
  18. function checkMail($checkmail) {
  19. if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) {
  20. if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){
  21. return true;
  22. }else{
  23. return false;
  24. }
  25. } else {
  26. return false;
  27. }
  28. }
  29. ?>
  30.  
  31. <?php
  32. if (checkMail($email)) {
  33. //dodatkowe informacje: ip i host użytkownika
  34. $ip = $_SERVER['REMOTE_ADDR'];
  35. $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
  36.  
  37. //tworzymy szkielet wiadomości
  38. //treść wiadomości
  39. $mailText = "" . $text . "\n$ip ($host)";
  40.  
  41. //adres zwrotny
  42. $mailHeader = "From: $name <$email>";
  43.  
  44. //funkcja odpowiedzialna za wysłanie e-maila
  45. @mail($dzial, $temat, $mailText, $mailHeader) or die('Błąd: wiadomość nie została wysłana');
  46.  
  47. //komunikat o poprawnym wysłaniu wiadomości
  48. echo 'Wiadomość została wysłana';
  49. } else {
  50. echo 'Adres e-mail jest niepoprawny';
  51. }
  52.  
  53. } else {
  54. // komunikat w przypadku nie powodzenia
  55. echo 'Wypełnij pola oznaczone gwiazką.';
  56. }
  57. }
  58. ?>
  59.  
  60. <?php if(@$_POST['kopia'] == "tak"){
  61. $mailHeaderk = "From: Radio <powiadomienia@radio>";
  62. $mailTextk = "To Twoja wiadomość wysłana do radia.\r\n\n\n" . $text . "\n\n$ip ($host)";
  63. @mail($email, $temat, $mailTextk, $mailHeaderk) or die('Błąd: wiadomość nie została wysłana');
  64. echo "<br />wysłano kopię email"; }
  65. else{
  66. echo "Nie wysłano kopii na adres $email";} ?>
viking
Wyrzuć wszystkie @ włącz wyświetlanie błędów to się więcej dowiesz.
ReBeLs513
próbowałem.
Jak stworzę czyste pola input z nazwami to wszystko działa.

Wiem, że jak nie ma np. pola "kopia" zaznaczonej to sie wyświetli bład ale to jest bardziej jako informacja a nie powod niewykonania skryptu.

Włączyłem pokazywanie błędów i wyszło tylko albo i aż
Kod
Notice: Undefined variable: email in www\radio
Ale przecuez wartość po przesłaniu formularza powinna zostać odczytana.


EDIT

Zamieniłem wszystkie inputy i działa smile.gif

Gotowy KOD:
  1. <form method="post" action="">
  2. <div class="row gtr-uniform">
  3. <div class="col-6 col-12-xsmall">
  4. <input type="text" size="20" name="name" placeholder="Imię" />
  5. </div>
  6. <div class="col-6 col-12-xsmall">
  7. <input type="text" size="20" name="email" placeholder="Email" />
  8. </div>
  9. <div class="col-6">
  10. <select name="dzial" size="1">
  11. <option selected>Wybierz</option>
  12. <option value="@gmail.com">jeden</option>
  13. <option value="@gmail.com">dwa</option>
  14. <option value="@gmail.com">trzy</option>
  15. </select>
  16. </div>
  17.  
  18. <div class="col-6 col-12-xsmall">
  19. <input type="text" size="20" name="temat" placeholder="Temat" />
  20. </div>
  21.  
  22. <div class="col-6 col-12-small">
  23. <input type="checkbox" id="demo-copy" name="kopia">
  24. <label for="demo-copy">Wyślij mi kopię</label>
  25. </div>
  26. <div class="col-6 col-12-small">
  27. <input type="checkbox" id="demo-human" name="human" checked>
  28. <label for="demo-human">Nie jestem robotem</label>
  29. </div>
  30. <div class="col-12">
  31. <textarea name="text" rows="4"
  32. cols="20"></textarea>
  33. </div>
  34. <div class="col-12">
  35. <ul class="actions">
  36. <li><input type="submit" name="submit" class="primary" value="Wyślij formularz"></li>
  37. <li><input type="reset" value="Wyczyść formularz" /></li>
  38. </ul>
  39. </div>
  40. </div><?php
  41. if (isset($_POST['submit'])) {
  42.  
  43. // twoje dane
  44. $mojemail = '@gmail.com';
  45.  
  46. // dane z formularza
  47. $name = $_POST['name'];
  48. $email = $_POST['email'];
  49. $dzial = $_POST['dzial'];
  50. @$kopia = $_POST['kopia'];
  51. $temat = $_POST['temat'];
  52. $text = $_POST['text'];
  53.  
  54. if(!empty($name) && !empty($dzial) && !empty($temat) && !empty($email) && !empty($text)) {
  55.  
  56. // weryfikujemy wprowadzony w formularzu adres e-mail
  57. function checkMail($checkmail) {
  58. if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) {
  59. if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){
  60. return true;
  61. }else{
  62. return false;
  63. }
  64. } else {
  65. return false;
  66. }
  67. }
  68. ?>
  69.  
  70. <?php
  71. if (checkMail($email)) {
  72. //dodatkowe informacje: ip i host użytkownika
  73. $ip = $_SERVER['REMOTE_ADDR'];
  74. $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
  75.  
  76. //tworzymy szkielet wiadomości
  77. //treść wiadomości
  78. $mailText = "" . $text . "\n$ip ($host)";
  79.  
  80. //adres zwrotny
  81. $mailHeader = "From: $name <$email>";
  82.  
  83. //funkcja odpowiedzialna za wysłanie e-maila
  84. mail($dzial, $temat, $mailText, $mailHeader) or die('Błąd: wiadomość nie została wysłana');
  85.  
  86. //komunikat o poprawnym wysłaniu wiadomości
  87. echo 'Wiadomość została wysłana';
  88. } else {
  89. echo 'Adres e-mail jest niepoprawny';
  90. }
  91.  
  92. } else {
  93. // komunikat w przypadku nie powodzenia
  94. echo 'Wypełnij pola oznaczone gwiazką.';
  95. }
  96. }
  97. ?>
  98.  
  99. <?php if(@$_POST['kopia'] == "tak"){
  100. $mailHeaderk = "From: Radio <powiadomienia@radio>";
  101. $mailTextk = "To Twoja wiadomość wysłana do radia420.\r\n\n\n" . $text . "\n\n$ip ($host)";
  102. mail($email, $temat, $mailTextk, $mailHeaderk) or die('Błąd: wiadomość nie została wysłana');
  103. echo "<br />wysłano kopię email"; }
  104. else{
  105. echo "";} ?>
  106. </form>
miccom
Pamiętaj, ze funkcja Mail zazwyczaj wpada do skrzynki SPAM sad.gif bo nadawcę możesz wpisać jakiegokolwiek i niekoniecznie prawdziwego, to było nadużywane przez co SpamAssasiny wrzucają maile bez autoryzacji do SPAM'u

Najlepiej wysyłaj emaila przez SMTP - ja do tego używam PHP Mailer, prosta implementacja a maile śmigają jak miło.
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.