i s m a i l p e r i m . n e t
js, ajax, php, mysql, c#
js, ajax, php, mysql, c#
Oca 31st
PHP projelerimde kullandığım pratik güvenlik işlemlerini yapan 2 fonksiyonumu sizlerle paylaşmak istedim. Çalışma mantığı gayet basit : $_POST[] ve $_GET[] ile gelen tüm verileri basit bir filtrelerden geçiriyor. Bu filtreler ise htmlspecialchars,mysql_real_escape_string fonksiyonları ve benim aklıma gelen metin ve karakterleri değiştiren basit bir replace işleminden oluşuyor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <?php /** * @author İsmail Perim <http://ismailperim.net> <ismailperim@gmail.com> * @copyright 2009 © İsmail Perim <http://ismailperim.net> <ismailperim@gmail.com> * @license Licensed under the GNU General Public License, version 2. * @license the file http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt * @version $Id: genel.guvenlik.php 2010-01-31 17:09:06$ **/ class Guvenlik { public static function Kontrol() { $p = count($_POST); $pa = array_keys($_POST); for($pi = 0;$pi<@$p;$pi++) { $_POST[$pa[$pi]] = Guvenlik::Filtre($_POST[$pa[$pi]]); } $g = count($_GET); $ga = array_keys($_GET); for($gi = 0;$gi<@$g;$gi++) { $_GET[$ga[$gi]] = Guvenlik::Filtre($_GET[$ga[$gi]]); } } public static function Filtre($q) { $q = mysql_real_escape_string(htmlspecialchars($q)); $ara = array('"','#',"'",'*','+',';',"`",'OR','or','Or','oR'); $bul = array('"','#',''','*','+',';','`','','','',''); $q = str_replace($ara,$bul,$q); return $q; } ?> |
Oca 26th
Son zamanlarda üzerinde uğraştığım projemden biraz bahsedeceğim bu yazımda size;
Onun adı rivy ![]()
Kısaca nedir ? Ne işe yarar?
Rivy, Php – Ajax – MySql tabanlı bir alan adı sorgulama sistemi. Bundan yaklaşık 1 ay önce r10′da dolaşırken tesadüf eseri görüp kaydettiÄŸim domainim üzerine neler yapabileceÄŸim konusunda öneriler alırken bir kaç arkadaşın(webloader) söyledikleri üzerine aklıma giren projem oldu rivy
İlk aÅŸamada alan adlarını sorgulayabildiÄŸiniz, boÅŸ veya dolu olup olmadığını, dolu ise whois bilgilerini görebildiÄŸiniz rivy ile ilerneyen günlerde tamamen ücretsiz olarak düşecek domainlerinizi ekleyip – listeyebileceÄŸiniz, takip ettiÄŸiniz domain düştüğünde size mail ile haber verecek bir sistemi hizmetinize sunmayı planlıyorum.
Rivy’i buradan ziayret edebilirsiniz
Oca 1st
Yeni yazımda sizlere geçenlerde keşfettiğim pratik bir işlemden bahsedeceğim.
Bahsettiğim işlem kimilerinize pratik, kimilerinize kullanışsız gelebilir. Karar sizin
İşleyiş şöyle oluyor;
Örneğin üyelik sistemi yapıyoruz. Basit anlamda ekleme silme ve düzenleme işlemlerine ihtiyacımız var. Bunun için öncelikle bir kullanıcı sınıfı oluşturuyoruz;
<?php class Kullanici { public $ID; public $KullaniciAdi; public $Sifre; public $EPosta; public $Adi; public $Soyadi; public $Sehir; public $Adres; public $PostaKodu; public $Telefon; public $WebSitesi; } ?>
basit anlamda kullanıcı özelliklerini tanımlıyoruz öncelikle. Daha sonra kullanıcı işlemlerini yapacak olan ekleme, silme, düzenleme fonksiyonlarını yazacağız.İşte bahsettiğim olayın pratikliği burada devreye giriyor. Normalde örneğin düzenleme işlemini yapan fonksiyon içinde düzenleme sorgusu için sorguyu metin olarak yazar, içine de eklenecek değişkenleri yazarız. Misal;
mysql_query("UPDATE kullanici SET adi = '$this->Adi WHERE id = '$this->ID' '");
şeklinde yazarız. 2 satır şey yazmaktan üşendiğim zaman keşfettiğim işlem sayesinde fonksiyon sınıf içinden property leri okuyarak sorguya dahil ediyor. Bu durumda yeni bir property eklediğimizde veya var olan property lerden birini sildiğimiz zamanlarda hem sınıf içinde değişiklik yapar, hemde sorguda değişiklik yaparız. Bu yöntem sayesinde sınıf propertysinde değişiklik yaptığımız zaman otomatik olarak sorguya yansıyor.
Bu işlemi yapabilmek için öncelikle işlemleri yaptığımız sınıfın propertylerini okumaya ihtiyacımız var. Bunun için;
print_r($this);
dediğimiz zaman $this ile varolan sınıfı object olarak alıyoruz. Bu object türündeki değişkenimizi işlemlerimiz için array türüne cast ediyoruz.
(array)$this;
Bir dizide var olan key isimlerine ulaşmak için ise array_keys() fonksiyonunu kullanıyoruz.;
$sinif = array_keys((array)$this); echo $sinif[0]; // Kullanıcı sınıfının 0. propertysi olan "ID" yi bize geri döner.
Yukarıdaki kod parçacığında ise sınıf property isimlerine erişmiş oluyoruz.
Basit bir döngü ile dizimizin içinde bir tur atarak işlem yapacağımız sorgumuzu rahatlıkla oluşturabiliyoruz.
Sonuç olarak ise ortaya kendi kendine sorgusunu yaratan basit bir fonksiyon ortaya çıkıyor;
public function Degistir() { if((int)$this->ID != 0) { $sorguMetin = 'UPDATE kullanicilar SET '; $sinif = array_keys((array)$this); for($i = 1;$i<count($sinif);$i++) { $sinifKucuk = strtolower($sinif[$i]); $sinifBuyuk = $this->{$sinif[$i]}; if($sinifKucuk == 'sifre') { if($sinifBuyuk != '') { $sinifBuyuk = md5(sha1($sinifBuyuk)); $this->Sifre = $sinifBuyuk; $sorguMetin .= " $sinifKucuk = '$sinifBuyuk'"; if($i<count($sinif)-1) { $sorguMetin .= ', '; } } } else { $sorguMetin .= " $sinifKucuk = '$sinifBuyuk'"; if($i<count($sinif)-1) { $sorguMetin .= ', '; } } } $sorguMetin .= " WHERE id = '$this->ID'"; mysql_query($sorguMetin); }
Ara 6th
İnternette dolaşırken gördüğüm basit ama güzel bir Javascript aracını paylaşmak istedim sizinle.
Bu araç, tarayıcımızda açmış olduğumuz sayfanın üzerine dinamik olarak eklenen basit bir js dosyası ile çalışıyor.
Ne işe yaradığına gelince;
Yukarıdaki linke tıkladığınızda ekranın sağ alt köşesinde koyu renkli bir kutu belirecek. Bu kutunun içinde ise 4 adet araç bulunmakta. Bu araçlar sayfa üzerinde çeşitli şekillerde ölçümler yapmanıza olan sağlıyor.
Bu aracı diğer sayfalarda nasıl kullanacağınıza gelirsek;
javascript:function%20fnStartDesign(sUrl)%20{var%20nScript%20=%20document.createElement(’script’);nScript.setAttribute(‘language’,'JavaScript’);nScript.setAttribute(’src’,sUrl);document.body.appendChild(nScript);}fnStartDesign(‘http://www.sprymedia.co.uk/design/design/media/js/design-loader.js’);
Yapmanız gereken ÅŸey yukarıdaki “tıklayın” linkini Mozillanızın hızlı baÄŸlantılar sekmesine sürükleyip kaydetmeniz ve bu aracı kullanmak istediÄŸiniz sayfalarda baÄŸlantıya basmanız veya 2. bir alternatif olarak yukarıdaki kodu biryerde saklayıp, aracı kullanmak istediÄŸinizde tarayıcınızın adres çubuÄŸuna yapıştırmanız…
Kas 22nd
Yaptığım bir projede ihtiyacım üzerine karaladığım küçük 2 fonksiyonu paylaşmak istedim.
js dosyamın içinde 2 fonksiyon bulunmakta;
void IsNumber(element)
Fonksiyonu text nesnemizin onkeypress ve onkeyup olaylarına yazıyoruz. Bu olaylarda fonksiyonumuza nesnemizi gönderdiÄŸimiz zaman bastığımız karakterleri kontrol ederek geçersiz karakterlerin yazımını kısıtlıyor. Sadece rakamlar, ‘.’ ve ‘,’ karakterlerinin yazımına izin veriyor.
Örnek Kullanım : <input type=”text” name=”price” onkeypress=”IsNumber(this)” onkeyup=”IsNumber(this)” />
void CurrencyFormat(element)
Bu fonksiyonumuzu da nesnemizin onblur olayına yazarak parametre olarak text nesnemizi gönderiyoruz. Fonksiyon yazım işimiz bittikten ve text nesnemizin içinden çıktıktan sonra içindeki yazıyı algılayarak formatlandırma işlemini yapıyor. Örneğin, bin lira otuz beş kuruş = 1000,35 yazdığınızda, fonksiyonumuz bunu 1.000,35 haline dönüştürüyor.
Örnek Kullanım : <input type=”text” name=”price” onblur=”CurrencyFormat(this)” />
<input type=”text” name=”price” onblur=”CurrencyFormat(this)” onkeypress=”IsNumber(this)” onkeyup=”IsNumber(this)” />
Örnek 1 :
Örnek 2 :