Kategoriler
Kodlama

SHTML(Server Side Includes) içerisinde PHP kodu çalıştırmak

.shtml, .stm, .shtm(SSI) dosyalarında PHP kodu çalıştırmak için bir yöntem.

Server Side Includes(SSI) yani Linux sunucularda varsayılan olarak .shtml, .stm, .shtm olarak çalışabilen, temelde HTML ile aynı fakat kendine özgü sunucu taraflı kodları da çalıştıran dosya içerisinde PHP kodlarını çalıştırmak aslında çok kolay, bunun için herhangi bir sunucu ayarı veya .htaccess düzenlemesi gerekmez ki önermiyorum da.

Bazen sunucu bir hata veya olay sonrasında kullanıcıya veya sorguya karşılık bir SSI dosyası gösterebilir, bu örneğin 400/404/403/401 gibi hata sayfaları da olabilir, bu durumda SSI dili ile yapılabilenler sınırlı olduğu için daha gelişmiş bir dil olan PHP ile gelen sorgu/ziyaretçiyi hem farklı yerlere yönlendirmek, hem tanımak ve bilgi edinmek veya ona özel farklı veriler göstermek için bu yöntemi kullanabilirsiniz.

Neden?

Bu dilin veya sistemin Apache sunucuda çalışırken diğerlerinden farklı olarak kendine has özellikleri ve kabiliyetleri mevcut olsa da çok güvenilir ve her şeyi yapabileceğiniz bir dil olduğu söylenemez. .shtm dosyaları genelde sunucunun varsayılan hata sayfalarında çalışır ve içerisinde bir PHP kodu çalıştırmak istiyorsanız öncelikle sunucuda Apache mod_include modülünün aktif olduğuna emin olmalısınız, bunun için eğer gerekli ise ana dizindeki .htaccess dosyanız içerisine aşağıdakini eklemek yeterli olacaktır:

Options +Includes

Şimdi hazırız, PHP kodunun çalışmasını istediğiniz .shtml yani Server Side Includes dosyası içerisinde PHP kodlarınızın bulunduğu dosyayı include etmeniz sonrası her şey çalışacaktır, örnek:

<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="utf-8"/>
<!-- Aşağıdaki .php dosyası burada çalışacaktır. -->
<!--#include virtual="/benimphpdosyam.php"-->
<script type="text/javascript">/*** WOLKANCA@GMAIL.COM | SRV
 __         __
/  \.-"""-./  \
\    -   -    /
 |   o   o   |
 \  .-'''-.  /
  '-\__Y__/-'
     `---`
***/</script> 
<title>Örnek SHTML 🦹‍♂️</title>
</head>
<body>
<h1>Bu bir SHTML dosyasıdır.</h1>
</body>
</html>

Burada eklediğimiz kod: <!--#include virtual="/benimphpdosyam.php"-->, include ederken dikkat etmeniz gereken şey SSI’de include mantığı biraz farklı yani daha doğrusu kullandığı yol şekli mutlak değil / ise ana dizindir ve / başlangıcı olmadan çalışmaz, public_html klasörü içerisinde örneğin dosya tarayıcıda açılır şekilde adresi ne ise adres odur. Daha fazla bilgi için ana kaynak: https://httpd.apache.org/docs/2.4/howto/ssi.html ve bir diğeri https://www.w3.org/Jigsaw/Doc/User/SSI.html

Twitter’dan takip etmeyi unutmayın, kolay gelsin