Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS][HTML][PHP]Wysłane maile nie trafiają do skrzynki
Forum PHP.pl > Forum > Przedszkole
oyster
Witam,

Mam problem ze skryptem PHP, który ma za zadanie wysyłać maile. Gdy wypełnię formularz i klikam ?Wyślij? to maile nie dochodzą na moją skrzynkę. Kod PHP wygląda tak:

CODE
<?php

if(isset($_POST['url']) && $_POST['url'] == '' && $_POST['message'] != ''){


$youremail = 'przykladowyemail@poczta.pl';

$body = "Formularz kontaktowy:
Imię: $_POST[firstname]
Nazwisko: $_POST[lastname]
E-Mail: $_POST[email]
Wiadomość: $_POST[message]";


if( $_POST['email'] && !preg_match( "/[\r\n]/", $_POST['email']) ) {
$headers = "From: $_POST[email]";
} else {
$headers = "From: $youremail";
}

mail($youremail, 'Kontakt', $body, $headers );

}


header('http://www.mojastrona.pl/');
exit('http://www.mojastrona.pl/');

?>


Kod HTML wygląda tak:

CODE
<label for="fname">Imię</label>

<input type="text" name="firstname" placeholder="Twoje imię">

<label for="lname">Nazwisko</label>

<input type="text" name="lastname" placeholder="Twoje nazwisko">

<label for="lname">Email</label>

<input type="text" name="email" placeholder="Twój email">

<label for="message">Wpisz swoją wiadomość</label>

<textarea id="message" name="message" placeholder="Treść wiadomości..." style="height: 200px"></textarea>

<input type="submit" value="Wyślij">

<p class="antispam">Zostaw to pole puste - ochrona przed spamem

<br /><input name="url" /></p>


Kod CSS:

CODE
.antispam { display:none;}

input[type=text], select, textarea {
width: 100%;
padding: 12px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
margin-top: 6px;
margin-bottom: 16px;
resize: vertical
}

input[type=submit] {
background-color: grey;
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}

input[type=submit]:hover {
background-color: grey;
}

.contact {
border-radius: 5px;
background-color: #f4f4f4;
padding: 20px;
}


Oryginalny skrypt pochodzi z tego linka i mimo że robię wszystko zgodnie z instrukcją to nie działa - https://www.nfriedly.com/techblog/2009/11/h...thout-captchas/

W czym tkwi problem? Będę wdzięczny za pomoc smile.gif
dublinka
Input name=url ma byc przed submit i zawierac typ pola
oyster
czy tak to ma wyglądać? bo kombinuję z różnymi wariantami i tak nie działa...

CODE
<div class="contact">

<form action="submit.php">

<label for="fname">Imię</label>

<input type="text" name="firstname" placeholder="Twoje imię">

<label for="lname">Nazwisko</label>

<input type="text" name="lastname" placeholder="Twoje nazwisko">

<label for="lname">Email</label>

<input type="text" name="email" placeholder="Twój email">

<label for="message">Wpisz swoją wiadomość</label>

<textarea id="message" name="message" placeholder="Treść wiadomości..." style="height: 200px"></textarea>

<p class="antispam">Zostaw to pole puste - ochrona przed spamem

<br /><input name="url" type="text"></p>

<input type="submit" value="Wyślij">

</form>

</div>
dublinka
Wysylasz to z locala ? Wlączyles raportowanie bledow....?
Formularz ma miec metode słania danych.
Po kolejne.
Zmienna $body ktora zawiera tablice post. Kazda z nich ma miec znaki ' i ' pomiedzy nazwami. Czyli $_POST['name'] a nie $_POST[name]
oyster
ok, tak to teraz wygląda - HTML:

CODE
<form action="submit.php" name="Kontakt" method="post">

<label for="fname">Imię</label>

<input type="text" name="firstname" placeholder="Twoje imię">

<label for="lname">Nazwisko</label>

<input type="text" name="lastname" placeholder="Twoje nazwisko">

<label for="lname">Email</label>

<input type="text" name="email" placeholder="Twój email">

<label for="message">Wpisz swoją wiadomość</label>

<textarea id="message" name="message" placeholder="Treść wiadomości..." style="height: 200px"></textarea>

<p class="antispam">Ochrona przed spamem <input type="text" name="url" /></p>

<input type="submit" value="Wyślij">

</form>


PHP:

CODE
<?php

if(isset($_POST['url']) && $_POST['url'] == '' && $_POST['message'] != ''){


$youremail = 'test@test.pl';


$body = "
Imię: $_POST['firstname']
Nazwisko: $_POST['lastname']
E-Mail: $_POST['email']
Wiadomość: $_POST['message']";


if( $_POST['email'] && !preg_match( "/[\r\n]/", $_POST['email']) ) {
$headers = "From: $_POST['email']";
} else {
$headers = "From: $youremail";
}


mail($youremail, 'Kontakt', $body, $headers );

}


