Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Funkcja mail(), a Polskie znaki
ShamY
post 30.03.2015, 00:07:17
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 11.07.2013

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


Witam,
szukałem na Google, jednak żadne znalezione przeze mnie rozwiązanie nie pasuję do mojego kodu.
Otóż gdy otrzymuję adres e-mail z mojej strony (funckaj mail()), to zamiast Polskich znaków są krzaczki. Kodowanie strony jest w utf8, i jego zmiana nie pomaga. Za każdym razem jest to samo, byłym bardzo wdzięczny jakby ktoś pokazał mi w któym miejscu mojego kodu coś dodać, aby to zaskoczyło...

  1. <?php
  2.  
  3. if (empty($_POST['submit'])) {
  4.  
  5. echo "<table border=\"0\"><form method=\"post\">
  6. <tr>
  7. <td>Imię:*</td>
  8. <td><input type=\"text\" name=\"imie\" style=\"width: 170px\"></td>
  9. </tr>
  10. <tr>
  11. <td>Nazwisko:</td>
  12. <td><input type=\"text\" name=\"nazwisko\" style=\"width: 170px\"></td>
  13. </tr>
  14. <tr>
  15. <td>Adres e-mail:*</td>
  16. <td><input type=\"text\" name=\"mail\" style=\"width: 170px\"></td>
  17. </tr>
  18. <tr>
  19. <td>Treść:*</td>
  20. <td><textarea name=\"tresc\" style=\"width: 500px; height: 100px\"></textarea></td>
  21. </tr>
  22.  
  23. <tr>
  24. <td>&nbsp;</td>
  25. <td><input type=\"submit\" name=\"submit\" value=\"Wyślij\">&nbsp;
  26. <input type=\"reset\" value=\"Wyczyść\"></td></form>
  27. </tr>
  28. </table>";
  29. }
  30.  
  31. elseif (!empty($_POST['imie']) && !empty($_POST['mail']) && !empty($_POST['tresc'])) {
  32.  
  33. $message = "Imię: $_POST[imie]\nNazwisko: $_POST[nazwisko]\nAdres e-mail: $_POST[mail]\nTreść: $_POST[tresc]";
  34. $header = "From: $_POST[mail]";
  35. @mail("adres","Wiadomość","$message","$header")
  36. or die('Błąd! Nie udało się wysłać wiadomości.');
  37. echo "<div align=\"center\"><strong>Wiadomość została wysłana!</strong></div>";
  38. }
  39. else echo "<span style=\"color: #FF0000; text-align: center;\">Wypelnij wszystkie wymagane pola!</span>";
  40.  
  41. ?>
Go to the top of the page
+Quote Post
johny_s
post 30.03.2015, 00:26:34
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


dodaj odpowiednie kodowanie w nagłówkach maila
Go to the top of the page
+Quote Post
ShamY
post 30.03.2015, 01:34:32
Post #3





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 11.07.2013

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


Ok dziękuję, działa!
  1. $header = "From: $_POST[mail] \r\nContent-type: text/html; charset=utf-8";
Go to the top of the page
+Quote Post
schwarzu
post 30.06.2016, 07:41:53
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.06.2016

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


Witam, temat chyba nie został zamknięty, a pomoc została udzielona. Chciałbym się podpiąć i zapytać gdzie jest błąd w kodzie, PROBLEM MAM TAKI SAM nie wyświetlają się polskie znaki w wiadomości i temacie. Przeszukałem internet i nic.


<?php


if($_POST)
{

$headers = "From: $_POST[mail] \r\nContent-type: text/html; charset=utf-8";
$to_Email = "k.juszkiewicz@bkfdesign.com"; //Replace with recipient email address
$subject = 'AJDOORS - wiadomość ze strony '.$_SERVER['SERVER_NAME']; //Subject line for emails



//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {

//exit script outputting json data
$output = json_encode(
array(
'type'=>'error',
'text' => 'Request must come from Ajax'
));

die($output);
}

//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
{
$output = json_encode(array('type'=>'error', 'text' => 'Wymagane pola są niewypełnione!'));
die($output);
}

//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);

$user_Message = str_replace("\'", "'", $user_Message);
$user_Message = str_replace("'", "'", $user_Message);

