formularz kontaktowy PHP po wczytaniu na serwer email zostaje odrazu wysłany

0

Witam.
Czy może mi ktoś pomóć dlaczego po wrzuceniu kodu na serwer mail z formularza zostaje Od razu wysłany. Nie czeka na input "submit"

"<!DOCTYPE html>

<html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <?php

$do = '[email protected]'; //tutaj wpisujesz swój adres e-mail
$email = $_POST['email']; //pobieranie danych o e-mailu nadawcy
$wiadomosc = $_POST['wiadomosc']; //pobieranie wiadomości
$temat = $_POST['temat']; //pobieranie tematu
$wyslij = $_POST['rrr'];
//w $header tworzymy nagłówek e-mail (dane o kodowaniu, gdzie ma być e-mail wysłany itp.
$header = "From: $email \nContent-Type:".
' text/plain;charset="UTF-8"'.
"\nContent-Transfer-Encoding: 8bit";
(mail($temat, $wiadomosc, $header))
?>

    Możesz się ze mną skontaktować za pomocą poniższego formularza



<form action="php" method="post"> Twój e-mail: <input type="text" name="email" />
Temat: <input type="text" name="temat" />
Wiadomość:
<textarea name="wiadomosc" cols="40" rows="8"></textarea>
<input name="rrr" type="submit" value="Wyślij"> </form> </body> </html>"
2

Jezu, weź to sformatuj...

A czemu miałby czekać na przycisk submit? Nie widzę żadnego warunku, który miałby to sprawdzać. Jeśli kod wysyłający maila jest na tej samej stronie co formularz, to nic dziwnego, że wysyła bez czekania.

1

Bo ten kod PHP po wczytaniu strony od razu wysyła maila, trzeba wcześniej sprawdzić w tym kodzie czy są dane z POST z formularza.

Najlepiej zrobić tak, że:

  1. jedna strona (pierwszy plik PHP/HTML) zawiera formularz który po submit kieruje do 2
  2. druga strona (drugi plik już na pewno PHP + ew. HTML) która jest wczytywana przez sumbit a która wysyła maila i ew. pokazuje jakiś komunikat (który może być zależny od tego czy PHP wysłało maila)
0

Teraz mam dwa pliki jeden html drugi php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <body>
 
        Możesz się ze mną skontaktować za pomocą poniższego formularza
        <br><br>
         
        <form action="wyslij.php" method="post">
        Twój e-mail: <input type="text" name="email"><br>
        Temat: <input type="text" name="temat"><br>
        Wiadomość:<br>
        <textarea name="wiadomosc" cols="40" rows="8"></textarea>
        <br>
        <input type="submit" value="Wyślij">
         
        </form>
</body>
</html>

<?php $do = '[email protected]'; //tutaj wpisujesz swój adres e-mail $email = $_POST['email']; //pobieranie danych o e-mailu nadawcy $wiadomosc = $_POST['wiadomosc']; //pobieranie wiadomości $temat = $_POST['temat']; //pobieranie tematu //w $header tworzymy nagłówek e-mail (dane o kodowaniu, gdzie ma być e-mail wysłany itp. $header = "From: $email \nContent-Type:". ' text/plain;charset="UTF-8"'. "\nContent-Transfer-Encoding: 8bit"; if (mail($do, $temat, $wiadomosc, $header)) { echo ('E-mail został wyslany!'); //jeżeli e-mail się wyśle, pokazywanie tego komunikatu } else { echo ('Blad podczas wysylania e-maila!'); } ?>

cały czas wyswietla Bład podczas wysyłania e-maila czyli ostatnie echo
Nic nie miałem wczesniej z php do czynienia chcę tylko na stronę dodać formularz kontaktowy

1

@grom86: po pierwsze - formatuj kod tutaj. Użyj 3 znaczków nad Tabem do wpisania kodu. Popraw to teraz w obu postach.

Po drugie - żeby wysłać maila musisz mieć skonfigurowanego postfiksa pod spodem.

0

A coś więcej o tym postfixie?

4

Poczytaj tutaj ze Stacka: https://stackoverflow.com/questions/18379238/send-email-with-php-from-html-form-on-submit-with-the-same-script
Masz opisane co i jak czyli po pierwsze sprawdzaj czy jest wciśnięty przycisk:

if(isset($_POST['submit'])){
    // Tu idzie kod od wysyłania
}

Po drugie na koniec dobrze jest przekierowywać na inną podstronę z informacją czy mail wysłał się poprawnie czy nie. Robisz to po to by ktoś odświeżając stronę niechcący nie wysłał kilkuset maili.
Postfix to serwer poczty. Pytanie po co ma być to konfigurowane skoro piszesz, że maile się wysyłały?
Na Twoim miejscu i tak użyłbym jakiego PHPMailer lub innej paczki tego typu. Pewnie jak na forum wpiszesz PHPMailer w wyszukiwarkę to będziesz miał mnóstwo przykładów jak tego użyć.

0

Dziękuję bardzo za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1