Formularz PHP - brak polskich znaków w wiadomości, nie można zrobić


(Biti95) #1

Witam mam formularz do wiadomości html i próbowałem wszystkiego co znalazłem w wujku google czyli :
Dodałem to:
$header = “From: $_POST[imie] <$_POST[email]>\r\n”;
$header .= “Content-type: text/plain; charset=utf-8\r\n”;
Ale nic nie dało więc usunąłem.
Potem w notepad++ uft-8 bez BOM i nic nadal nie ma polskich znaków w wiadomości ktoś mi może pomóc?
Dodaję kod:


`

<?php if(empty($_POST['submit'])){ ?> Nasz adres e-mail:
sklep@diamond-budownictwo.pl
Imię i Nazwisko:

E-Mail:

Dane do Faktury:

NIP:



<?php /*sprawdzenie wypełnienia wszystkich pól*/ }elseif(!empty($_POST['imienazwisko']) && !empty($_POST['email']) && !empty($_POST['trescwiadomosci'])){ /* Funkcja sprawdzająca poprawność E-Maila */ function SprawdzEmail($email) { if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $email)){ return false; } return true; } if(SprawdzEmail($_POST['email'])){ /* Tworzymy szkielet wysyłanej wiadomości */ $adresemail=$_POST['odbiorca'];

$ip=$_SERVER[‘REMOTE_ADDR’];
/* Wybierz kodowanie znaków usuwając // */
//$charset = ‘iso-8859-2’;
$charset = ‘utf-8’;
$host=gethostbyaddr($_SERVER[‘REMOTE_ADDR’]);
$wiadomosc=“Od: $_POST[imienazwisko] ($_POST[email])\nNIP: $_POST[nip]\nDane do faktury: $_POST[trescwiadomosci]”;
$nadawca=“From: $_POST[email]”;
$header = “From: $_POST[email]\r\n”;
$header .= “Content-type: text/plain; charset=utf-8\r\n”; //
@mail($adresemail, “Dane do Faktury”, “$wiadomosc”, “$nadawca”);
@mail($nadawca, “Dane do Faktury”, “$wiadomosc”, “$nadawca”);
echo "<span style="color: #00D800; font-weight: bold; “>Dziękujemy, formularz z danymi do faktury został wysłany. Aby kontynuować zakupy kliknij przycisk ‘Kontynnuj’ .”;
}else{ echo “<span style=“color: #FF0000; text-align: center; font-weight: bold;”>Wprowadzony adres E-Mail jest niepoprawny!!!
Cofnij stronę i wypełnij wszystkie pola formularza poprawnie!!!”; }
}else{ echo “<span style=“color: #FF0000; text-align: center; font-weight: bold; size: 20px;”>Brak danych do faktury Cofnij”; }
?>

`

#2

spróbuj zamiast UTF-8 napisać UTF8


(Biti95) #3

Nic nie daje


(Fizyda) #4

Jakie kodowanie masz w dokumencie html? Na pewno też utf-8?


(Biti95) #5

Tak na pewno utf-8.

Podam jeszcze raz kod strony bo ten u góry był z błędem.

