Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt do wysyłania maili - coś mi nie działa.
ReBeLs513
post
Post #1





Grupa: Zarejestrowani
Postów: 233
Pomógł: 0
Dołączył: 14.03.2010
Skąd: Dessau

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


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";} ?>


Ten post edytował ReBeLs513 11.03.2021, 20:14:19


--------------------
Przypomnij o "+", jeśli mi pomogłeś a nie zapunktowałem :P
Go to the top of the page
+Quote Post
viking
post
Post #2





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

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


Wyrzuć wszystkie @ włącz wyświetlanie błędów to się więcej dowiesz.


--------------------
Go to the top of the page
+Quote Post
ReBeLs513
post
Post #3





Grupa: Zarejestrowani
Postów: 233
Pomógł: 0
Dołączył: 14.03.2010
Skąd: Dessau

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


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>


Ten post edytował ReBeLs513 11.03.2021, 21:49:39


--------------------
Przypomnij o "+", jeśli mi pomogłeś a nie zapunktowałem :P
Go to the top of the page
+Quote Post
miccom
post
Post #4





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


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.


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
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 Aktualny czas: 20.08.2025 - 07:30