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.

Blog Sayfam 3 Yaşında

19 Ağu

Bugün 19 Ağustos 2014. Bilgisayarımın tozlu arşivlerinde kaybolup gitmesin diye paylaşmayı amaçladığım yazılarımı yayınladığım sayfam www.bayramucuncu.com artık 3 yaşında. Geride bıraktığım üç yılda sayfamı takip eden okuyuculara teşekkürlerimi sunuyorum.

Gün geçtikçe artan ziyaretçi sayısı, yazılarımı her yönüyle iyileştirmeye itiyor beni. Türkçe dil kurallarına uygun, doyurucu, sade ve anlaşılabilir içerik oluşturmaya artık daha çok dikkat etmeye başladım. Her ne kadar dikkat etsem de sürç-i lisan eylediysek affola.

Önümüzdeki yılda yeni yazılarda buluşmak dileğiyle hoşçakalın.

Coğrafi Bilgi Sistemleri Uygulaması – Geoserver

16 Ağu

geoserver-logo

GeoServer, coğrafi verilerin dış dünyaya sunulması için hazırlanmış açık kaynak kodlu bir java uygulamasıdır. GeoServer ile coğrafi verileri işlemek, paylaşmak ve düzenlemek mümkündür. GeoServer ile paylaşılan verileri Google Earth gibi masaüstü uygulamalarda kullanmak mümkün olduğu gibi Open Layers, Google Maps ve Bing Maps gibi
web tabanlı haritalara da kullanmak mümkündür.

GeoServer uygulaması, OGC(Open Geospatial Consortium) uyumlu olup OGC standartlarında Web Map Service(WMS), Web Feature Service(WFS) ve Web Coverage Service(WCG) gibi hizmetleri sunabilmektedir. Bu sayede platform bağımsızlığı sağlanıp farklı uygulamaların birbiri ile konuşması mümkün hale gelmektedir.

GeoServer, birçok coğrafi veri kaynağı ile uyumlu çalışabilecek şekilde tasarlanmıştır. Örneğin:

  • PostGIS
  • Oracle Spatial
  • ArcSDE
  • DB2
  • MySQL
  • Shapefiles
  • GeoTIFF
  • ECW

Geoserver ile birçok standartta veriler üretmek de mümkündür. Örneğin:

  • KML
  • GML
  • GeoRSS
  • PDF
  • GeoJSON
  • JPEG
  • GIF
  • SVG
  • PNG

Yukarıda bahsettiğimiz bileşenlerin düzgün işleyen bir iş kuralına göre konumlandırılması gerekmektedir. Üretilen coğrafi verileri depolanmasından, bir uygulamada vücut bulmasına kadar ilerleyen bir dizi adım söz konusudur. Peki o halde Geoserver bu sistemin neresinde durur?

Geoserver Uygulama Mimarisi
Geoserver Uygulama Mimarisi

Şemada ifade edildiği üzere Geoserver, veri kaynağı ile uygulama arasında konumlanmış bulunuyor. Tabi arada bir de GeoWebCache denilen sistem iyileştirme eklentisi bulunmaktadır.

Coğrafi veri kaynağına herhangi bir CBS(Coğrafi Bilgi Sistemleri) Masaüstü uygulaması ile erişmek mümkündür. Bu uygulama açaık kaynak kodlu QGGIS olabileceği gibi ticari ürünlerden ArcGIS v.s de olabilmektedir. Masaüstü uygulamaları kullanılırken Geoserver kullanmamıza gerek yoktur.

Web tabanlı harita uygulamalarında verilerimizi kullanmak için piyasada bulunan açık kaynak veya ticari uygulamalardan faydalanabiliriz. Örneğin OpenLayers, Esri API, Google Maps, Bing Maps gibi haritalar üzerinde coğrafi verilerimizi kullanabilmekteyiz.

Geoserver WMS Yayını ve OpenLayers
Geoserver WMS Yayını ve OpenLayers

 Nerelerde Kullanılır?

Geoserver uygulamasını coğrafi veri depolama ve bu veriyi paylaşma ihtiyacı olan şirketler veya kamu kurumları kullanabilir. Ülkemizde en yoğun kullanım alanları olarak bazı bakanlıklar, belediyeleri ve altyapı kurumlarını görmekteyiz. Belediyelerde imar, yol, numarataj ve adres bilgisi gibi birçok coğrafi veri depolanmaktadır. Altyapı kurumlarında da tüm altyapı bilgisi koordinatlı bir şekilde saklanmakta ve sunulmaktadır.

(CBS)Coğrafi Bilgi Sistemleri’nde Geoserver’ın Yeri

Dünyada ve ülkemizde hızla yaygınlaşan Coğrafi Bilgi Sistemlerine karşı ilgi giderek artmaktadır. Üniversitelerde bu konu üzerine önlisans, lisans ve yüksek lisans programları açılmaktadır. CBS uygulamalarının yaygınlaşmasıyla ürün kullanım ihtiyacı da belli bir maliyeti beraberinde getirmektedir. Ticari ürünleri satın alma gücü olmayan kurum ve şirketler doğal olarak açık kaynak kodlu Geoderver veya benzeri ürünlere yönelmektedir. Geoserver bu nedenle azımsanmayacak oranda bir kullanıcıya sahiptir.

 Özet

Eğer coğrafi verilerinizi para harcamadan OGC standartlarında dış dünya ile paylaşmak istiyorsanız Geoserver sizin için çok pratik bir çözüm olacaktır.