<?php if(empty($_POST['submit'])){ ?> Nasz adres e-mail:
sklep@diamond-budownictwo.pl
Imię i Nazwisko:

E-Mail:

Dane do Faktury:

NIP:



<?php /*sprawdzenie wypełnienia wszystkich pól*/ }elseif(!empty($_POST['imienazwisko']) && !empty($_POST['email']) && !empty($_POST['trescwiadomosci'])){ /* Funkcja sprawdzająca poprawność E-Maila */ function SprawdzEmail($email) { if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $email)){ return false; } return true; } if(SprawdzEmail($_POST['email'])){ /* Tworzymy szkielet wysyłanej wiadomości */ $adresemail=$_POST['odbiorca'];

$ip=$_SERVER[‘REMOTE_ADDR’];
/* Wybierz kodowanie znaków usuwając // */
//$charset = ‘UTF8’;
$charset = ‘utf-8’;
$host=gethostbyaddr($_SERVER[‘REMOTE_ADDR’]);
$wiadomosc=“Od: $_POST[imienazwisko] ($_POST[email])\nNIP: $_POST[nip]\nDane do faktury: $_POST[trescwiadomosci]”;
$nadawca=“From: $_POST[email]”;

@mail($adresemail, “Dane do Faktury”, “$wiadomosc”, “$nadawca”);
@mail($nadawca, “Dane do Faktury”, “$wiadomosc”, “$nadawca”);
echo "<span style="color: #00D800; font-weight: bold; “>Dziękujemy, formularz z danymi do faktury został wysłany. Aby kontynuować zakupy kliknij przycisk ‘Kontynnuj’ .”;
}else{ echo “<span style=“color: #FF0000; text-align: center; font-weight: bold;”>Wprowadzony adres E-Mail jest niepoprawny!!!
Cofnij stronę i wypełnij wszystkie pola formularza poprawnie!!!”; }
}else{ echo “<span style=“color: #FF0000; text-align: center; font-weight: bold; size: 20px;”>Brak danych do faktury Cofnij”; }
?>


(Fizyda) #6

Tego kodu nie da się czytać, wklej go jako kod albo na jakąś stronę typu wklej.org.
Na pewno masz kodowanie pliku php i html na utf-8 bez BOM oraz wysyłasz do przeglądarki metadane o kodowaniu utf-8?


(Biti95) #7

http://wklej.org/id/3231236/
Tu masz link i w notepad++ zrobiłem utf-8 bez bom


(Fizyda) #8

Jest tu tyle błędów że nawet nie wiem od czego zacząć. Na pewno nie będę wypisywał wszystkich tylko 3 największe.

  1. Brak określonego doctype przez co nie wiadomo co to za wersja html - inaczej się ustala kodowanie dla wersji 4 i 5
  2. Niepoprawnie ustalone kodowanie
  3. Cała treść strony w head’erze

PS. Brak ustalonego kodowania dla maila.


(dr.boczek) #9

w funkcji mail() musisz jeszcze ustawić nagłówek

function utf8mail($to,$s,$body,$from_name="x",$from_a = "info@x.com", $reply="info@x.com")
{
    $s= "=?utf-8?b?".base64_encode($s)."?=";
    $headers = "MIME-Version: 1.0\r\n";
    $headers.= "From: =?utf-8?b?".base64_encode($from_name)."?= <".$from_a.">\r\n";
    $headers.= "Content-Type: text/plain;charset=utf-8\r\n";
    $headers.= "Reply-To: $reply\r\n";  
    $headers.= "X-Mailer: PHP/" . phpversion();
    mail($to, $s, $body, $headers);
}

(Biti95) #10

A możesz mi dokładnie podpowiedzieć gdzie to wrzucić, bo nie ukrywam formularz to gotowiec z pewnej strony i zielony jestem jak to dodać.


(Biti95) #11

Dobra doszedłem do tego sam, widzę kolejne forum na którym mając problem programistyczny dostaje się odpowiedź jak by się było mega webmasterem nie idzie pi ludzku…

Dla potomnych jak by ktoś miał problem.

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

<font face="Verdana">
</br>
<center>
<div>
 <?php




if(empty($_POST['submit'])){
?>
<form action="danefaktury.php" method="post"> <!--nazwa strony na której znajduje się formularz-->
Nasz adres e-mail:<br />
<select name="odbiorca" style="width:72%;">
	<option>sklep@diamond-budownictwo.pl</option>	
</select>
<br />
Imię i Nazwisko:<br />
<input type="text" name="imienazwisko" style="width:70%;"/><br />
E-Mail:<br />
<input type="text" name="email" style="width:70%;"/><br />
Dane do Faktury:<br />
<textarea name="trescwiadomosci" cols="30" rows="6" style="width:80%;"></textarea><br />

NIP:<br />
<input type="text" name="nip" style="width:70%;"/><br /><br />

<input type="submit" name="submit" style="width: 250px; height: 55px; font-size: 20px;" value="Wyślij dane do faktury"/>
<input type="reset" style="width: 250px; height: 55px; font-size: 20px;" value="Wyczyść"/>

</form>
<?php
/*sprawdzenie wypełnienia wszystkich pól*/
}elseif(!empty($_POST['imienazwisko']) && !empty($_POST['email']) && !empty($_POST['trescwiadomosci'])){



/* Funkcja sprawdzająca poprawność E-Maila */


function SprawdzEmail($email) {
 if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $email)){
  return false;
 }
 return true;
}