//additional php validation
if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
{
$output = json_encode(array('type'=>'error', 'text' => 'Imię i nazwisko jest za krótkie!'));
die($output);
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
$output = json_encode(array('type'=>'error', 'text' => 'Adres e-mail jest niepoprawny!'));
die($output);
}
if(strlen($user_Message)<5) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Wiadomość jest za krótka.'));
die($output);
}

//proceed with PHP email.
$headers = 'From: '.$user_Email.'' . "\r\n" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

$sentMail = @mail($to_Email, $subject, $user_Message . "\r\n\n" .'-- '.$user_Name. "\r\n" .'-- '.$user_Email, $headers);

if(!$sentMail)
{
$output = json_encode(array('type'=>'error', 'text' => 'Nie można wysłać wiadomości! Sprawdź konfigurację PHP poczty.'));
die($output);
}else{
$output = json_encode(array('type'=>'message', 'text' => 'Hey '.$user_Name .'! Dzięki za wiadomość. Będziemy w kontakcie.'));
die($output);
}
}
?>
Go to the top of the page
+Quote Post
Arcioch
post 30.06.2016, 08:49:58
Post #5





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

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


Masz dwa razy zmienną $headers i w drugiej nie ma kodowania ustawionego.
A tu masz wyjaśnione dlaczego tytuł maila się "krzaczy" LINK
Go to the top of the page
+Quote Post
schwarzu
post 27.07.2016, 07:58:45
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.06.2016

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


Dodałem do drugiej zmiennej kodowanie, tak jak napisałeś:

//proceed with PHP email.
$headers = 'From: '.$user_Email.'' . "\r\n Content-type: text/html; charset=utf-8" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

i ciągle mam problem w postaci:

ĄŁŻŹĆŃÓŚĄŁŻŹĆŃÓŚĄŁŻŹĆŃÓŚĄŁŻŹĆŃÓŚĄŁŻŹĆŃÓŚ
ĄŁŻŹĆŃÓŚĄŁŻŹĆŃÓŚĄŁŻŹĆŃÓŚĄŁŻŹĆŃÓŚĄŁŻŹĆŃÓŚ




<?php


if($_POST)
{

$headers = "Content-type: text/html; charset=utf-8";
$to_Email = "k.juszkiewicz@bkfdesign.com"; //Replace with recipient email address
$subject = 'AJDOORS - wiadomość ze strony '.$_SERVER['SERVER_NAME']; //Subject line for emails



//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {

//exit script outputting json data
$output = json_encode(
array(
'type'=>'error',
'text' => 'Request must come from Ajax'
));

die($output);
}

//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
{
$output = json_encode(array('type'=>'error', 'text' => 'Wymagane pola są niewypełnione!'));
die($output);
}

//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);

$user_Message = str_replace("\'", "'", $user_Message);
$user_Message = str_replace("'", "'", $user_Message);

//additional php validation
if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
{
$output = json_encode(array('type'=>'error', 'text' => 'Imię i nazwisko jest za krótkie!'));
die($output);
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
$output = json_encode(array('type'=>'error', 'text' => 'Adres e-mail jest niepoprawny!'));
die($output);
}
if(strlen($user_Message)<5) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Wiadomość jest za krótka.'));
die($output);
}

//proceed with PHP email.
$headers = 'From: '.$user_Email.'' . "\r\n Content-type: text/html; charset=utf-8" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

$sentMail = @mail($to_Email, $subject, $user_Message . "\r\n\n" .'-- '.$user_Name. "\r\n" .'-- '.$user_Email, $headers);

if(!$sentMail)
{
$output = json_encode(array('type'=>'error', 'text' => 'Nie można wysłać wiadomości! Sprawdź konfigurację PHP poczty.'));
die($output);
}else{
$output = json_encode(array('type'=>'message', 'text' => 'Hey '.$user_Name .'! Dzięki za wiadomość. Będziemy w kontakcie.'));
die($output);
}
}
?>


Go to the top of the page
+Quote Post
nospor
post 27.07.2016, 08:08:23
Post #7





Grupa: Moderatorzy
Postów: 36 477
Pomógł: 6301
Dołączył: 27.12.2004




Zacznij prosze uzywac bbcode bo kod jest ciezko czytelny.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
schwarzu
post 27.07.2016, 08:30:33
Post #8





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.06.2016

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


No pewnie, że tak, oczywiście masz rację, mam nadzieję, że teraz jest lepiej. Dzięki za uwagę.


