29Eki
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
));
Array Sort, Multi Dimensional Array Sort, PHP, Programlama, Sorting
08Eki
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, Form Validation, PHP
04Eki
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>
.htaccess, Codeigniter, mod_rewrite, PHP, SEO
26Eyl
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]
.htaccess, Jaws CMS, mod_rewrite
27Şub
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ş :)
27Kas
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
12Eyl
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.
28Tem
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.
30Kas
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.
10Haz
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…
17Kas
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.
05Eki
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ş.
23Eyl
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.
Curl, PHP
28May
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;
?>
27May
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
23May
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;
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.