if(SprawdzEmail($_POST['email'])){
/* Tworzymy szkielet wysyłanej wiadomości */
$adresemail=$_POST['odbiorca'];

$ip=$_SERVER['REMOTE_ADDR'];
/* Wybierz kodowanie znaków usuwając // */ 

$charset = 'UTF-8';
$host=gethostbyaddr($_SERVER['REMOTE_ADDR']);
$wiadomosc="Od: $_POST[imienazwisko] ($_POST[email])\n\nNIP: $_POST[nip]\n\nDane do faktury:\n$_POST[trescwiadomosci]";
$nadawca="From: $_POST[email]";

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
    $headers .= 'From: '.$nadawca.''."\r\n";
 
 

@mail($adresemail, "Dane do Faktury", "$wiadomosc", "$headers");
@mail($nadawca, "Dane do Faktury", "$wiadomosc", "$headers");
echo "</br></br></br></br></br></br></br></br></br><center><span style=\"color: #00D800; font-weight: bold; \">Dziękujemy, formularz z danymi do faktury został wysłany. </br>Aby kontynuować zakupy kliknij przycisk 'Kontynnuj' .</span></center>";
}else{ echo "<span style=\"color: #FF0000; text-align: center; font-weight: bold;\"></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br>Wprowadzony adres E-Mail jest niepoprawny!!!<br>Cofnij stronę i wypełnij wszystkie pola formularza poprawnie!!!</span>"; }
}else{ echo "<span style=\"color: #FF0000; text-align: center; font-weight: bold; size: 20px;\"></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br>Brak danych do faktury Cofnij</span>"; }
?>
</font>
</div></center>

</head>

(krystian3w) #12

<center> ... </center> - możesz wyśrodkować div po przez css

Brak określonego doctype przez co nie wiadomo co to za wersja html - inaczej się ustala kodowanie dla wersji 4 i 5

http://www.kurshtml.edu.pl/html/deklaracja_typu_dokumentu,html.html (4 wersja)
https://www.w3schools.com/tags/tag_doctype.asp (5, 4, xhtml)


(Fizyda) #13

Center to najmniejszy problem, zobacz że całość strony jest w sekcje head. Ale i tak nikt mu nie chciał pomóc :smiley: pomimo że nawet dostał gotowy kod do użycia.


(krystian3w) #14

A rzeczywiście, nie kończy się nawet i jeszcze font do czcionki - mega stary jakiś kurs.


(dr.boczek) #15

Kolego, zadajesz pytanie o kodowanie treści mejla i dostajesz gotową odpowiedź ale jeszcze nie pasuje bo Ty chciałbyś żeby ktoś Ci wszystko objaśnił krok po kroczku. Tylko że to nie jest miejsce na pisanie poradników o programowaniu - skoro porywasz się na obsługę formularzy wysyłanych mejlem to podstawy programowania powinieneś znać - zarówno HTML jak i PHP. Zaczynasz przygodę od dupy strony - zacznij od podstaw bo stracisz kupę czasu i nadal nic nie będziesz rozumiał. Wkleiłeś gotowy skrypt ale zawierający pełno błędów - wspomniana sekcja head czy definicja zmiennych $charset, $ip i $host, których nigdzie nie użyłeś, o nieprawidłowej składni HTML nie wspomnę.
Wbrew pozorom użytkownicy próbują Cię naprowadzić na właściwy trop. Jeszcze raz zachęcam do nauki programowanie od podstaw i czytaniu dokumentacji PHP. Zobacz, tu wszystko jest.