Kod
<?php


if($_POST)
{
    
    $headers= "Content-typ: text/html; charset=utf-8r\n";
    $to_Email       = "k.juszkiewicz@bkfdesign.com"; //Replace with recipient email address
    $subject        = 'AJDOORS - wiadomość ze strony '.$_SERVER['SERVER_NAME']; //Subject line for emails
    
    
    
    //check if its an ajax request, exit if not
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
    
        //exit script outputting json data
        $output = json_encode(
        array(
            'type'=>'error',
            'text' => 'Request must come from Ajax'
        ));
        
        die($output);
    }
    
    //check $_POST vars are set, exit if any missing
    if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Wymagane pola są niewypełnione!'));
        die($output);
    }

    //Sanitize input data using PHP filter_var().
    $user_Name        = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
    $user_Email       = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
    $user_Message     = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
    
    $user_Message = str_replace("\'", "'", $user_Message);
    $user_Message = str_replace("'", "'", $user_Message);
    
    //additional php validation
    if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Imię i nazwisko jest za krótkie!'));
        die($output);
    }
    if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Adres e-mail jest niepoprawny!'));
        die($output);
    }
    if(strlen($user_Message)<5) //check emtpy message
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Wiadomość jest za krótka.'));
        die($output);
    }
    
    //proceed with PHP email.
    $headers = 'From: '.$user_Email.'' . "\r\n Content-type: text/html; charset=utf-8" .
    'Reply-To: '.$user_Email.'' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
    
    $sentMail = @mail($to_Email, $subject, $user_Message . "\r\n\n"  .'-- '.$user_Name. "\r\n" .'-- '.$user_Email, $headers);
    
    if(!$sentMail)
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Nie można wysłać wiadomości! Sprawdź konfigurację PHP poczty.'));
        die($output);
    }else{
        $output = json_encode(array('type'=>'message', 'text' => 'Hey '.$user_Name .'! Dzięki za wiadomość. Będziemy w kontakcie.'));
        die($output);
    }
}
?>
Go to the top of the page
+Quote Post
mlawnik
post 27.07.2016, 15:54:39
Post #9





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

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


źle:
Cytat
Content-typ: text/html; charset=utf-8r\n


dobrze
Cytat
Content-type: text/html; charset=utf-8r\n


Ten post edytował mlawnik 27.07.2016, 15:55:00


--------------------
Pozdrawiam,
mlawnik

Cytat(nospor)
Jedzmy gówno.... miliony much nie może się przecież mylić
Go to the top of the page
+Quote Post
schwarzu
post 12.08.2016, 08:16:57
Post #10





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.06.2016

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


Dzięki za zaangażowanie w temat, ale to niestety nie to. Poprawiłem błąd, ale problem nie zniknął.

Forumowicze, macie jeszcze jakieś sugestie? Jakiekolwiek?!

Wznawiam prośbę o pomoc, może ktoś pomóc z tym nieszczęsnym PHP? Sam nie jestem w stanie tego rozwiązać.

Kod
<?php
if($_POST)
{
    $to_Email       = "k.juszkiewicz@bkfdesign.com"; //Replace with recipient email address
    $subject        = 'AJDOORS - e-mail ze strony '.$_SERVER['SERVER_NAME']; //Subject line for emails
    
    
    //check if its an ajax request, exit if not
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
    
        //exit script outputting json data
        $output = json_encode(
        array(
            'type'=>'error',
            'text' => 'Request must come from Ajax'
        ));
        
        die($output);
    }
    
    //check $_POST vars are set, exit if any missing
    if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Wymagane pola są niewypełnione!'));
        die($output);
    }

    //Sanitize input data using PHP filter_var().
    $user_Name        = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
    $user_Email       = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
    $user_Message     = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
    
    $user_Message = str_replace("\'", "'", $user_Message);
    $user_Message = str_replace("'", "'", $user_Message);
    
    //additional php validation
    if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Imię i nazwisko jest za krótkie!'));
        die($output);
    }
    if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Adres e-mail jest niepoprawny!'));
        die($output);
    }
    if(strlen($user_Message)<5) //check emtpy message
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Wiadomość jest za krótka.'));
        die($output);
    }
    
    //proceed with PHP email.
    $headers = "From: $_POST[mail] \r\nContent-type: text/html; charset=utf-8" .
    'From: '.$user_Email.'' . "\r\n" .
    'Reply-To: '.$user_Email.'' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
    
    $sentMail = @mail($to_Email, $subject, $user_Message . "\r\n\n"  .'-- '.$user_Name. "\r\n" .'-- '.$user_Email, $headers);
    
    if(!$sentMail)
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Nie można wysłać wiadomości! Sprawdź konfigurację PHP poczty.'));
        die($output);
    }else{
        $output = json_encode(array('type'=>'message', 'text' => 'Hey '.$user_Name .'! Dzięki za wiadomość. Będziemy w kontakcie.'));
        die($output);
    }
}
?>
Go to the top of the page
+Quote Post
trueblue
post 12.08.2016, 08:48:14
Post #11





