PHP’de Çok Boyutlu Dizileri Sıralamak

Filed in PHP | Programlama Leave a comment

PHP çok boyutlu dizileri sıralamak için array_multisort işlevi kullanılır. Elbette bu işlev tek satırda çalışmamakta öncesinde dizinin belirli bir biçime getirilmesi gerekiyor. O konunun detayına hiç girmeden php.net’deki şu arkadaşın yazmış olduğu işlev bu işlemi çok kolaylaştırıyor. Bu makale biraz üzümünü ye bağını sorma şeklinde oldu ama amerikayı yeniden keşfetmeye gerek yok :) gelelim işleve ve kullanımına;

function array_msort($array, $cols)
{
    $colarr = array();
    foreach ($cols as $col => $order) {
        $colarr[$col] = array();
        foreach ($array as $k => $row) { $colarr[$col][‘_’.$k] = strtolower($row[$col]); }
    }
    $eval = ‘array_multisort(‘;
    foreach ($cols as $col => $order) {
        $eval .= ‘$colarr[\''.$col.'\'],’.$order.‘,’;
    }
    $eval = substr($eval,0,-1).‘);’;
    eval($eval);
    $ret = array();
    foreach ($colarr as $col => $arr) {
        foreach ($arr as $k => $v) {
            $k = substr($k,1);
            if (!isset($ret[$k])) $ret[$k] = $array[$k];
            $ret[$k][$col] = $array[$k][$col];
        }
    }
    return $ret;
}
// Sıralanacak dizi tanımlanıyor
$arr1 = array(
    array(‘id’=>1,‘name’=>‘aA’,‘cat’=>‘cc’),
    array(‘id’=>2,‘name’=>‘aa’,‘cat’=>‘dd’),
    array(‘id’=>3,‘name’=>‘bb’,‘cat’=>‘cc’),
    array(‘id’=>4,‘name’=>‘bb’,‘cat’=>‘dd’)
);
// array_msort işlevi sıralama ölçütleri bir dizi şeklinde tanımlanarak çağırılıyor…
$arr2 = array_msort($arr1, array(‘name’=>SORT_DESC, ‘cat’=>SORT_ASC));

, , , ,

Codeigniter Form Doğrulama

Filed in Codeigniter | PHP | Programlama | Web Tasarım Leave a comment

Codeigniter ile geliştirme yaparken form doğrulama işlemlerinde öncelikle form_validation kütüphanesini yüklemeniz gerekmektedir. Form gönderildikten sonra hatalar oluşması durumunda formun kullanıcıya girmiş olduğu veriler silinmeden yeniden sunulması için ihtiyaç duyulacak işlevler ise form_helper kütüphanesinde bulunmaktadır. Bu kütüphaneleri şu şekilde projenize dahil edebilirsiniz.

$this->load->helper(‘form’);
$this->load->library(‘form_validation’);

Kütüphaneleri yükledikten sonra bu kütüphane ile ilgili ayarlar ve kuralların belirtilmesi gerekiyor. Basit bir kullanıcı kayıt formunda kullanılabilecek form ayar ve kuralları şöyledir.

$this->form_validation->set_error_delimiters(‘<span class="input-notification error png_bg">’, ‘</span>’);
$this->form_validation->set_rules(‘username’, ‘Kullanıcı Adı’, ‘trim|required|min_length[5]|max_length[128]|xss_clean|callback_username_exist’);
$this->form_validation->set_rules(‘password’, ‘Şifre’, ‘trim|required|matches[passconf]|min_length[5]|max_length[64]|xss_clean’);
$this->form_validation->set_rules(‘passconf’, ‘Şifre’, ‘trim|required|min_length[5]|max_length[64]|xss_clean’);
$this->form_validation->set_rules(‘firstname’, ‘Ad’, ‘trim|required|min_length[3]|max_length[128]|xss_clean’);
$this->form_validation->set_rules(‘lastname’, ‘Soyad’, ‘trim|required|min_length[3]|max_length[128]|xss_clean’);
$this->form_validation->set_rules(‘displayname’, ‘Görünür İsim’, ‘trim|required|min_length[5]|max_length[128]|xss_clean’);
$this->form_validation->set_rules(‘email’, ‘E-Posta’, ‘required|valid_email|callback_email_exist’);

Bu kod parçacığında yapılanları kısaca açıklayalım. Öncelikle “set_error_delimiters” ile hatalar ekrana basılırken kullanılmasını istediğiniz html etiketler ve css sınıflar tanımlanmıştır. Ardından “set_rules” ile html formunda bulunan bütün girdi alanları için kurallar yazılır. Kurallar üç bölümden oluşmaktadır. İşlevin çağrılması için kullanılacak yapı şu şekildedir.

set_rules(‘girdi ismi’,‘girdi etiketi’,‘denetim işlevleri’)

Kullanılabilecek tüm denetim işlevlerine buradan erişebilirsiniz. Denetim işlevleri değer alarak özelleştirilebilmektedir. Örneğin:Girilen şifrenin doğrulamasını yapmak için yeni bir işlev yazmanıza gerek yoktur, eşleştirme kontrolünde kullanılan “matches[passconf]” işlevinde köşeli parantezler arasında eşleşecek diğer girdi ismini tanımlanabilmektedir. Ayrıca kendinize özgü denetim işlevi yazılabilmektedir. Örneğin buradaki “callbak_username_exist” işlevi veritabanında aynı kullanıcı adı ile başka bir kullanıcı olup olmadığını kontrol etmektedir. Bu işlev form denetimi yaptığınız controller sınıfı içerisinde tanımlanmış olmalıdır. Basit bir kullanıcı ismi varlığı kontrol işlevi şu şekildedir.

function username_exist($username)
{
$this->load->model(‘users_model’,‘User’);
if($this->User->getInfoByUsername($username) != false)
{
$this->form_validation->set_message("username_exist", "Kullanıcı Adı mevcut, lütfen farklı bir kullanıcı adı seçiniz.");
return false;
}else{
return true;
}
}

Form kontrolü ile ilgi tüm ayarlar ve kurallar düzenlendikten sonra “$this->form_validation->run()” işlevi çağrılarak formun kontrolü şu şekilde yapılabilmektedir.

if ($this->form_validation->run() == FALSE)
{
// Formda hata varsa yapılacak işlemler…
}else{
// Formda hata yoksa yapılacak işlemler
}

, ,

Codeigniter URL Yapısından index.php Kaldırma

Filed in Codeigniter | Genel | PHP | Programlama Leave a comment

Codeigniter URL yapısını SEO için düzenlemek gerektiğinde index.php bağlantısının tüm URL’lerden kaldıması için yine .htaccess kullanılmalıdır. Aşağıdaki .htaccess dosyası Codeigniter projesinin kök dizininde bulundurulmalı ve Codeigniter ayarlarının yapıldığı application->config->config.php dosyasındaki $config['index_page'] = ‘index.php’; değeri $config['index_page'] = ”; olarak değiştirilmelidir.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

, , , ,

Netbeans’de Codeigniter Autocomplete

Filed in NetBeans | PHP Leave a comment

Netbeans ile Codeigniter kullanmak istediğinizde autopcomlete özelliğini için ekteki iki dosyayı indirip Netbeans proje dizini içindeki  nbproject dizini altına açmanız yeterli olacaktır. Elbette dosyaları yükledikten sonra Netbeans yeniden başlatılmalıdır.  Dosyaları İndirmek İçin: Netbeans Codeigniter Autocomplete

, ,

No input file specified hatası

Filed in Apache | Jaws | PHP | WordPress Leave a comment

Bu hata ile iki yerde karşılaştım. Biri WordPress diğeri Jaws CMS. Sanırım PHP’de bazı şeyler değişmiş :) açıkçası neyin değiştiğini araştırmadım ve çözüme yöneldim. Çözüm .htaccess dosyasından geçiyor. Aşağıdaki rewrite direktifleri benim için yeterli oldu. Kullandığınız kalıcı bağlantı yapısına göre kurallar değişiklik gösterebilir. Kendime uygun kuralı bulmak 1 günümü aldı diyebilirim. Bu süre aslında kayıp değil .htaccess öğrenmiş oldum hiç gerek yokken :)

Jaws İçin;

RewriteEngine On
RewriteRule ^index.php(.+)$ /index.php?/$1 [L]

WordPress İçin;

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

, ,

Help Center Live / Açık Kaynaklı Web Destek Sistemi

Filed in PHP 1 Comment

Bir proje için Canlı Web Sohbet özelliği olan bir Web Tabanlı Destek Sistemi’ne ihtiyaç duydum. Önce yazayım dedim ama bu aralar pek zamanım olmadığı için açık kaynak cennetinde bir araştırmaya çıktım. Basit yönetimli güzel bir uygulama olan Help  Center Live ile karşılaştım. Önce çalışmadı ama biraz forum karıştırınca gördüm ki firefox kullanmamdan kaynaklanıyormuş. Böcek düzeltilmemiş ama 1 dosyayı düzenleyerek firefox’ta da çalışır hale getirdim. Firefox düzeltmesi için bağlantı:http://www.helpcenterlive.com/smf/empty-t855.0.html;msg3743#msg3743 Projenin web sayfası bağlantısı: http://www.helpcenterlive.com/  bu projeyi yeniden yazmak yerine türkçeye kazandırmak çok daha iyi olacaktır. Çok yakında türkçe olarak burada bulabilirsiniz… ayrıca tema olarak G teması çok daha hoş :)

PHP’de Türkçe Karakterleri Büyük Harfe Dönüştürmek – strtoupper turkish

Filed in PHP Leave a comment

function strtoupperTR($str)
{
$str = str_replace(array(‘i’, ‘ı’, ‘ü’, ‘ğ’, ‘ş’, ‘ö’, ‘ç’), array(‘İ’, ‘I’, ‘Ü’, ‘Ğ’, ‘Ş’, ‘Ö’, ‘Ç’), $str);
return strtoupper($str);
}

Kaynak: http://forum.ceviz.net/php/41571-strtoupper-hakkinda.html

MooTools JavaScript Framework

Filed in JavaScript Leave a comment

MooTools gerçekten Object Oriented olarak yazılmış çok güzel bir framework en kısa zamanda projelerimde de kullanacağım… Ayrıca MooTools’da Geliştiriciler için basit bir web tabanlı oluşturucu da (builder) var.

Campsite Web Yayıncıları İçin Açık Kaynak Kodlu İnternet Gazetesi / Dergisi Yazılımı

Filed in Genel | MySQL | PHP Leave a comment

Campware girişimi MDLF tarafından bağımsız medya için açık kaynak kodlu çözümler üreten bir platformdur. Campsite bu platformun 2001 yılında çıkan ilk ürünüdür. PHP ve Mysql tabanlı bu sistem genellikle medya kuruluşları tarafından kullanılmakta ve içeriklerini çevrimiçi olarak internette yayınlayabilmelerini sağlamaktadır. İnternet ortamında yayıncılık üzerine geliştirilen (benim bulabildiğim) yegane projedir. Campware girişiminin bunun dışında radyo yayın yazılımı – Campcaster , medya kuruluşları için müşteri ilişkileri yönetim yazılımı – Cream (CRM) ve gazete dağıtım yönetim yazılmı – Dream gibi üç farklı projeside bulunmaktadır.

Jaws’ta TinyMCE düzenleyicisine tablo eklentisini kurmak

Filed in Jaws | PHP | Web Tasarım 2 Comments

Jaws içerisindeki tinyMCE editörünün varsayılan ayarlarında tablo eklentisi olmuyor. Tablo araçları ise web ortamında sıklıkla kullanılan araçlar oldukları için TinyMCE’de ilk kurulan eklentilerden biridir. Eklentiyi kurmak için öncelikle Jaws içerisinde;

include\Extras\tinymce\mce_gzip.php dosyasında 455. satırdan sonra aşağıdaki satırı eklemelisiniz…

$tinyMCEplugins[] = ‘table’;

ardından son bölümdeki tinyMCE kurulum alanında en üste aşağıdaki satırları ekleyin.

echo "\t theme_" . $tinyTheme . "_buttons2_add : \"delete_table, row_props, cell_props, delete_col, delete_row, col_after, col_before, row_after,r ow_before, split_cells, merge_cells\", \n";

sıra geldi eklenti dosyalarını sunucunuza yüklemeye;

http://tinymce.moxiecode.com/download.php adresinden makinenize bir tinymce sürümü indirdikten sonra plugins klasörü altındaki table klasörünü

include\Extras\tinymce\tiny_mce\plugins

klasörü içine kopyalayın.

Jaws Türkiye Yayında

Filed in Genel | PHP 4 Comments

Jaws Türkiye adı altında tüm türk jaws kullanıcılarını bir çatı altında toplamayı ve türkiyede jaws’ı tanıtmayı ve yaygınlaştırmayı hedeflediğimiz jaws-tr.com sitesi artık yayında tüm jaws kullanıcı ve geliştiricilerini bu çatı altına bekliyoruz…

Jaws 0.7.2 Artık Türkçe

Filed in Genel | PHP Leave a comment

Yapısını çok beğendiğim ve bundan sonra elimden geldiği kadar katkıda bulunmayı hedeflediğim jaws project artık türkçe, bu çalışmada emekleri için ayrıca öğrencim Fatih AKKOYUN’a da teşekkür etmek istiyorum. Bu çalışmamız için Jaws ekibide bizlere teşekkür etmiş;
http://www.jaws-project.com/index.php?blog/show/36