header('Przenosiny na: https://test.pl');
exit('Przenosiny na https://test.pl');

?>


po wypełnieniu formularza i wysłaniu serwer wyrzuca błąd "HTTP ERROR 500 - Serwer nie może teraz obsłużyć tego żądania."

czy to wina braku kodu PHP tam gdzie jest HTML? nie ogarniam tego smile.gif
LowiczakPL
PHP ma problem z pokazywaniem zmiennej tablicy

tak się nie robi bo to nie działa

  1. $headers = "From: $_POST['email']";


przykładowe 2 sposoby jak możesz to zrobić, dotyczy to całego kodu nie tylko tej linijki:

  1. $headers = "From: {$_POST['email']}";


  1. $headers = 'From: '. $_POST['email'];
dublinka
Cytat(oyster @ 13.02.2021, 01:54:12 ) *
po wypełnieniu formularza i wysłaniu serwer wyrzuca błąd "HTTP ERROR 500 - Serwer nie może teraz obsłużyć tego żądania."

czy to wina braku kodu PHP tam gdzie jest HTML? nie ogarniam tego smile.gif

Na samej gorze dodaj linijke

error_reporting(E_ALL);

Zbyt ogolnie napisalem o tych tablicach. Tak jak to napisal juz kolega wyzej albo tablice obejmiesz "brack-etami" albo nalezy uzyc kropki jako lacznika stringów.

  1. $body = "
  2. Imię: " . $_POST['firstname'] . "
  3. Nazwisko: ". $_POST['lastname'] . "
  4. E-Mail: " . $_POST['email'] . "
  5. Wiadomość: " . $_POST['message']";
  6.  
oyster
dobra, teraz mam tak i dalej jest ten sam błąd:

CODE
<?php

error_reporting(E_ALL);

