PHP uygulamasına Gelen Javascript Talebini Belirlemek

25 Ağu

Bir PHP uygulamasına gelen GET, POST gibi talepler eğer Javascript üzerinden geliyorsa bunu anlamak bazı durumlarda işimizi kolaylaştırmaktadır. GET taleplerini karşılamakta bir sorun yaşamayız fakat POST taleplerinde Javscript ile giden Header bilgisinde $_POST[‘name’] şeklinde query string değerini alamayabiliyoruz.

O halde duruma göre işlem yapabilmek için önce talebin Javascript yani XMLHttpRequest olup olmadığını anlamalıyız. Bunun için örnek bir sınıf yazarak durumu anlamaya çalışalım. Örnek bir app.php dosyasının içeriğini aşağıdaki şekilde belirleyelim.


class Request{
      public static function IsAjaxRequest(){
              return isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
                     $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest' ;
      }
}

if(Request::IsAjaxRequest())
   echo("Ajax");
else
   echo("Not");

Bu PHP uygulamasını internet tarayıcımızdan direkt olarak çağırdığımızda ekrana “Not” şeklinde çıktı verecektir. Eğer bir Javascript uygulamasından talep gönderecek olursak “Ajax” şeklinde sonuç alırız.

 $.ajax({
     url:"app.php",
     type: "GET",
     success: function(data){
          console.log(data);
     }
 })

Çalışan uygulama

http://www.bayramucuncu.com/ornek/app.php
http://www.bayramucuncu.com/ornek/app.html

DİKKAT: Eğer IIS üzerinden PHP uygulaması çalıştırıyorsanız bu yöntem çalışmayacaktır. Windows ortamında IIS üzerinden PHP 5.3 ile yaptığım denemede bunu fark ettim. Bunun sebebi $_SERVER içindeki değişkenlerin PHP tarafından değil HTTP sunucusu tarafından oluşturulmasıdır. IIS HTTP sunucusu HTTP_X_REQUESTED_WITH başlığını oluşturmadığından IIS üzerinde çalışmaz. Apache HTTP sunucusu HTTP_X_REQUESTED_WITH  değerini oluşturmaktadır.

Windows IIS üzerinde PHP çalıştırmak

20 Ağu

Windows platformu üzerinde PHP çalıştırmak için birkaç farklı yöntem vardır. Windows üzerine Apache, XAMPP gibi uygulama sunucuları kurmak bu yöntemlerden bazılarıdır. Ancak bir diğer yöntem, Windows platformunun kendi Web sunucu uygulaması olan IIS üzerinden PHP uygulamalarını çalıştırmaktır. Bu işlem için windows üzerine PHP yazılımının son sürümünü kurmak gerekmektedir. Bu işlemi Web Platform Installer aracı ile kolayca gerçekleştirebiliriz.

Microsoft Web Platform Installer aracını buradan indirebilirsiniz.

Web Platform Installer yüklendikten sonra IIS penceresinde Yönetim bölümünde logosu görünecektir.

IIS Logo
IIS Logo

Uygulamayı çalıştırdığımızda açılan pencerede arama kutusundan “PHP “şeklinde bir arama yaparak yüklenebilir durumdaki son sürümleri listeleyebiliriz.

PHP Son Sürüm
PHP Son Sürüm

Listeden istediğimiz versiyonu seçip kurulumu yaptıktan sonra PHP uygulamalarımız IIS üzerinden çalıştırabilir hale gelmiş olacaktır. Her ne kadar otomatik olarak yükleme yapılmış olsa da bazı kontrolleri yapmamız gerekmektedir. Bunlardan biri IIS ana penceresinden “İşleyici Eşleşmeleri” veya “Handler Mapping” menüsünden PHP handler eşleşmesi kontrol edilir. Grekli eşleşme yapılmışsa IIS artık PHP taleplerini yakalayıp çalıştırabiliyor demektir.

Windows üzerinde IIS çalıştırdığımız dizin (inetpub/www) içerisine bir php dosyası atarak testimizi gerçekleştirebiliriz.

NOT: Burada dikkat etmemiz gereken konulardan biri PHP ile daha önceden Apache gibi sunucularda çalışmış olanlar Apache’ye özgü özellikleri IIS üzerinde çalıştıramayacak olmasıdır. Örneğin .htaccess dosyası IIS üzerinde değerlendirilmez çünkü Apacahe tarafına ait bir özelliktir. Yada Apache HTTP sunucusu üzerinde oluşturulan bazı başlık (Hearder) bilgileri IIS üzerinde oluşturulmayabilir. Bu gibi konulara dikkat etmek gerekmektedir.