CodeIgniter3++

Kategori: Codeigniter, Php, Referanslar
Tarih: 16th Mart 2015

Codeigniter framework geliştiricileri 2.2. versiyondan sonra artık geliştirme yapmayacaklarını duyurmuşlardı. 2015 Ocak itibariyle bu karar değiştirilmiş. CI3 versiyonu RC sürümleriyle yayınlanmaya başladı. Şuan RC3 yayında. Bende şimdiye kadar yaptığım çekirdek geliştirmelerini ve bazı kütüphaneleri ekleyerek bir temel proje oluşturmaya karar verdim. Bu proje aşağıdaki ekleri ve geliştirmeleri içermektedir. Projeyi buradan indirebilirisiniz.

 

 

1- Serbest Kütüphane

Çeşitli işlermler için yazılmış fonksiyonlar bu kütüphaneye eklendi. Bu kütüphane CI yüklenmeden önce yüklenir ve CI’dan bağımsız olarak uygulamanın istenilen yerinde kullanılabilir. Akla hemen neden helper geliştirilmedi de böyle bağımsız bir kütüphane geliştirildi sorusu gelecektir. Bunun kütüphanedeki bir çok fonksiyon için farklı cevapları var. Bir örnek verelim. Flood kontrol fonksiyonu. Bu, sisteminizi flood saldırılarına karşı korumak için yazılmış bir fonksiyondur. Bu fonksiyon helper içinde tanımlansa idi bir saldırı bile olsa bu fonksiyonu kullanmak için CI’ ın yüklenmesi gerekecekti. Yani saldırılarda bile CI yüklenecekti. Zaman kaybını öncelemek için flood_kontrol fonksiyonu CI yüklenmesinin önüne alınmıştır.

 

2- Güvenlik Geliştirmeleri

  • İlk güvenlik geliştirmesi flood kontrolüdür. Sistem flood saldırılanı tespit ederek uygulamanızın yüklenmesini durdurur. Bu konu ile ilgili ayarı “./kutuphane.php:157” dosyası içinden yapabilirsiniz.
  • Oku fonksiyonu. Serbest kütüphane içinde bulunan bu fonksiyon istenilen modda okuma yapıp okuduğu veriyi “sql enjeksiyon”, “xss saldırısı” gibi güvenlik açıklarından temizler. Bunun yanı sıra faklı kaynaklardan istediğiniz veriyi okumanıza yardımcı olur. Ek olarak Yaz fonksiyonunuda bununlar birlikte inceleyebilirsiniz.
  • Captcha yani resimdeki karakterler koruması. CI’ın mevcut fonksiyonlarının üzerine geliştirilen bu koruma ile sayfanız içersinde herhangi bir yere “<div id=’captcha-alan’ w=’300′ h=’35’></div>” kodu ile istediğiniz boyutta bir captcha oluşturabilirsiniz. Cache kullansanız bile uygulama bu alana dinamik olarak captcha resmini yerleştirip kullanıcıya “captcha” anahtar kelimesi ile resimdeki karakterleri içeren stringi session olarak atayacaktır.
  • Form ID. Bu koruma ile uygulama tarafından form_open() fonksiyonu ile oluşturduğunz her form içine, o form için özel oluşturulmuş bir ID eklenir. Bu şekilde form kopyalanması, formların offline olarak doldurulması, farklı sitelere sizin formunuzun gömülmesi gibi işlemlerin önüne geçmiş olursunuz. Çekirdek geliştirmesi ile “$this->form_validation->run()” kodunu çalıştırırken Form ID’niz de otomatik olarak kontrol edilecektir. ID doğrulanamaz ise kullanıcıya hata sayfası gösterilecek ve log dosyasına hata yazılacak.

 

3- Çoklu ve Dinamik Dil Desteği

Bu destek sayesinde veritabanınızdan dinamik yüklediğiniz dil bilgileriyle uygulanızı istediğiniz her dilde sunabilirsiniz. Sistem dil bilgisini url ‘in ilk segmentinden tespit eder. Bu dil bilgisi iki harfli olmalıdır. “http://siteniz/tr/” yada “http://siteniz/en/” gibi. Desteklediğiniz dilleri veritabanında dil tablosuna eklemelisiniz. Ayrıca dil klasöründe “<modül ismi>_lang.php” dosyası içine dil verilerinizi eklerseniz, sistem dili tespit ettikten sonra lang dosyasını otomatik yükleyecektir. Mesela “http://siteniz/tr/panel/sinif/method” adresine gitmek istediğinizde sistem turkce klasöründeki panel_lang.php dosyasını yükleyecektir. Siz view içerisinden yeni bir yükleme işlemi yapmaya gerek olmadan istediğiniz dili kullanabilirsiniz.

 

