PHP - funkcja mail i podwójne entery
REKLAMA:
Jeśli chcesz się nauczyć tworzyć strony internetowe, a nie masz o tym
pojęcia wejdź na bezpłatny blog
www.VideoWebmaster.pl
Jeśli już potrafisz tworzyć strony internetowe, wejdź na blog z poradami dla
średnio-zaawansowanych webmasterów
www.PomocnikWebmastera.pl
|
Piszę różne skrypty w PHP. Jedną z częściej używanych funkcji jest
funkcja mail, która wysyła maila. Często moje skrypty pobierają dane, przetwarzają i
wysyłają emaila. Niestety, ale pod Outlook Express przykładowy mail wygląda tak:
Cześć
Mam dla Ciebie ważną informację:
a pod operą ten sam email wygląda tak:
Cześć
Mam dla Ciebie ważną
informację
Pojawia się pytanie: dlaczego użytkownicy M2 (program pocztowy wbudowany
w przeglądarkę internetową Opera) dostają maile z "podwójnymi" enterami?
Odpowiedź jest prosta, ale długo szukałem rozwiązania. Problem tkwi w kodzie PHP,
używam mniej więcej takiej konstrukcji:
<?
$tresc="Czesc
Mam dla Ciebie wazna informacje";
mail($adresat,$temat,$tresc,$od);
?>
Konstrukcja jest jak najbardziej OK. Zwróć uwagę, że zmienna $tresc
zajmuje 2 linijki (jest to wygodny sposób zapisywania długich zmiennych z enterami).
Problem właśnie tutaj tkwi. Otóż plik utworzyłem pod Windowsem a serwery na których
mam strony są pod Linuxami. Pod windowsem kod ASCII entera to #13,#10 (CR LF) a pod
linuxem to samo #10 (LF). No i zmienna tresc zawiera w miejsce enterów zamiast #10 aż 2
znaki: #13 #10 i Outlook Express to interpretuje jako 1 normalny enter a Opera traktuje
taką sekwencję znaków jako dwa entery (!). Dlatego tworząc pliki PHP zadbaj, aby
koniec wiersza zawierał sam znak #10. Program, w którym pisuje skrypty PHP (EditPad) ma opcję zapisywania plików
tekstowych w formacie Linuxowym, wystarczy z menu Convert wybrać opcję To
Linux i od teraz już zawsze ten plik będzie miał entery zapisywane w podstaci
kodu ASCII #10 (LF). Jak ponownie otworzysz ten plik w programie EditPad to on sam
zorientuje się, że koniec wiersza to kod ASCII #10 i nie trzeba już będzie pamiętać
o konwersji. No a maile czytane pod Operą w końcu nie będą miały podwójnych enterów
wstecz
|