1. Forum używa plików Cookies. Dowiedz się więcej o celu ich używania i możliwości zmiany ustawień Cookies w przeglądarce. Czytaj więcej...

W TRAKCIE Polskie znaki w formularzu i zawartość tytułu w nagłówku.

Dyskusja w 'Poczta i skrzynki e-mail' rozpoczęta przez użytkownika Wawrzek, 23 Styczeń 2018.

  1. Wawrzek

    Wawrzek Nowy użytkownik

    Wiadomości:
    3
    Docenione treści:
    0
    Witam, To mój pierwszy post tutaj.
    Zaznaczam, że nie jestem biegły w znajomości php....
    Posiadam na serwerze home stronę a na niej taki formularz.


    Borykam się jednak z problemami.
    1. polskie znaki:
    Formularz nie przesyła w wiadomości polskich znaków
    2. Po wysłaniu wiadomości, w polu temat wiadomości, pojawia się tekst:
    -f adres@poczta.pl, a ja chciałbym by w tym miejscu pojawiał się tekst: wiadomość ze strony www.

    Ogólnie polskie znaki na całej stronie, jak i te w tekstach opisujące pola formularza: imię:, Treść wiadomości: na stronie wyświetlają się prawidłowo. Nie wyświetlają się one tylko w mailu wysłanym, tym formularzem.

    Bardzo gorąco proszę kogoś życzliwego i potrafiącego to ogarnąć o korektę kodu, tak bym mógł go wkleić stąd na stronę www. Nie jestem programistą.....
    Kod formularza:

    PHP:
    <?php
    if ((empty($_POST['tresc']) or empty($_POST['imie']) or empty($_POST['email'])) and !empty($_POST['submit'])) {
    // wyświetlamy formularz
    echo "<form method=\"post\" action=\"#\">
    <table border=\"0\" class=\"formtable\" summary=\" formularz kontaktowy\">
    <tr>
    <td class=\"formlewy \">* Treść wiadomości:</td>
    <td><textarea name=\"tresc\"rows=\"5\" cols=\"20\">"
    .$_POST['tresc']."</textarea></td>
    </tr>
    <tr>
    <td class=\"formlewy\">* Imię:</td>
    <td><input type=\"text\" name=\"imie\" class=\"pole\" />"
    .$_POST['imie']."</td>
    </tr>
    <tr>
    <td class=\"formlewy\">Telefon:</td>
    <td><input type=\"text\" name=\"telefon\" class=\"pole\" /></td>
    </tr>
    <tr>
    <td class=\"formlewy\">* e-mail:</td>
    <td><input type=\"text\" name=\"email\" class=\"pole\" />"
    .$_POST['email']."</td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><input type=\"submit\" name=\"submit\" value=\"Wyślij\" class=\"wyslij\"/>&nbsp;
    <input type=\"reset\" value=\"Reset\"  class=\"wyczysc\"/></td>
    </tr>
    <tr>
    <td colspan=\"2\">"
    ;
    // lub w przypadku nie wypełnienia formularza do końca
    echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
    echo 
    "</td>
    </tr>
    </table></form>"
    ;
    }
    elseif (empty(
    $_POST['tresc']) or empty($_POST['imie']) or empty($_POST['email']) and empty($_POST['submit'])) {
    // wyświetlamy formularz
    echo "<form method=\"post\" action=\"#\"><table border=\"0\" class=\"formtable\"  summary=\" formularz kontaktowy\">
    <table>
    <tr>
    <td class=\"formlewy\">* Treść wiadomości:</td>
    <td><textarea name=\"tresc\" rows=\"5\" cols=\"40\"></textarea></td>
    </tr>
    <tr>
    <td class=\"formlewy\">* Imię: </td>
    <td><input type=\"text\" name=\"imie\" class=\"pole\" /></td>
    </tr>
    <tr>
    <td class=\"formlewy\">Telefon:</td>
    <td><input type=\"text\" name=\"telefon\" class=\"pole\" /></td>
    </tr>
    <tr>
    <td class=\"formlewy\">* e-mail:</td>
    <td><input type=\"text\" name=\"email\" class=\"pole\" /></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><input type=\"submit\" name=\"submit\" value=\"Wyślij\" class=\"wyslij\" />&nbsp;
    <input type=\"reset\" value=\"Wyczyść\"  class=\"wyczysc\"/></td>
    </tr>
    </table></form>"
    ;
    }

    // sprawdzamy, czy zmienne przesłane z formularza nie są puste
    elseif (!empty($_POST['tresc'])  && !empty($_POST['imie']) && !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ść wiadomości: $_POST[tresc]  $_POST[telefon]  Wysłał: $_POST[imie] mail: $_POST[email]";

    // Ta kubuhja ma odpowiadać za pokskie znaki
    $header 'Content-type: text/html; charset=utf-8';

    // zmienna $header zawiera przede wszystkim adres zwrotny
    $header "From: adres@poczta.pl $_POST[imie] <$_POST[email]> ";




    mail("adres@poczta.pl","-f adres@poczta.pl""Wiadomość ze strony www","$message","$header");
    mail($header,"Wiadomosc ze strony www","$message","$header")
    // tu ewentualnie usunąć emaila
    //   funkcja mail() za pomocą której wiadomość zostanie wysłana
     
     
    or die(' Wiadomość została wysłana!');
    // wyświetlenie komunikatu w przypadku powodzenia

    echo "<div align=\"center\"><Nie udało się wysłać wiadomości.</p></strong></div>";
    }
    // Wyświetla, gdy nie uda się wysłać wiadomości
    ?> 
    Z góry dziękuję za wyrozumiałość i pomoc.....
     
  2. casar

    casar Ekspert

    Wiadomości:
    364
    Docenione treści:
    109
    Co do tematu wiadomości tu masz błąd:
    PHP:
    mail("adres@poczta.pl","-f adres@poczta.pl""Wiadomość ze strony www","$message","$header");
    Nie ta kolejność - "-f adres@poczta.pl" powinno być na końcu i raczej bez cudzysłowia:
    Kod:
    bool mail ( string $do , string $temat , string $treść [, string $dodatkowe_nagłówki [, string $dodatkowe_parametry ]] )
    I to drugie wywołanie mail() chyba nie jest potrzebne:
    PHP:
    mail($header,"Wiadomosc ze strony www","$message","$header")
    A co do kodowania to osobiście używam tylko jednego zapisu na początku strony:
    PHP:
    header('Content-Type: text/html; charset=UTF-8'); 
    i wysyła wiadomość ze znakami diakrytycznymi.
     
    Ostatnia modyfikacja: 23 Styczeń 2018
  3. casar

    casar Ekspert

    Wiadomości:
    364
    Docenione treści:
    109
    Do samej wysyłki powinno pomóc jak zmienisz:

    PHP:
    mail("adres@poczta.pl","-f adres@poczta.pl""Wiadomość ze strony www","$message","$header");
    mail($header,"Wiadomosc ze strony www","$message","$header")
    na:

    PHP:
    mail("adres@poczta.pl","Wiadomość ze strony www",$message,$header"-f adres@poczta.pl");
    //mail($header,"Wiadomosc ze strony www","$message","$header")
    Nie wiem natomiast jak podpinasz formularz do strony, ale jeśli jest to np. include, to wystarczy w głównym (w którym jest include'owany formularz) pliku, na początku, dodać zapis jaki wskazałem:

    PHP:
    header('Content-Type: text/html; charset=UTF-8'); 
     
  4. Wawrzek

    Wawrzek Nowy użytkownik

    Wiadomości:
    3
    Docenione treści:
    0
    Witam, dzięki za zainteresowanie i zaangażowanie.
    Niestety......
    1. Przeniesienie fragmentu -f adres@poczta.pl na koniec frazy:
    PHP:
    mail("adres@poczta.pl""Wiadomość ze strony www","$message","$header""-f adres@poczta.pl")
    powoduje nie wysyłanie się maila. Gdy, jest po "staremu", formularz wysyła wiadomość na wskazany adres, ale bez tytułu wiadomości w nagłówku, jak pisałem w pierwszym poście.

    2. Na wszystkich stronach mam ustawione kodowanie utf-8
    HTML:
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    I treść stron wyświetla się we wszystkich elementach, (tych includowanych też), POPRAWNIE z polskimi znakami
    łącznie z tą zakładką, gdzie jest formularz.
    Problem występuje tylko w wiadomości mail, wysłanej tym formularzem.
     
  5. casar

    casar Ekspert

    Wiadomości:
    364
    Docenione treści:
    109
    W takim razie musi być coś nie tak gdzie indziej, bo sprawdziłem kod Twojego u siebie z modyfikacja jaką wskazałem i działa.

    Może włącz logowanie błędów PHP i zobacz co interpreter zwraca.

    PS. Pamiętaj, że poczta w domenie, której dotyczy kwestia (w kodzie - poczta.pl) musi być obsługiwana po stronie serwera w home.pl, na którym jest strona.
     
    Ostatnia modyfikacja: 27 Styczeń 2018
  6. Wawrzek

    Wawrzek Nowy użytkownik

    Wiadomości:
    3
    Docenione treści:
    0
    OK..... to rozumiem, że:
    ad. 1. Pocztę mail powinienem założyć na home.pl?
    Ta, jest na innym serwerze, ale się wysyła problem jest tylko z tym tytułem wiadomości w nagłówku.

    ad. 2, to co z polskimi znakami?

    Wstawiłbym tu screen strony, na którym widać, że treść strony wyświetla poprawnie polskie znaki, zakładka z formularzem też jest poprawnie wyświetlana ale chyba się nie da bezpośrednio z komputera..... tylko mail z treściąformularza źlr wyświetla znaki.
     
  7. LorK

    LorK Pogromca Beta-tester

    Wiadomości:
    939
    Docenione treści:
    84
    @Wawrzek nie bardzo rozumiem Twój ostatni wpis. Chyba nie bardzo potrafisz obsługiwać forum i opcję cytowania.

    A dwa: formularz, który tutaj załączyłeś to jakaś masakra - aż się prosi by spamować tym formularzem :p
     

Poleć forum znajomym