4- Modüler Yapı

CI üzerinde modüler olarak sisteminizi geliştrimenizede izin verilmiştir. Uygulama kullanıcının geldiği url den hangi modüle gitmek istediğiniz tespit eder ve ilgili yüklemeleri ona göre yapar. Örneğin “http://siteniz/tr/panel/sinif/method” adresine gitmek istediğinizde sistem “./tema/panel/” adresindeki temayı dikkate alacak ve dil olarak da türkçe dilini yükleyecektir. Site ve Panel isminde iki adet modül olduğu varsayılmıştır.  Bu konu ile ilgili ayarı “./kutuphane.php:123” dosyası içinden yapabilirsiniz.

 

5- Tema Motoru

CI yapılan geliştirmelerle kullanıcının farklı modüller ve diller için farklı temlar kullanmasına ve her modül için birden fazla tema yükleyebilmesine izin vermektedir. Şöyle ki CI bir temanın seçilebilmesi için sistem ikiparametreyi dikkate almaktadır. İlki modül ismi. “./tema” klasöründe modül isimleriyle aynı isimde ve sayıda klasör bulunmalıdır. “./tema/panel” ve “./tema/site” gibi. Sistem gelen url’e bakarak tema klasörü içerisinde hangi klasörü dikkate alacağını otomatik seçecektir.  “http://siteniz/tr/panel/sinif/method” adresi için “./tema/panel/” i tema klasörü olarak kabul etmek gibi. İkinci parametre ise veritabanında yüklenecek tema ayarının tutulduğu kayıt. Veri tabanında ayar tablosu altında ilgili modül  için hangi temanın yükleneceği ayarı tutulur. Bu kayıda erişmek için anahtar kelime “<modül ismi>_tema” şeklindeki kayıt adıdır (panel_tema yada site_tema gibi). Karmaşık görünse de değil. Hemen bir örnekle anlatalım.

 

Tema klasörünün ağaç yapısının aşağıdaki gibi olduğunu kabul ediyorum.

/tema

—–/panel
———-/varsayilan
———-/panel_icin_yeni_tema

—–/site
———-/varsayilan
———-/site_temasi2

 

Veri tabanındaki ayar tablosunda da aşağıdaki veriler vardır.

id dil ad veri aktif
1 0 site_tema varsayilan t
2 0 panel_tema site_temasi2 t

 

“http://siteniz/tr/panel/sinif/method” adresine gitmek isteyen bir kullanıcıya “./tema/panel/varsayilan/views” klasörü view klasörü olarak gösterilecektir. Bir başka deyişle $this->load->view(‘deneme’); komutunu yazdığımız bir sayfada yukarıdaki adres için gelen kullancıya “./tema/panel/varsayilan/views/deneme.php” sayfası view olarak yüklenecektir.

 

Her bir tema klasöründe css, js, less ve view klasörleri varsayılan olarak olmalıdır. Daha fazla gerekirse resim, dosya gibi klasörler de ihtiyaca göre temayı kodlayan tasarımcı tarafından eklenebilir. Ayrıca views içindede varsayilan adında bir klasör olmalıdır. Bu klasör bir sonraki paragrafta anlatılacak olan js, css ve less dosyaları içinde php kodu yazabilmemiz için gereklidir. Saydığımız dosyalar direk statik bir dosya olarak eklenmez. Bunun yerine CI üzerinden yüklenir. Bu klasör eski bir temadan direk kopyalanabilir. Peki ama neden js dosyasında php kodu yazmak isteyelim? En basitinden dil desteği için. Js dosyasındaki string ifadeleri CI dil fonksiyonu aracılığıyla yazdırırsak sistem dili otomatik yüklediği için bizim istediğimiz dildeki js dosyasınıda otomatik olarak oluşturacaktır. Standart bir tema dosyasında olması gereken yapı aşağıdadır.

 

tema_adi
—–/css
—–/js
—–/less
—–/views
———-/varsayilan
—————/css.php
—————/degiskenler.php
—————/dosya.php
—————/javascript.php
—————/less.php
Bu yapıyı oluşturduktan sonra istediğimiz dosyamızı istediğimiz isim ile ekleyebiliriz. Herşey artık bizde. Mesela css içerisine sitil.css js icerisinede kutuphane.js, less içerisinede sitil.less dosyasını oluşturduğumuzu düşünelim. Bu dosyalarımızı view sayfamıza aşağıdaki gibi ekleme yapabiliriz.

 

<!– Tema css kütüphanesi –>
<?=css(‘sitil.css’) ?>

<!– Tema less kütüphanesi –>
<?=less_file(‘sitil.less’) ?>
<!– .less dosyalarını çalıştıracak js kütüphanesi –>
<?=less() ?>

<!– Tema js kütüphanesi –>
<?=javascript(‘kutuphane.js’) ?>

 

Son olarak bu dosyaların içerisinde php kodu kullanmayı örnekleyelim:


function facebook_giris()
{
var on = $( "#beni_hatirla:checked").length == 1 ? 'on' : '';
alert("<?=lang('hatirla_mesaj') ?>");
window.location = "<?=url('panel')?>anasayfa/facebook?beni_hatirla="+on;
}

CI less ile uyumludur.

 

6-Form elemanları

Form elemanları için yine önemli geliştirmeler yapılmıştır. Buradan bu konu hakkındaki yazıya ulaşabilirisiniz. Bunların yanı sıra çoklu dosya yükleme ve zengin metin editörüde kullanabilirsiniz. Örnek kod aşağıdadır.


<?php angular_editor('aciklama', '<b>html</b> Test') ?>

<?php coklu_dosya_yukleme('resimler', '', dosya_turu('site', 'id')) ?>

“dosya_turu(‘site’, ‘id’)” bu fonksiyon bir numara geri döndürür. coklu_dosya_yukleme(,,) fonksiyonunun 3. parametsi olarak fonksiyona gönderilir. Bu parametre ile çoklu dosya yükleme aracı dosyaları hangi dizine yükleyeceğini belirler.  Örnekteki dosyalar “./dosya/site/” klasörü altına yıl/ay/gün dizini takip olarak yüklenecektir. Dosya türleri hakkındaki ayarlamaları “./kutuphane.php:992” dosyasından yapabilirsiniz.

 

7- Kullanıcı girişi

Örnek olarak bir tema ve kullanıcı girişi tasarlanmıştır. Tasarlanan tema tüm mobil cihazlarda da tam uyumlu çalışmaktadır. Ayrıca kullanıcının yetkili olup olmadığı kontrol edilip kullanıcı girişi yapmadan panel klasörü altındaki hiç bir sayfaya giriş yapmasına izin verilmemektedir. Sadece giriş ekranına erişebilmesi için “Anasayfa” controller’ına ve js, css, less dosyalarına erişebilmesi içinde proxy klasörüne izin verilmiştir. Bu konu ile ilgili ayara “.\application\config\config.php:7” dosyasından ulaşabilirsiniz.

 

8- Raporlamalar

Ek kütüphaneler ile CI üzerinden Word, Excel ve Pdf raporlar alabilmeniz sağlanmıştır. Bunlarla ilgili birer örnek “http://siteniz/tr/panel/rapor/excel”, “http://siteniz/tr/panel/rapor/word” ve “http://siteniz/tr/panel/rapor/pdf” adresinde bulabilirsiniz.

 

9- Cache

Cache kütüphaneleri de daha kolay bir cache yönetimi için geliştirilmiştir. Bu şekilde cache yapılan dosya url dizini ile aynı şekilde cache dosyasında tutulmaktadır. Dosya adında da dil bilgisi ayrıca indexlenmiştir.

 

10- Geliştirici ayarlamaları ve Özel ayarlar

Geliştirme esnasında ve sistem kullanıma başladıktan sonra sistemi hızlandırma adına bazı ayarlar size bırakılmıştır. Bu ayarları sabit tanımlamaları ile “./kutuphane.php:32” den itibaren bulabilirsiniz. Örneğin sistem dil bilgisini her seferinde yeniden veri tabanından okumak yerine bir sefere mahsus okuyup sizin “VERI_CACHE” sabiti ile belirlediğiniz veri kaynağına yazar. Sonraki her ziyaretçi için bu kaynaktan okur. Burada buna benzer bir sürü ayar bulabilirsiniz.

 

11- Ek kütüphaneler