if(isset($_POST['url'] && $_POST['url'] . " == '' && $_POST['message'] != ''){


$youremail = 'techno1991@o2.pl';


$body = "
Imię: " . $_POST['firstname'] . "
Nazwisko: " . $_POST['lastname'] . "
E-Mail: " . $_POST['email'] . "
Wiadomość: " . $_POST['message']";


if( $_POST ['email'] && !preg_match( "/[\r\n]/", $_POST['email'] ) {
$headers = 'From: ' . $_POST['email'];
} else {
$headers = 'From: $youremail";
}


mail($youremail, 'Kontakt', $body, $headers );

}


header('Przenosiny na: https://pogoda247.000webhostapp.com/wiedza.htm');
exit('Przenosiny na https://test.pl');

?>


czy w tych linijkach też mam coś zmienić?

CODE
if(isset($_POST['url'] && $_POST['url'] . " == '' && $_POST['message'] != ''){


CODE
if( $_POST ['email'] && !preg_match( "/[\r\n]/", $_POST['email'] ) {
LowiczakPL
Zobacz czy ten kod zadziała:

  1. <?php
  2.  
  3. if (!empty($_POST['firstname']) && !empty($_POST['lastname']) && !empty ($_POST['message'])) {
  4.  
  5. $yourEmail = 'techno1991@o2.pl';
  6. $from = !empty($_POST['email']) ? $_POST['email'] : $yourEmail;
  7.  
  8. $body = "
  9. Imię: {$_POST['firstname']}
  10. Nazwisko: {$_POST['lastname']}
  11. E-Mail: {$_POST['email']}
  12. Wiadomość: {$_POST['message']}
  13. ";
  14.  
  15. mail($yourEmail, 'Kontakt', $body, "From: {$from}");
  16. }
  17.  
  18. exit('Przenosiny na https://test.pl');
oyster
Cytat(LowiczakPL @ 13.02.2021, 17:30:09 ) *
Zobacz czy ten kod zadziała:

  1. <?php
  2.  
  3. if (!empty($_POST['firstname']) && empty($_POST['lastname']) && !empty ($_POST['message'])) {
  4.  
  5. $yourEmail = 'techno1991@o2.pl';
  6. $from = !empty($_POST['email']) ? $_POST['email'] ? $yourEmail;
  7.  
  8. $body = "
  9. Imię: {$_POST['firstname']}
  10. Nazwisko: {$_POST['lastname']}
  11. E-Mail: {$_POST['email']}
  12. Wiadomość: {$_POST['message']}
  13. ";
  14.  
  15. mail($yourEmail, 'Kontakt', $body, "From: {$from}");
  16. }
  17.  
  18. exit('Przenosiny na https://test.pl');


nie działa niestety - dalej wyrzuca komunikat o błędzie...
LowiczakPL
linia 6

to

  1. $from = !empty($_POST['email']) ? $_POST['email'] : $yourEmail;
oyster
też tak samo jest - HTTP ERROR 500... może poszukam jednak innego skryptu smile.gif
LowiczakPL
może problem nie jest w skrypcie

podaj adres gdzie jest ten formularz?

czy formularz ma FORM i metodę typu POST?

https://www.w3schools.com/html/tryit.asp?fi...yhtml_form_text

https://www.w3schools.com/html/tryit.asp?fi...tml_form_submit

https://www.w3schools.com/tags/tryit.asp?fi...orm_method_post
dublinka
Cytat(oyster @ 13.02.2021, 16:09:47 ) *
dobra, teraz mam tak i dalej jest ten sam błąd:

  1. <?php
  2.  
  3.  
  4. if(isset($_POST['url'] && $_POST['url'] . " == '' && $_POST['message'] != ''){]

W warunkach masz nie robic tego tylko w tej jednej zmiennej $body

1.Zadalem Ci pytanie czy slesz to z locala czy z serwera w necie.

2. Zawsze mozesz sprawdzic sama funkcje mail() czy dziala. Jesli dziala znaczy ze gdzies wczesniej jest blad dlatego miales wstawic linijke o raportowaniu bledow.
Sa jakies pehapeowe warrningi questionmark.gif

3. Olej caly kod i wstaw mail() z argumentami i wywolaj plik.
Jesli to robisz na localu u soebie znaczy ze nie masz skonfigurowanego serwera. Jesli na necie znaczy ze gdzies masz blad

Wstaw sam mail() z argumentami w warunku.


  1. if(mail("adres@asdd.pl", "tytul", "tresc"))
  2. {
  3. echo "ok";
  4. }else{
  5. echo "blad";
  6. }

[/php]
oyster
Cytat(LowiczakPL @ 13.02.2021, 17:41:34 ) *


formularz jest tutaj - http://pogoda247.000webhostapp.com/formularz.htm
LowiczakPL
nie dostałem 500, ale nie mam info że email został wysłany a

funkcja mail zwraca true lub false, więc dopisz coś takiego


  1.  
  2. $isSend = mail(.....
  3.  
  4. echo $isSend ? 'E-mail został wysłany' : 'E-mail nie wysłany coś poszło nie tak';
  5.  
  6.  
dublinka
Masz blad serwera 500.

Header jest wogole w zlym miejscu. Ma byc w warunku tuz za mail() bo teraz byle co soe stanie to bedzie posylac cie na dana strone.
Sprawdz przyklad ktory Ci podalem zeby sprawdzic czy wogole mail wychodzi
oyster
dobra, poddaję się smile.gif jestem zielony jeśli chodzi o php i kompletnie tego nie ogarniam, także dzięki za pomoc, ale zlecę komuś napisanie tego i już smile.gif
dublinka
Wystarczy usunac wszystko z tego pliku i dac ten kod co podalem. Wtedy bedziesz wiedzial widzac czy pokazuje ok czy blad.
oyster
tu trzeba cały skrypt od nowa napisać - sprawdziłem tego gotowca od autora zmieniając w nim tylko email na swój i też nic smile.gif szkoda tracić na to czas, także jeszcze raz dzięki za pomoc smile.gif
dublinka
To nie chodzi o to. Dalem Ci przyklad zebys sprawdzil co zwraca warunek bo byc moze serwer jest jakis dziwny. Blad 500 moze zwrocic wlasnie jakies czary z f. Mail() dlatego tez powinienes najoierw to sprawdzic
Malinaa
Cytat(oyster @ 13.02.2021, 19:59:27 ) *
tu trzeba cały skrypt od nowa napisać - sprawdziłem tego gotowca od autora zmieniając w nim tylko email na swój i też nic smile.gif szkoda tracić na to czas, także jeszcze raz dzięki za pomoc smile.gif


Masz tu prezent:
http://dbm.org.pl/__TESTY/artimailer.zip

dawno temu był pisany, ale ten gotowiec działa na funkcji mail()
i może służyć nie tylko jako przykład.
oyster
Cytat(Malinaa @ 17.02.2021, 22:11:32 ) *
Masz tu prezent:
http://dbm.org.pl/__TESTY/artimailer.zip

dawno temu był pisany, ale ten gotowiec działa na funkcji mail()
i może służyć nie tylko jako przykład.


dziękuję, sprawdzę w wolnej chwili smile.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.