Joomla Kodlarına Giriş (Bölüm 7)

Real9

Katılımcı Üye
1 Kas 2009
322
0
Yazımıza mosHTML sınıfındaki emailCloaking fonksiyonu ile devam ediyoruz. Bu fonksiyon sayesinde sitemizdeki e-posta adreslerini spam botların almasını engelliyoruz. Fonksiyonun kullanımı şu şekildedir;

$eposta = mosHTML::emailCloaking('eposta adresi', 'mailto linki olacak mı', 'mail yerine gosterilecek yazı');

Örnek verelim;
$eposta = mosHTML::emailCloaking('[email protected]', 1, 'Pisdoktora E-posta Atın'); echo $eposta;

Kullanımı oldukça kolay olan bu fonksiyon ile birlikte mosHTML sınıfını bitirmiş olduk.

Gene joomla.php içerisinde olan ve geçmiş yazılarımızda çok kısa da olsa değindiğimiz mosGetParam fonksiyonuna detaylı bir bakış atmamızın kodlama oldukça faydalı olacağını düşünüyorum.

mosGetParam fonksiyonu ile çeşitli parametreleri kolayca ve güvenli bir şekilde almanın mümkün olduğunu daha önceki yazılarımızda belirtmiştik. Şimdi kullanımını inceleyelim;

$deger = mosGetParam('istek türü', 'deger', 'önceden tanımlanmış değer');

istek türleri bilindiği üzere;

$_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE, $_FILES, $_ENV dir. Şimdi örnek üzerinde kullanımını açıklayalım. Bir formumuzdan gelen verileri almak istiyoruz. Formumuzun hareket türü POST olsun. O zaman formun gönderildiği fonksiyonun (veya dosyanın) ilk satırlarına şöyle bir kod yazmamız gönderilen verinin güvenli bir şekilde alınmasını sağlayacaktır;

$deger = mosGetParam($_POST, 'deger');

Eğer bu değer rakamsal bir değer ise veriyi daha güvenli yapmak için intval kullanabiliriz;

$deger = intval(mosGetParam($_POST, 'deger'));

Eğer bu değer rakamsal değil ise strval kullanabiliriz;

$deger = strval(mosGetParam($_POST, 'deger'));

Kısacası "mosGetParam" formlarımızda güvenlik için muhakkak kullanmamız gereken bir fonksiyondur.

joomla.php içerisindeki bir diğer fonksiyon mosStripslashes fonksiyonu olup bu fonksiyona gönderilen metnin içerisindeki kesme işaretlerini kaldıracaktır. Örneğin;

$yazi = "Benim Adım Soner\ Ekici"; $yazi = mosStripslashes($yazi); echo $yazi;

Bu kodlar şöyle görünür; "Benim Adım Soner Ekici"

Başka bir fonksiyon olan mosReadDirectory fonksiyonu ile bir dizinin içerisindeki dizinleri listeletebiliriz. Fonksiyonun kullanımı şu şekildedir;

mosReadDirectory('ana dizin', 'filtrelenecek sey', 'alt dizinlerin gosterme', 'tam yolu gosterme');

Örneğin joomla adında 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 uygulayalım ve sadece php uzantılı dosyaları 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 kolaydır. Hemen örnekle açıklayalım;

$deger = 0; if ($deger) { mosRedirect('index.php', 'Değer 1 olduğu için buraya yönlendirildiniz'); }

Yukarıdaki kodlarda $deger = 1; yaparsanız sayfa index.php ye yönlenecek ve size "Değer 1 olduğu için buraya yönlendirildiniz" diye bir uyarı mesajı gösterilecektir. Eğer fonksiyonu;

mosRedirect('index.php ');

olarak değiştirirseniz size hiçbir uyarı mesajı gösterilmeden direkt olarak index.php ye yönlendirileceksiniz.

Bir diğer fonksiyon mosErrorAlert fonksiyonudur. Kullanımı şu şekildedir;

mosErrorAlert('Uyarı mesajı', 'mesaj onaylanınca yapılacak işlem', 'uyarı modu');

Hemen örnek ile açıklayalım. Bir formumuz var ve gönderilen veri boş gönderilmişse kişinin form sayfasına geri gitmesini sağlayalım.

$deger = intval(mosGetParam($_POST, 'deger')); if (!$deger) { mosErrorAlert('Eksik bilgi girmişsiniz', 'window.history.go(-1);', '2'); }

Bunu biraz daha sadeleştirelim ve hata gösterimini farklılaştıralım;

if (!$deger) { mosErrorAlert('Eksik bilgi girmişsiniz'); }

İki kodun arasındaki ve gösterimlerindeki farkı gördüğünüzü varsayıyorum.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.