Formularz kontaktowy (wyślij kopię do mnie)

Witam

Mam na stronie formularz kontaktowy który składa się tylko z 3 pól: “imię”, “e-mail” i “Treść”.

Wszystko działa dobrze, ale chciałem dodać do niego opcję, “Wyślij kopię do mnie” (na adres e-mail wpisany w formularzu, tak jak jest to zrobione np. na TEJ STRONIE ).

 

Co mam dodać do tego formularza?

 

 

Mój formularz

<?php
// sprawdzamy, czy zmienna $submit jest pusta
if (empty($_POST['submit'])) {
    // wyświetlamy formularz
    echo "<table border=\"0\"><form method=\"post\">
<tr>
<td>Imię i nazwisko:*</td>
<td><input type=\"text\" name=\"imie\" style=\"width: 450px\"></td>
</tr>
<tr>
<td>Twój e-mail:*</td>
<td><input type=\"text\" name=\"email\" style=\"width: 450px\"></td>
</tr>
<tr>
<td>Treść wiadomości:*</td>
<td><textarea name=\"tresc\" style=\"width: 450px; height: 180px\"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type=\"submit\" name=\"submit\" value=\"Wyślij\">&nbsp;
<input type=\"reset\" value=\"Wyczyść\"></td></form>
</tr>
<tr>
<td>*Pola wymagane</td>
</tr>
</table>";
}
// sprawdzamy, czy zmienne przesłane z formularza nie są puste
elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
    // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
    // zmienna $message zawiera treść wiadomości
    $message = "$_POST[tresc]\n\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
    // zmienna $header zawiera przede wszystkim adres zwrotny
    $header = "From: $_POST[imie] <$_POST[email]>".PHP_EOL.'MIME-Version: 1.0'.PHP_EOL.'Content-type: text/plain; charset=UTF-8';
    // funkcja mail() za pomocą której wiadomość zostanie wysłana
    @mail("MÓJ-MAIL@MAIL.COM","TEMAT E-MAILA","$message","$header")
    or die('Nie udało się wysłać wiadomości');
    // wyświetlenie komunikatu w przypadku powodzenia
    echo "<div align=\"center\"><strong><font color=gren size=4><b>Dziękujemy - Wiadomość została wysłana!</font><p></strong></div>";
}
// lub w przypadku nie wypełnienia formularza do końca
else echo "<font color=red size=4><b>Nie zostały wypełnione wszystkie wymagane pola!</b></font><p> <a href=\"formularz.php\">Powrót do formularza</a></p>";
?>

Skoro masz dobrze skonfigurowaną funkcję mail wystarczy ją skopiować zmieniając adres email

To ja wiem, do mnie na wskazany adres e-mail przychodzi, ale mi chodzi o to, żeby kopia była wysyłana także do nadawcy na e-mail który będzie wpisany w formularzu.

Skoro wiesz to zrób tak i będzie działać + ew if z checkboxem by user mógł wybrać czy chce ten mail dostać. A że nie znasz podstaw poczytaj http://webmade.org/kursy-online/kurs-php.php W tym co chcesz uzyskać nie ma żadnej głębszej wiedzy niż to co już masz.

Połowicznie udało mi się rozwiązać problem.

Zdublowałem 2 linie.

@mail("MÓJ-MAIL@MAIL.COM","TEMAT E-MAILA","$message","$header")
    or die('Nie udało się wysłać wiadomości');

i w kopii zmieniłem adres e-mail na " $_POST ", tak jak poniżej:

    @mail("MÓJ-MAIL@MAIL.COM","TEMAT E-MAILA","$message","$header")
    or die('Nie udało się wysłać wiadomości');
    @mail("$_POST[email]","KOPIA TEMAT E-MAILA","$message","$header")
    or die('Nie udało się wysłać wiadomości');

Teraz formularz jest wysyłany zarówno do mnie, jak i do nadawcy, (tematy wiadomości mogą być różne), ale nadawca nie ma wyboru czy chce dostać kopię swojej wiadomości, czy nie.

 

Przydałoby się jeszcze dodać checkbox do zaznaczenia czy nadawca chce otrzymać kopię, ale nie wiem jak to zrobić.

<?php
// sprawdzamy, czy zmienna $submit jest pusta
if (empty($_POST['submit'])) {
    // wyświetlamy formularz
    echo "<table border=\"0\"><form method=\"post\">
<tr>
<td>Imię i nazwisko:*</td>
<td><input type=\"text\" name=\"imie\" style=\"width: 450px\"></td>
</tr>
<tr>
<td>Twój e-mail:*</td>
<td><input type=\"text\" name=\"email\" style=\"width: 450px\"></td>
</tr>
<tr>
<td>Treść wiadomości:*</td>
<td><textarea name=\"tresc\" style=\"width: 450px; height: 180px\"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type=\"checkbox\" name=\"kopia\" >Wyślij kopię do mnie</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type=\"submit\" name=\"submit\" value=\"Wyślij\">&nbsp;
<input type=\"reset\" value=\"Wyczyść\"></td></form>
</tr>
<tr>
<td>*Pola wymagane</td>
</tr>
</table>";
}
// sprawdzamy, czy zmienne przesłane z formularza nie są puste
elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
    // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
    // zmienna $message zawiera treść wiadomości
    $message = "$_POST[tresc]\n\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
    // zmienna $header zawiera przede wszystkim adres zwrotny
    $header = "From: $_POST[imie] <$_POST[email]>".PHP_EOL.'MIME-Version: 1.0'.PHP_EOL.'Content-type: text/plain; charset=UTF-8';
    // funkcja mail() za pomocą której wiadomość zostanie wysłana
    @mail("MÓJ-MAIL@MAIL.COM","TEMAT E-MAILA","$message","$header")
    or die('Nie udało się wysłać wiadomości');
	if($_POST['kopia']) {
		@mail("$_POST[email]","KOPIA TEMAT E-MAILA","$message","$header")
		or die('Nie udało się wysłać wiadomości');
	}
    // wyświetlenie komunikatu w przypadku powodzenia
    echo "<div align=\"center\"><strong><font color=gren size=4><b>Dziękujemy - Wiadomość została wysłana!</font><p></strong></div>";
}
// lub w przypadku nie wypełnienia formularza do końca
else echo "<font color=red size=4><b>Nie zostały wypełnione wszystkie wymagane pola!</b></font><p> <a href=\"formularz.php\">Powrót do formularza</a></p>";
?>

I według mnie lepiej by było gdybyś zmienił jeszcze w formularzu typ pola do wpisywania emaila z text na email, bo teraz użytkownik może tam wpisać jakikolwiek tekst a przy typie email pokazuje się komunikat gdy w wpisanym tekście nie ma znaku “@”.

Wielkie dzięki, o to mi chodziło. Teraz wszystko działa jak trzeba, pole email też poprawiłem.

To jest źle zrobione. Jeśli do kogoś ma zostać wysłana kopia maila, to jego adres należy umieścić w polu CC, a nie wysyłać mu drugiego osobnego maila. Chociażby dlatego, że on w tej chwili nie możę odpowiedzieć wszystkim, którzy są zainteresowani grupową korespondencją.