Joomla Kodlarina Giris - 7
Yazar Soner Ekici
Pazar, 08 Temmuz 2007
Yazimiza mosHTML sinifindaki emailCloaking fonksiyonu ile devam ediyoruz. Bu fonksiyon sayesinde sitemizdeki e-posta adreslerini spam botlarin almasini engelliyoruz. Fonksiyonun kullanimi su sekildedir;
$eposta = mosHTML::emailCloaking(’eposta adresi’, ‘mailto linki olacak mi’, ‘mail yerine gosterilecek yazi’);
Örnek verelim;
$eposta = mosHTML::emailCloaking(’pisdoktor@joomlaturkiyeorg’, 1, ‘Pisdoktora E-posta Atin’);
echo $eposta;
Bu kodun gösterimi söyle olacaktir: Pisdoktora E-posta Atin
Kullanimi oldukça kolay olan bu fonksiyon ile birlikte mosHTML sinifini bitirmis olduk.
Gene joomla.php içerisinde olan ve geçmis yazilarimizda çok kisa da olsa degindigimiz mosGetParam fonksiyonuna detayli bir bakis atmamizin kodlama oldukça faydali olacagini düsünüyorum.
mosGetParam fonksiyonu ile çesitli parametreleri kolayca ve güvenli bir sekilde almanin mümkün oldugunu daha önceki yazilarimizda belirtmistik. Simdi kullanimini inceleyelim;
$deger = mosGetParam(’istek türü’, ‘deger’, ‘önceden tanimlanmis deger’);
istek türleri bilindigi üzere;
$_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE, $_FILES, $_ENV dir. Simdi örnek üzerinde kullanimini açiklayalim. Bir formumuzdan gelen verileri almak istiyoruz. Formumuzun hareket türü POST olsun. O zaman formun gönderildigi fonksiyonun (veya dosyanin) ilk satirlarina söyle bir kod yazmamiz gönderilen verinin güvenli bir sekilde alinmasini saglayacaktir;
$deger = mosGetParam($_POST, ‘deger’);
Eger bu deger rakamsal bir deger ise veriyi daha güvenli yapmak için intval kullanabiliriz;
$deger = intval(mosGetParam($_POST, ‘deger’));
Eger bu deger rakamsal degil ise strval kullanabiliriz;
$deger = strval(mosGetParam($_POST, ‘deger’));
Kisacasi "mosGetParam" formlarimizda güvenlik için muhakkak kullanmamiz gereken bir fonksiyondur.
joomla.php içerisindeki bir diger fonksiyon mosStripslashes fonksiyonu olup bu fonksiyona gönderilen metnin içerisindeki kesme isaretlerini kaldiracaktir. Örnegin;
$yazi = "Benim Adim Soner\ Ekici";
$yazi = mosStripslashes($yazi);
echo $yazi;
Bu kodlar söyle görünür; "Benim Adim Soner Ekici"
Baska bir fonksiyon olan mosReadDirectory fonksiyonu ile bir dizinin içerisindeki dizinleri listeletebiliriz. Fonksiyonun kullanimi su sekildedir;
mosReadDirectory(’ana dizin’, ‘filtrelenecek sey’, ‘alt dizinlerin gosterme’, ‘tam yolu gosterme’);
Örnegin joomla adinda bir dizinimiz olsun ve bunun içerisindeki alt dizinleri listeletelim;
$dizinler = mosReadDirectory(’joomla’, ”, 1, 0);
$liste = array();
foreach($dizinler as $dizin) {
$liste[] = mosHTML::makeOption($dizin, $dizin);
}
$listele = mosHTML::selectList($liste, ‘dizin’, ‘class=inputbox’, ‘value’, ‘text’);
echo $listele;
Biraz daha detaya inelim ve sitemizin ana dizinine uygulayalim ve sadece php uzantili dosyalari göstertelim;
global $mainframe;
$anadizin = $mainframe->GetCfg(’absolute_path’);
$dizinler = mosReadDirectory($anadizin, ‘.php’, 1, 0);
$liste = array();
foreach($dizinler as $dizin) {
$liste[] = mosHTML::makeOption($dizin, $dizin);
}
$listele = mosHTML::selectList($liste, ‘dizin’, ‘class=inputbox’, ‘value’, ‘text’);
echo $listele;
Joomla içerisinde yönlendirme yapmaya yarayan mosRedirect fonksiyonunu kullanmak oldukça kolaydir. Hemen örnekle açiklayalim;
$deger = 0;
if ($deger) {
mosRedirect(’index.php’, ‘Deger 1 oldugu için buraya yönlendirildiniz’);
}
Yukaridaki kodlarda $deger = 1; yaparsaniz sayfa index.php ye yönlenecek ve size "Deger 1 oldugu için buraya yönlendirildiniz" diye bir uyari mesaji gösterilecektir. Eger fonksiyonu;
mosRedirect(’index.php ‘);
olarak degistirirseniz size hiçbir uyari mesaji gösterilmeden direkt olarak index.php ye yönlendirileceksiniz.
Bir diger fonksiyon mosErrorAlert fonksiyonudur. Kullanimi su sekildedir;
mosErrorAlert(’Uyari mesaji’, ‘mesaj onaylaninca yapilacak islem’, ‘uyari modu’);
Hemen örnek ile açiklayalim. Bir formumuz var ve gönderilen veri bos gönderilmisse kisinin form sayfasina geri gitmesini saglayalim.
$deger = intval(mosGetParam($_POST, ‘deger’));
if (!$deger) {
mosErrorAlert(’Eksik bilgi girmissiniz’, ‘window.history.go(-1);’, ‘2′);
}
Bunu biraz daha sadelestirelim ve hata gösterimini farklilastiralim;
if (!$deger) {
mosErrorAlert(’Eksik bilgi girmissiniz’);
}
Iki kodun arasindaki ve gösterimlerindeki farki gördügünüzü varsayiyorum.
