Skocz do zawartości

polskie znaki w formularzu - again


herbit

Rekomendowane odpowiedzi

Na wstępie poproszę, aby nie odsyłać mnie do google. Na prawdę siedzę kolejną godzinę szukając rozwiązania na różnych forach i po prostu wysiadam już.

Nie jestem programistą, nie znam się na php. W sieci da się znaleźć sporo skryptów, które za pomocą funkcji kopiuj-wklej dostosowuję do swoich potrzeb. Nie inaczej było i w tym przypadku. Potrzebowałem prostego formularza do zamawiania ogłoszeń drobnych w gazecie regionalnej i takowy znalazłem. Wszystko śmiga bez zarzutów, po czym dowiaduję się, że u osoby odbierającej zgłoszenia wysyłane za pomocą formularza, nie wyświetlają się polskie znaki. Sprawa o tyle mnie zdziwiła, że wspomniane zgłoszenia na mojego maila przychodzą z polskimi znakami. Nie bardzo wiem co dalej robić.

Kod formularza:

<form method="POST" name="contactform" action="contact-form-handler.php">

<p>

<br>

<label for='tresc'>Treść:</label> <br>

<textarea name="tresc" cols="40" class="form_red"></textarea>

</p>

<p>

<br>

Wersja

<br>

<select name="wersja" size="1" class="form_red">

<option value="podstawowa">podstawowa</option>

<option value="pogrubienie">pogrubienie</option>

<option value="wersalik">wersalik</option>

<option value="pogrubiony wersalik">pogrubiony wersalik</option>

</select>

</p>

<p>

<br>

Ramka

<br>

<select name="ramka" size="1" class="form_red">

<option value="nie">nie</option>

<option value="tak">tak</option>

</select>

</p>

<p>

<br>

Ilość edycji

<br>

<input name="ilosc" type="text" class="form_red" size="2" maxlength="2">

</p>

<p>

<br>

<strong>Dane kontaktowe</strong>

</p>

<p>

<br>

<label for="imie">imie i nazwisko</label><br>

<input name="imie" type="text" class="form_red" id="imie">

</p>

<p>

<br>

<label for="tel">Telefon</label><br>

<input name="tel" type="text" class="form_red">

</p>

<p>

<br>

<label for="email">Email</label><br>

<input name="email" type="text" class="form_red">

</p>

<p>

<br>

<strong>Faktura VAT</strong>

</p>

<p>

<br>

<label for="firma">Nazwa firmy</label><br>

<input type="text" name="firma" id="firma">

</p>

<p>

<br>

<label for="adres">Adres</label><br>

<input name="adres" type="text">

</p>

<p>

<br>

<label for="miejscowosc">Miejscowość</label><br>

<input name="miejscowosc" type="text">

</p>

<p>

<br>

<label for="kod">Kod pocztowy</label><br>

<input name="kod" type="text">

</p>

<p>

<br>

<label for="nip">NIP</label><br>

<input name="nip" type="text">

</p>

<p>

<br>

<input type="submit" value="Wyślij"><br></p>

</form>

Kod php:

<?php

$errors = '';

$myemail = 'somadream@wp.pl';//<-----Put Your email address here.

if(empty($_POST['imie']) ||

empty($_POST['email']) ||

empty($_POST['tel']))

{

$errors .= "\n Błąd: Proszę wypełnić wymagane pola";

}

$tresc = $_POST['tresc'];

$imie = $_POST['imie'];

$email_address = $_POST['email'];

$tel = $_POST['tel'];

$ilosc = $_POST['ilosc'];

$wersja = $_POST['wersja'];

$ramka = $_POST['ramka'];

$firma = $_POST['firma'];

$adres = $_POST['adres'];

$miejscowosc = $_POST['miejscowosc'];

$kod = $_POST['kod'];

$nip = $_POST['nip'];

if (!preg_match(

"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",

$email_address))

{

$errors .= "\n Błąd: Nieprawidłowy adres email";

}

if( empty($errors))

{

$to = $myemail;

$email_subject = "Ogłoszenie drobne - osoba zamawiająca: $imie";

$email_body = "OGŁOSZENIE DROBNE".

" Szczegóły zamówienia: \n treść: $tresc \n ilość: $ilosc \n wersja: $wersja\n ramka: $ramka\n imię i nazwisko: $imie \n email: $email_address \n telefon: $tel \n nazwa firmy: $firma \n adres: $adres \n miejscowość: $miejscowosc \n kod pocztowy: $kod \n nip: $nip";

$headers = "Od: $myemail\n";

$headers .= "Adres email nadawcy: $email_address";

mail($to,$email_subject,$email_body,$headers);

//redirect to the 'thank you' page

header('Location: thankyou.html');

}