CI içerisine sizin kullanımızı kolaylaştıracak bir sürü ek kütüphane konulmuştur. Jquery, JquqryUI, Bootstrap, Bootstrap notify, Openlayers, Less… Bu kütüphaneler view dosyası içerisine aşağıdaki koldlarla eklenebilir.


<?=jquery() ?>

<?=bootstrap() ?>

<?=bootstrap_notify() ?>

<?=openlayers() ?>

<?=ui() ?>

<?=angular() ?>

<!-- Framework varsayılan js kütüphanesi -->
<?=javascript() ?>

<!-- Framework varsayılan css kütüphanesi -->
<?=css() ?>
<!-- Tema css kütüphanesi -->
<?=css('sitil.css') ?>

<!-- Framework varsayılan less kütüphanesi -->
<?=less_file() ?>
<!-- Tema less kütüphanesi -->
<?=less_file('sitil.less') ?>
<!-- .less dosyalarını çalıştıracak js kütüphanesi -->
<?=less() ?>

<?=google_analytics() ?>

 

12- Facebook API

CI içerisine Facebook API v4.4 de eklenmiş ve kullanıcı girişi için örnek bir kütüphane tasarlanmıştır. Paneli inceleyerek detayları görebilirsiniz.

 

Not:

  • SQL dosyası kök dizindedir. Veritabanı olarak Posgresql 9.1.15 kullanılmıştır. Kendi Veri Tabanı Yönetim Sisteminize göre sql kodlarını revize etmeniz gerekebilir. Veritabanı bağlantı ayarlarınada “./kutuphane.php:96” dosyasından erişebilirsiniz.
  • Sistem varsayıla olarak APC cache kullancak şekilde planlanmıştır. APC desteklemeyen sistemler için VERI_CACHE sabitine session değeri verilebilir. “./kutuphane.php:56”
  • APC durumunun incelenmesi için “http://siteniz/apc.php” adresini ziyaret edebilirsiniz.
Yorumlar: 2 » tags: , , , ,

Ücretsiz Emlak Scripti

Kategori: Php
Tarih: 23rd Temmuz 2013

Nette dolaşırken bulduğum ücretsiz ve gayet kapsamlı bi emlak scripti. Varsayılan arayüzüde güzel. Eğer istenirse yeni bir arayüz ile piyasada 3-4 bin liraya satılan sitelere taş çıkarır. Buradan indirebilirsiniz.

Yorumlar: 8 » tags: , , ,

Php yazma standartları

Kategori: Php
Tarih: 17th Haziran 2013

Php programlamaya yeni başlayan yada başlayacak arkadaşların işine yarayabilir. Php’de class isimleri nasıl olmalı, açıklama satırları tanımlama standartı nedir gibi küçük notların taranmış hali burada

Açık kaynak web teknolojileri

Kategori: Jquery, Php
Tarih: 6th Haziran 2013

Html, css, javascript ve php konularından son zamanlarda çoğunlukla kullanılan teknolojilerden aklıma gelenleri yazdım. Özellikle bu sene mezun olup kendini web alanında geliştirmek isteyen arkadaşların çok işine yarar diye düşünüyorum. İş başvurularında da işe yarayacaktır. PDF burada. İstenilirse örnek kodu yine burdan paylaşırım.

Not: Mülakatlarda ingilizce kısaltma şeklinde sorulacağını düşündüğümden bildiklerimin ingilizcelerini de yazdım.

Yorumlar: 2 »

Dpü wireless misafir modülü

Kategori: Php, Referanslar
Tarih: 11th Mart 2013

Dumlupınar Üniversitesi kampüs içi kablosuz ağlara miafir kullanıcıların güvenli bir şekilde bağlanabilmesi için geliştirilmiş bir uygulama. Sistem bağlanmak isteyen kullanıcının bazı kimlik bilgilerini isteyip nufus vatandaşlık işleri servisinden doğrulama yapıyor. Eğer geçerli ise üniversitein ldap servisine kullanıcının istediği saat kadar bağlanabileceği bir üyelik oluşturuyor. Süre dolunca da üyeliğini iptal ediyor.

 

Teknik Not: php ve wcf bağlantı sıkıntılarından dolayı web sunucusunun nvi servisine erişimi için dönüştürücü bir masaüstü uygulaması da geliştirilmiştir.

1 2

DPÜ Kurumsal Web Sitesi İçin Tema

