[PHP] Jak w zależności od rozszerzenia (.php lub .html) dołączać lub nie dodatkową zawartość do tej samej strony WWW?
Chcesz na jednej stronie WWW, jeżeli ma rozszerzenie .php, dołączać pliki za pomocą funkcji include(), a przypadku gdy jej rozszerzenie jest .html nie mają być dołączane żadne pliki, a funkcja include() ma być ukryta.
Opisany przypadek nie występuje zbyt często w praktyce, nie mniej jednak musiałem zaprojektować stronę, która w zależności od jej rozszerzenia miała zachowywać się inaczej.
Gdy była to strona z rozszerzeniem .html i miała być oglądana np. na dysku lokalnym, nie powinno być do niej nic dołączane, ale gdy jej rozszerzenie zmieniało się na .php, miała dołączać nagłówek i stopkę charakterystyczną dla serwisu.
Chodziło o to, aby stworzyć jedną wersję kodu strony, który był taki sam dla wersji HTML i PHP, ale w wersji PHP pozwalałby dodatkowo umieszczać indywidualne nagłówki i stopkę. Problem polegał na tym, że trzeba było ukryć kod PHP na stronie HTML, ale nie mógł być ukryty na stronie PHP.
W pewnym sensie jedno wykluczało drugie i zwykły komentarz nie zdawał tutaj egzaminu, bo gdyby został zastosowany w wersji PHP, ukryłby również dołączany fragment za pomocą include(). Można sobie jednak poradzić z tym problemem względnie prosto. Wystarczy wkleić poniższy kod na taką "dwusystemową" stronę:
<!--
<?
echo "--".chr(62);
include("dolaczana.php");
echo chr(60)."!-- ";
?>
-->
Gdy strona ma rozszerzenie .html całość umieszczona jest w komentarzu i przeglądarka "nie widzi" kodu. Jednak gdy strona ma rozszerzenie PHP, wtedy wnętrze komentarza zostaje "wykonane", a więc znaki o kodach 62 i 60 przekształcane są na nawiasy trójkątne, co powoduje dodatkowe zamknięcie komentarza na górze i otwarcie na dole. W wyniku czego dołączany fragment strony staje się widoczny.
Można oczywiście zamykać komentarze na dołączanej stronie, ale nie zawsze jest to możliwe, jeżeli nie ma możliwości ingerowania w dołączane treści.