?>

<!doctype html>

<html>

<head>

<title>Contact form handler</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>

<body>

<!-- This page is displayed only if there is some error -->

<?php

echo nl2br($errors);

?>

</body>

</html>

Będę wdzięczny za jakąkolwiek pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

Zainteresuj się nagłówkami wiadomości pocztowej w kontekście określenia kodowania:

"Content-Type: text/plain; charset=UTF-8\n"

https://www.php.net/m...nction.mail.php

----

lub: https://www.google.pl/search?hl=pl&q=mail+php+polskie+znaki+utf-8

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Przepraszam, że podpinam się pod temat ale nie chcę zaśmiecać forum.

Już 2 godziny przeszukuję google i nadal nie wiem jak rozwiązać mój problem, a mianowicie po pobraniu tekstu z bazy danych mySQL nie wyświetlają mi się polskie znaki.

W sekcji head pliku .php mam:

<meta charset="uft-8" />

więc to nie z winy kodowania html.

Do obsługi mySQL używam phpmyadmin online dostarczanego przez home.pl (mam u nich serwer) i tu się prawdopodobnie pogubiłem. Są w sumie 3 okienka do wyboru czegoś językopodobnego (poczętkujący jestem :P) "Sortowanie połączenie z serwerem", oraz 2x "Metoda porównywania napisów" (zarówno w ustawieniach bazy jak i konkretnej tabeli). Próbowałem to poustawiać na wszystkie możliwe sposoby ale ciągle zamiast polskich liter mam krzaczki (znaki zapytania w czarnych rombach).

Zarówno PHP jak i my SQL zacząłem się uczyć niedawno więc prosiłbym o wyjaśnienie wszystkiego łopatologicznie :P

Wydaje mi się, że nie ma potrzeby wklejać kodu bo problem jest dosyć ogólny ale jeśli się okaże, że jest inaczej to oczywiście wkleję.

Pozdrawiam i z góry dziękuję za pomoc.

edit//

Jeśli to ma jakieś znaczenie to w notepadzie++ mam ustawione kodowanie znaków na UTF-8

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 lata później...

Mam niestety podobny problem. Poniższy formularz nie przesyła polskich znaków:

 

<?php
$mail->CharSet="UTF-8";

    // specify your email here
    $to = 'mail@mail.pl';

 

    // Assigning data from $_POST array to variables
    if (isset($_POST['name'])) { $name = $_POST['name']; }
    if (isset($_POST['email'])) { $from = $_POST['email']; }
    if (isset($_POST['company'])) { $company = $_POST['company']; }
    if (isset($_POST['message'])) { $message = $_POST['message']; }
    
    // Construct subject of the email
    $subject = 'Wiadomość ze strony internetowej od ' . $name;

    // Construct email body
    $body_message .= 'Imię: ' . $name . "\r\n";
    $body_message .= 'Email: ' . $from . "\r\n";
    $body_message .= 'Telefon: ' . $company . "\r\n";
    $body_message .= 'Wiadomość: ' . $message . "\r\n";

    // Construct headers of the message
    $headers = 'Od: ' . $from . "\r\n";
    $headers .= 'Odpowiedz: ' . $from . "\r\n";

    $mail_sent = mail($to, $subject, $body_message, $headers);

    if ($mail_sent == true){ ?>
<script language="javascript" type="text/javascript">
        window.alert("Dziekujemy za wysłanie wiadomości! Skontaktujemy się z Państwem w najbliższym czasie.");
        </script>
<?php } else { ?>
<script language="javascript" type="text/javascript">
                    window.alert("Wystąpił błąd podczas wysyłania wiadomości. Prosimy spróbować ponownie.");
                </script>
<?php
    } // End else
    
?>


HTML wygląda tak mniej więcej:

 

<html lang="pl-PL">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>


Zastanawiam się gdzie może tkwić błąd?
 

Odnośnik do komentarza
Udostępnij na innych stronach

Pliki zapisuj jako utf-8 NIE ANSI

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Zastosuj jakąś sprawdzona klasę do wysyłki e-maili np: https://github.com/PHPMailer/PHPMailer

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności