Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Formularz kontaktowy
Forum PHP.pl > Forum > Przedszkole
Make it real
Witam

Mam skrypt prostego formularza kontaktowego, działa, ale wiadomość wysłana do mnie nie zawiera polskich znaków. Czy moglibyście poprawić go i opcjonalnie dodać do skryptu w miejsce adresu e-mail zależną @ aby meil miał poprawna formę. Poniżej skrypt:


<?php
// sprawdzamy, czy zmienna $submit jest pusta
if (empty($_POST['submit'])) {
// wyświetlamy formularz
echo "<table border=\"0\"><form method=\"post\">
<tr>
<td>Treść wiadomości</td>
<td><textarea name=\"tresc\" style=\"width: 250px; height: 100px\"></textarea></td>
</tr>
<tr>
<td>Imię i nazwisko</td>
<td><input type=\"text\" name=\"imie\" style=\"width: 250px\"></td>
</tr>
<tr>
<td>Adres e-mail</td>
<td><input type=\"text\" name=\"email\" style=\"width: 250px\"></td>
</tr>
<tr>
<td> </td>
<td><input type=\"submit\" name=\"submit\" value=\"Wyślij\"> 
<input type=\"reset\" value=\"Od nowa\"></td></form>
</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 = "TREŚĆ WIADMOŚCi:\n$_POST[tresc]\nWYSŁAŁ: $_POST[imie]\nE-MAIL: $_POST[email]";
// zmienna $header zawiera przede wszystkim adres zwrotny
$header = "From: $_POST[imie] <$_POST[email]>";
// funkcja mail() za pomocą której wiadomość zostanie wysłana
@mail("meil@meil.pl","Wiadomosc ze strony WWW","$message","$header")
or die('Nie udało się wysłać wiadomości');
// wyświetlenie komunikatu w przypadku powodzenia
echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
}
// lub w przypadku nie wypełnienia formularza do końca
else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";

?>
Pawel_W
po 1 bbcode, a po drugie można tak:
  1. <?php
  2. echo '<table border="0"><form method="post">
  3. <tr>
  4. <td>Treść wiadomości</td>
  5. <td><textarea name="tresc" style="width: 250px; height: 100px"></textarea></td>
  6. </tr>
  7. <tr>
  8. <td>Imię i nazwisko</td>
  9. <td><input type="text" name="imie" style="width: 250px"></td>
  10. </tr>
  11. <tr>
  12. <td>Adres e-mail</td>
  13. <td><input type="text" name="email" style="width: 250px"></td>
  14. </tr>
  15. <tr>
  16. <td> </td>
  17. <td><input type="submit" name="submit" value="Wyślij">  
  18. <input type="reset" value="Od nowa"></td></form>
  19. </tr>
  20. </table>';
  21. ?>

i nie trzeba stawiać \

a po 3 jak masz tablice typu $_POST to klucz bierze się w ' ', czyli
  1. <?php
  2. $message = "TREŚĆ WIADMOŚCi:\n$_POST['tresc']\nWYSŁAŁ: $_POST['imie']\nE-MAIL: $_POST['email']";
  3. $header = "From: $_POST['imie'] <$_POST['email']>";
  4. ?>

napisz, czy pomogło winksmiley.jpg
Make it real
Nie. To co podałeś to to samo. Ponadto wywala bład "Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in ... on line 39"
Pawel_W
  1. <?php
  2. if (empty($_POST['submit'])) {
  3. echo '<table border="0"><form method="post">
  4. <tr>
  5. <td>Treść wiadomości</td>
  6. <td><textarea name="tresc" style="width: 250px; height: 100px"></textarea></td>
  7. </tr>
  8. <tr>
  9. <td>Imię i nazwisko</td>
  10. <td><input type="text" name="imie" style="width: 250px"></td>
  11. </tr>
  12. <tr>
  13. <td>Adres e-mail</td>
  14. <td><input type="text" name="email" style="width: 250px"></td>
  15. </tr>
  16. <tr>
  17. <td> </td>
  18. <td><input type="submit" name="submit" value="Wyślij">  
  19. <input type="reset" value="Od nowa"></td></form>
  20. </tr>
  21. </table>';
  22. }
  23. else if(!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  24. $message = "TREŚĆ WIADMOŚCi:\n".$_POST['tresc']."\nWYSŁAŁ: ".$_POST['imie']."\nE-MAIL: ".$_POST['email'];
  25. $header = "From: ".$_POST['imie']." <".$_POST['email'].">";
  26. if(mail("errb@o2.pl","Wiadomosc ze strony WWW",$message,$header))
  27. echo '<div align="center"><strong>Wiadomość została wysłana poprawnie!</strong></div>';
  28. else
  29. echo 'Nie udało się wysłać wiadomości';
  30. }
  31. else
  32. echo '<span style="color: #FF0000; text-align: center;">Wypełnij wszystkie pola formularza!</span>';
  33.  
  34. ?>


spróbuj czy działa
Make it real
Działa bo działało teraz jest bez opisów, ale dalej brak polskich liter ąęóżźćł wyświetla šęóż Ÿćł.
Pawel_W
brak liter w emailu czy na stronie?
Make it real
W emeilu
Pawel_W
http://lmgtfy.com/?q=php+mail()

na 4 stronie od góry masz przykład z kodowaniem polskich znaków...

webmade.org
Make it real
Zależy mi na tym "moim" skrypcie + dodanie \nContent-Type:".' text/plain;charset="iso-8859-2"'."\nContent-Transfer-Encoding: 8bit"; ale nie wiem jak to zrobić
flashdev
@Make it real
Ustaw kodowanie strony w meta tagu również na iso-8859-2.

Cytat
"\nContent-Transfer-Encoding: 8bit"


Nie ejstem pewny co to znaczy, ale czy polskie znaki + powyższy nagłówek nie zaprzeczaja się nawzajem?
Make it real
Masz racje! Nie widziałem tego. Treść meila przychodzi poprawna.

Ale silnik dalej ma wady:
Zamiast ś jest � lub brakuje nie ma nic.
Pawel_W
jeżeli masz z tym aż taki problem to po prostu zamień polskie znaki na Unicode, nie powinno być problemów...

http://www.kurshtml.boo.pl/generatory/unicode.html
Make it real
Genialnie ! Dziękuje ! Teraz jest jak trzeba.
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.