Grupa: Zarejestrowani
Postów: 6 767
Pomógł: 1824
Dołączył: 11.03.2014

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


Skleiłeś nagłówek Content-type z From.


--------------------
Go to the top of the page
+Quote Post
schwarzu
post 12.08.2016, 09:09:09
Post #12





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.06.2016

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


Dzięki, za zainteresowanie. Czy to powinno wyglądać tak?

Kod
$headers = "Content-type: text/html; charset=utf-8" .
    'From: '.$user_Email.'' . "\r\n" .
    'From: '.$user_Email.'' . "\r\n" .
    'Reply-To: '.$user_Email.'' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
Go to the top of the page
+Quote Post
trueblue
post 12.08.2016, 09:11:06
Post #13





Grupa: Zarejestrowani
Postów: 6 767
Pomógł: 1824
Dołączył: 11.03.2014

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


Nie, bo nadal są sklejone.
Wydrukuj na ekran wartość zmiennej $headers, sprawdź podgląd źródła strony i zobaczysz.


--------------------
Go to the top of the page
+Quote Post
schwarzu
post 12.08.2016, 09:25:17
Post #14





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.06.2016

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


Kod
$headers = "Content-type: text/html; charset=utf-8" .
    $headers .= 'From: '.$user_Email.'' . "\r\n" .
    'From: '.$user_Email.'' . "\r\n" .
    'Reply-To: '.$user_Email.'' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();


OK. zmienna headers odklejona, ale problem pozostał
Go to the top of the page
+Quote Post
trueblue
post 12.08.2016, 09:44:51
Post #15





Grupa: Zarejestrowani
Postów: 6 767
Pomógł: 1824
Dołączył: 11.03.2014

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


A pokaż teraz jej wartość.


--------------------
Go to the top of the page
+Quote Post
schwarzu
post 12.08.2016, 13:15:06
Post #16





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.06.2016

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


ŻŹĆŃŁÓŻŹĆŃŁÓ -- kamil -- kamil@kamil.com
Go to the top of the page
+Quote Post
trueblue
post 12.08.2016, 13:23:06
Post #17





Grupa: Zarejestrowani
Postów: 6 767
Pomógł: 1824
Dołączył: 11.03.2014

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


Zawartość zmiennej $headers.


--------------------
Go to the top of the page
+Quote Post
schwarzu
post 12.08.2016, 13:34:42
Post #18





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.06.2016

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


Dzięki za pomoc i że mnie prowadzisz w tej mgle. Nie będę też ściemniać, że wiem o co chodzi, bo nie bardzo rozumiem co mam pokazać, lub jak to zrobić.
Go to the top of the page
+Quote Post
trueblue
post 12.08.2016, 13:50:49
Post #19





Grupa: Zarejestrowani
Postów: 6 767
Pomógł: 1824
Dołączył: 11.03.2014

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


  1. echo $headers;


Zobacz wynik w źródle strony. Przyjrzyj się znak po znaku.


--------------------
Go to the top of the page
+Quote Post
schwarzu
post 17.08.2016, 07:36:07
Post #20





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.06.2016

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


jesteś niesamowity, dzięki wielkie za wskazówki i że nie odpuściłeś. Natomiast nie jest aż tak pięknie, teraz przestała się wyświetlać informacja na stronie, że mail został wysłany. Tak na prawdę nic się nie dzieje. Po wciśnięciu przycisku wyślij, mail się wysyła, ale wszystkie dane wciąż są widoczne w oknach i brakuje informacji, że mail został wysłany.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 8.06.2024 - 22:39