Kategori: Php, Referanslar
Tarih: 11th Mart 2013

tema1

 

Arayüz Dpü tarafından çizilmiştir. Tarafımdan kodlanarak güncelleme olarak sisteme eklenmiştir.

 

Dumlupınar Üniversitesi Kurumsal Web Sitesi

Kategori: Php, Referanslar
Tarih: 11th Mart 2013

Arayüz Dpü tarafından çizilmiştir. Programlaması bana aittir. Standart özelliklerin üzerine tema motoru, dil motoru ve cache sistemi vardır. P4 3.0 işlemci ve 1 Gb ram sanal makine ile sayfayı saniyede yaklaşık 1000 sefer yükleyebiliyor.

İçerik Yönetim Sistemi V4.0

Kategori: Php, Referanslar
Tarih: 15th Ağustos 2012

Versiyon 4 artık hazır!

Çoğu paneldeki standart özelliklerin üzerine :

-Tümleşik; Web sitesi, Mobil site ve Facebook uygulamsı yönetimi

-Kişiselleştirilebilir kısayollar, tablolar, menüler

-Her kayıt için karşılaştırmalı sayaç (Facebook uyg., Mobil Site ve Web sitesi karşılaştırması )

-Sınırsız dil ekleyebilme

-Verilerinizi ve istatistiklerinizi pdf, jpg vs. olarak kaydedebilme

-Arama motoru dostu kodlama

-Her sayfa için anahtar kelimeler ve açıklamalar

-Codeigniter yapısı ile çok hızlı ve güvenli

-Cache.

-Mail listesi.

-Yönetici yetkilendirme

-Kayıtları yorumlayabilme

-Güncelleme

-Yedekleme

-Uzman kullanıcılar için sql ile veritabanına müdahale edebilme sorgulama yapabilme.

Ve daha fazlası…

Buradan demoyu inceleyebilirsiniz (Kullanıcı: demo Şifre: demo)

Codeigniter database cache’e memcache eklentisi

Kategori: Codeigniter, Php
Tarih: 15th Ağustos 2012

Codeigniter’ın son sürümünde artık database cache özelliği var. İsterseniz kayıtları her seferinde veritabanından çekmek yerine bir dosyaya cache yapıp oradan okuyabiliyor. İşin kötü yanı dağıtık bir uygulamanız varsa her makine sadece kendi cache dosyalarına erişebilir. Bunun çözümü olarak; codeigniter’ın cache fonksiyonlarını, -istenirse- memcache sunucusuna da yazabilecek şekilde düzenledim.

ilk olarak  ./application/config/database.php dosyasına aşağıdaki ayarları ekleyelim ve $db[‘default’][‘cache_on’] = TRUE yapalım.

/* Memcache Eklentisi */
$db[‘default’][‘memcache’] = TRUE;
$db[‘default’][‘dbmchost’] = ‘localhost’;
$db[‘default’][‘dbmcport’] = 11211;
$db[‘default’][‘dbmctime’] = 2592000;

sonra ./system/database/DB_cache.php dosyasını buradaki dosya ile değiştirin (Her ihtimale karşı mevcut dosyayı yedekleyin). Artık veritabanınız memcache sunucusuna cache yapılıyor.

Not: Testleri Codeigniter 2.12 sürümünde yapılmıştır.

Yorumlar: 0 »

Arıza Takip Sistemi

Kategori: Php, Referanslar
Tarih: 11th Mayıs 2012

Kütahya il özel idaresi, Bilgi İşlem müdürlüğü için içerik yönetim sistemi üzerinde geliştirdiğim Arıza Takip Sistemi.

Senaryo: Kullanıcı ana ekrandan arıza bildirimi yapacak ve tamiri gerçekleşmemiş işlerin listesini görecek. Kullanıcının bildirmiş olduğu arızalar önce birim müdürünün ekranına düşecek. Birim müdürü  arızaları öncelik belirleyerek onaylayabilecek yada reddedebilecek. Onaylanmış arızalar öncelik sırasına göre teknik servis ekranına düşecek. Tamir gerçekleştikten sonra teknik servisde tamir onayı yapacak. Sistem kişiler bazında, birimler bazında ve arıza türü bazında grafiksel raporlama yapabilecek (En arıza birim, en arıza personel olayı 😛 ).

Sistem gerçeklenmiş olup ekranlar aşağıdadır.

Optimization WordPress Plugins & Solutions by W3 EDGE