PHP ile Thumbnail (Küçük Resim) Üretmek

Filed in PHP Leave a comment

Sesli sözlükte thumbnail denildiğinde ilk karşımıza çıkan çeviri başparmak tırnağı yada başparmak tırnağı kadar oluyor,en son sırada da minyatür çizim olarak ifade edilmiş. Ben burada küçük resim demeyi tercih ediyorum. Birçok sitede olduğu gibi çoğu zaman resimler birden çok boyutta görüntülenebilmektedir. Bu işlem PHP’de GD kütüphanesi kullanılarak orjinal bir resimden istenilen yerde resim üretilerek yapılmaktadır.Internet’te kısa bir araştırmayla, bu işlemi yapan birçok script bulunabilir. Bense aşağıda linkini vermiş olduğum script’i kullanmaktayım.

http://www.zubrag.com/scripts/thumbnail-generator.php

Script kullanışlı ve basit, en azından benim için öyle :) kolay gelsin.

Internet Explorer’da Flash Player Etkinleştirme Problemi

Filed in Web Tasarım 3 Comments

Flash animasyon içeren bir sayfada görüntülenen animasyonlar şeffaf bir çerçeve içine alınmaktadır. Bazen de ActiveX denetimi etkinleştirilmeden animasyonlar çalışmamaktadır. Problem Microsoft’a açılan bir lisans davasından kaynaklanmaktaymış :) Eğer ziyaretçilerinizi bu tür bir etkinleştirmeyle uğraştırmak istemiyorsanız Açık Kaynak Kodlu Mozilla Firefox kullanmaya zorlamalısınız :) …. yok yok bir çözümü daha var… Sorun problemin kaynaklandığı noktayı bularak çözülüyor. Buradaki lisans problemi object , embed gibi taglar içeren HTML dökümanlarından kaynaklanıyor. Bu durumda ana dosyada direk bu taglara yer verilmez bunun yerine bu taglar bir JavaScript fonksiyonu ile içeriğe basılırsa problem olmuyor. Şimdi bunu nasıl yapacağınızı anlatalım; Öncelikle HTML dökümanı’ndaki Flash animasyonun object ve embed taglarını basacak JS dosyasını buraya tıklayarak indirin. Bu JS dosyasını

<script src="flash.js" language="JavaScript"></script>

koduyla head tagları arasına ekleyip bu fonkiyonu istediğimiz yerden ;

<script>flash(’768′,’240′,‘test.swf’,);</script>

koduyla değerleri ayarlayarak HTML dökümanına basabiliriz.
Ayrıca Dreamweaver programı 8.02 güncellemesi yapılınca otomatik olarak eklenen flash nesneleri için flash.js dosyasındaki scripte benzer bir script oluşturuyormuş.

CURL(Client URL Library Functions) Nedir? CURL ile kullanıcı kontrolü nasıl yapılır?

Filed in PHP | Programlama | Web Tasarım 4 Comments

Daniel Stenberg tarafından yazılan bu PHP kütüphanesi, birçok farklı tipteki sunucunun, birçok farklı tipte protokol kullanarak birbirleriyle bağlantı ve iletişim kurabilmesini sağlamaktadır. Desteklenen protokoller ise http, https, ftp, gopher, telnet, dict, file, ve ldap protokolleridir.PHP 4.0.2. versiyonundan sonra PHP’ye eklenmiştir. Basit bir örnek vermek gerekirse cURL ile bir sitenin ana sayfasını HTML dosyası olarak sunucunuza kaydedebilirsiniz. Bununla beraber bu web sitesindeki ilgili sayfaya birden çok değişkeni POST metodu ile gönderebilirsiniz.

CURL’un kullanımına basit bir örnek verelim;
Sitemizin dışındaki farklı bir sunucuda bulunduğu iddia edilen bir kullanıcının varlığının doğrulanmasının gerektiğini varsayalım. Kullanıcıdan üye olduğunu iddia ettği sistemin kullanıcı adı ve şifresini aldıktan sonra aşağıdaki fonksiyon ile bunu kontrol edebilirsiniz;

function kullaniciyiKontrolEt($kul_adi,$sifre) {

        $site = "http://hedef_url.php";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$site);
        curl_setopt($ch,CURLOPT_REFERER,$site);
        $data = array(‘Kul_adi’ => $kul_adi, ‘Sifre’ => $sifre);
        curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $ha=curl_exec($ch);
        $pos = strpos($ha, "Gecersiz Tekrar Deneyin");
        curl_close($ch);
        return $pos;
}

Burada, karşı sistemin kullanıcı adı ve şifreyi kontrol ettiğini bildiğimiz URL, $site değişkeninde tanımlanmaktadır. curl_init() fonksiyonu ile yeni bir oturum başlatılıyor ve curl_setopt() fonksiyonunda kullanılmak üzere bir tanıtıcı değer (handle) döndürülüyor. Daha sonra CURL aktarım işlemlerinde kullanılacak Öntanımlı Sabitler curl_setopt() fonksiyonu ile tek tek tanımlanıyor ve curl_exec() fonksiyonu ile CURL oturumunda tanımlanan Öntanımlı Sabitlere göre işlem gerçekleştiriliyor. Bu işlem sonucunda hedef URL’den bir HTML dosyası dönüyor. Burada fonksiyon geri dönen dosya içerisinde “Geçersiz Tekrar Deneyin” gibi kullanıcının varolmadığı durumlarda karşılaşılabilecek bir ifadeyi strpos() fonksiyonu ile arıyor. Bu arama işlemi sonucunda $pos değişkenine true yada false değeri atanıyor ve en son adımda fonsiyondan geri döndürülüyor. Elbette burada tanımlanan POST edilecek değişken adeti ve ve adları karşı sisteme göre değişiklik gösterecektir.

$site = "http://hedef_url.php";
$data = array(‘Kul_adi’ => $kul_adi, ‘Sifre’ => $sifre);
$pos = strpos($ha, "Gecersiz Tekrar Deneyin");

satırlarındaki değerleri kendinize göre düzenleyerek sizde farklı bir sistemdeki kullanıcının var olup olmadığını doğrulayabilirsiniz.

,

PHP ile rasgele şifre üretmek

Filed in PHP 3 Comments

PHP ile rasgele şifre üretmek için aşağıdaki scripti kullanabilirsiniz. Fonksiyon sizin vereceğiniz uzunluk değerine göre bir şifre üretiyor. Algoritma şu şekilde çalışıyor;ilk önce rand() fonksiyonu ile şifreyi oluşturacak karakterlerin ASCII değerleri elde ediliyor, chr() fonksiyonu ile de karakter karşılıkları elde ediliyor ve switch() fonksiyonunda da hangi case’in çalışacağı yine rasgele belirlenerek her bir karakter için üç farklı tipde değer elde edilmesi sağlanıyor.

function rasgeleSifre($uzunluk)
{
 $sifre = ; //başlangıç değeri boş olarak ayarlanıyor.
 for($i=0;$i<$uzunluk;$i++)
 {
   switch(rand(1,3))
   {
     case 1: $sifre.=chr(rand(48,57));  break; //0-9
     case 2: $sifre.=chr(rand(65,90));  break; //A-Z
     case 3: $sifre.=chr(rand(97,122)); break; //a-z
   }
 }
 return $sifre;
}

$sifre=rasgeleSifre(200);
echo $sifre;
?>

WordPress için Code Snippet Plugin

Filed in PHP 2 Comments

WordPress makalelerinde kod parçacıklarını reklendirmek için kullanılabilecek güzel bir plugin, desteklediği dil sayısı da kayda değer.

http://blog.enargi.com/codesnippet/ linkinden indirebilirsiniz.
Kontrol ettim de hala çalışmıyor site :( isterseniz buradan indirebiirsiniz

Seçim kutusu’ndan birden çok değerin PHP’ye aktarılması

Filed in PHP Leave a comment

Html form nesnelerinden seçim kutusunu <select multiple> şeklinde kullanmak ve seçim nesnesinin ismini verirken ismin sonuna “köşeli parantezler” [] eklemek bu nesne ile birden çok seçim yapılabilmesine ve değerlerin form’dan dizi şeklinde php’ye aktarılmasına olanak sağlamaktadır. Aşağıdaki örnekte html formunun nasıl düzenlendiği gösterilmektedir;

<form name="tatlilar" action="form.php" method="post">
<select name="tatlisecimi[]" multiple>
<option value="baklava">Baklava</option>
<option value="sekerpare">Şekerpare</option>
<option value="kadayif">Kadayıf</option>
</select>
</form>

Bu formdan veriyi alabilmek için $_POST[] kullanmak en iyi yöntemdir. Burada veriye erişmek için $_POST[tatlisecimi][0] kullanılırsa ilk seçime $_POST[tatlisecimi][1] kullanılırsa ikinci secim değerine erişilebilir.

TOP