PHP’de Linkleri Seolu Yapmak

Tarih : 13-03-2009 | imza : Burak | Kategori : Yazılarım

3

Genelde çoğu scriptlerde seo linki veritabanında ayrı bir alanda tutuluyor. Linkler bu alandan çağırılıp  oluşturuluyor. Oysa başlıkları kullanıp, basit bir filtreden geçirip seolu olmayan scriptlerinizi kolayca sef link haline dönüştürebilirsiniz..

//----Seo Link yapıyoruz
function seo($sef){
$sef = strtolower($sef);
$degis1 = array('İ','Ö','Ü','Ğ','Ç','Ş','ö','ü','ğ','ç','ş','ö','_',' ','--','---','ı');
$degis2 = array('i','o','u','g','c','s','o','u','g','c','s','o','-','-','-','-','i');
$sef    =str_replace($degis1,$degis2,$sef);
$sef    =preg_replace("@[^A-Za-z0-9-_]+@i","",$sef);
return $sef;
}

Bu fonksiyonumuzu sayfamıza yada kütüphanemize yerleştiriyoruz. Daha sonra verileri veritabanından çekerken şu şekilde yapıyoruz.

$deli  =  mysql_query("SELECT * FROM haberler WHERE katid='$katid' and onay=1 ORDER BY id DESC LIMIT $baslangic,$limit");
while($aptal = mysql_fetch_array($deli)){
$id     =$aptal['id'];
$baslik  =stripslashes($aptal['baslik']);
$haber    =stripslashes(strip_tags($aptal['haber']));
$habertemizle  = substr($haber,0,482);
$resim     =$aptal['resim'];
$hit     =$aptal['hit'];
$sef        = seo($baslik);
echo '<div class="habercek">
<a href="'.$id.'-'.$sef.'"><img src="haberimg/kresim/'.$resim.'" border="0" class="haberresim"></a><a href="'.$id.'-'.$sef.'">'.$baslik.'</a>'.$habertemizle.'<br>
<span class="okundu"><strong>'.$hit.'</strong> kez okundu</span><br><br></div>';

Başlığı çektikten sonra en sonda $sef değişkenine başlığın seo fonksiyonundan geçirilmişini atıyoruz. Ve link kısmına ise <a href=”‘.$id.’-’.$sef.’”>’.$baslik.’</a>  diyoruz. Böylece linkimiz şu şekil oluyor. www.deneme.com/32-bu-bir-deneme-haberdir

En sonda ise .htaccess dosyamıza bir ekleme yapıyoruz ve olayı bitiriyoruz..

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z0-9]*)-(.*)$ haberoku.php?id=$1&sayfa=$2 [L,NC]

Buradaki haberoku.php yi kendi php dosyanızda değiştireceksiniz.

Küçük bir Sql Injection Önlemi

Tarih : 08-03-2009 | imza : Burak | Kategori : Yazılarım

1

İşinize yarayabilecek çözümü küçük ama tehlikesi büyük olan bir açığı kapatmanızı göstereceğim. Öncelikle Sql Injection’dan bahsedelim. En basit dilde anlatacak olursak;  örneğin bir haber portalı var. Haberler ise haberler.php?oku=12 şeklinde çağırılıyor olsun. Buradaki 12 haberimizin id numarası oluyor. Eğer biz 12 sayısını kontrol ettirmeden direk sql sorgusuna sokuyorsak büyük bir açığa sebebiyet vermiş oluruz. Çünkü Sql’in bazı püf noktalarından yararlanan saldırgan, sorgumuzu zararlı bir sorguya dönüştürüp verilerimizi bile silebilir.

Bu şaşırtmacalardan bir taneside tırnak işaretiyle değeri bitirip, sanki sorgu devam ediyormuş gibi rol yaptırıp yeni bir sorgu yaratmaktır. Örneğin 12 yerine  x’ AND 1=(SELECT COUNT(*) FROM tabloadı); — şeklinde bir giriş yapılırsa sorgunun kaderi değişmiş olur.. Çok çeşitli Sql injection atakları mevcut olup ben sadece mantığını göstermek istedim.. Hepsini vermem de uygun olmazdı zaten :)

Gelelim sayısal sorgularda sql injection tehlikesinin nasıl önüne geçmemize;

Yukarıda ki örneğini verdiğim haberler.php dosyasından örneğime devam edeyim.

Dosyamızda gelen veriyi direk aldıktan sonra kesinlikle bir kontrolden geçirmeliyiz. Hatta yaptığınız yazılımlara göre kontrol birden fazlada olabilir ama ben en çok işinize yarayacak yöntem olan gelen değerin nümerik mi değil mi kontrolünü gösteriyorum..

if( !is_numeric($_GET['oku']) ){

//Eğer gelen veri nümerik değilse uyarıya gerek kalmadan kullanıcıyı anasayfaya atmak en mantıklısı olurdu heralde.

header("Location:index.php"); // Kullanıcıyı anasayfaya attık.

}else{

//Eğer nümerik ise verimizi çekiyoruz ve sorgumuza alıyoruz.

$gelenveri = $_GET['oku'];  //Gelen 12 sayısı değişkenimize yüklendi ve sorguya gitmeye hazır..

}

——-

Header() fonksiyonu içerisinde Location kullanarak index.php ye attık örnekte. Eğer Cannot modify header information hatası alırsanız php dosyanızın ilk satırına ob_start() fonksiyonunu eklemeniz yeterli olacaktır. Bu hatayı header() fonksiyonundan önce çıktı kullandıysanız verir.

Soru ve sorunlarınız için iletişim formunu kullanabilirsiniz.

Bol php’li günler :)

Formlarınıza güvenlik kodu ekleyin

Tarih : 06-03-2009 | imza : Burak | Kategori : Yazılarım

2

Formlarımızı kodlarken güvenliği elden bırakmamamız gerekir..  Hele ki form ile direk veritabanına veri girişi sağlanıyorsa daha çok dikkatli olmak lazım. Ayrıca formları flood’dan korumak için de güvenlik kodu uygulaması kullanmak mantıklı. Formumuza güvenlik kodu uygulamasının entegresini basitçe anlatacağım. Geliştirmek ve daha da sağlamlaştırmak sizin elinizde.

Öncelikle buradan dosyaları indirin. Arşivden çıkardığınızda 3 tane dosya göreceksiniz.

Bunlar;

form.php, CaptchaSecurityImages.php ve font dosyamız monofont.ttf

form.php tamamen örnek formdur. Onu inceleyerekte entegreyi gerçekleştirebilirsiniz. Amatör olan arkadaşlar için kendim anlatmayı seçtim. Form dosyamızla aynı dizin içerisinde CaptchaSecurityImages.php ve font dosyamız monofont.ttf ‘in olmasına dikkat ediyoruz.

Form dosyamızın ilk satırına

session_start(); fonksiyonunu ekliyoruz. Session oturumu başlatıyoruz.

Formumuzun içerisine

<img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" />

kodunu ekliyoruz. Bu kod CaptchaSecurityImages.php dosyasından bize 5 karakterlik bir güvenlik numarası oluşturup resim olarak getiriyor.

Bu resmimizin altına bir textfield  ekliyoruz.  Buda güvenlik kodunun girileceği giriş kutusu oluyor. name parametresine guvenlik yazarsanız aşağıdaki kodu uygularken sıkıntı çekmezsiniz.

Formumuzu çalıştırdığımızda güvenlik kodumuzun aşağıdaki gibi görünmesi gerekli.

captcha

Şimdi geldik kontrolü yapmamıza. Mantıken sessiondan gelen veriyi giriş kutusundan girilen veriyle bir karşılaştırma yapmamız gerekir. Onuda şu şekilde yapabiliriz.

if( isset($_POST['gonder'])) {
if( $_SESSION['security_code'] == $_POST['guvenlik'] && !empty($_SESSION['security_code'] ) ) {

 //Güvenlik kodu doğru girildiği taktirde yapılacak işlemler
unset($_SESSION['security_code']);
} else {
 // Güvenlik kodu hatalı girildiği taktirde verilecek hata mesajı
echo 'Güvenlik kodu hatalı, geri dönüp tekrar deneyiniz';
}
}

Bu kodda girilen güvenlik kodu ile oluşturulan güvenlik kodunu kıyasladık aynı zamanda session dan gelen güvenlik kodunun boş olup olmadığına baktık. Şartlar sağlıyorsa işlem uygulanır.

Soru ve sorunlarınız için iletişim bölümünü kullanabilirsiniz.

Müzik Severlere Radyodan kayıt

Tarih : 06-03-2009 | imza : Burak | Kategori : Yazılarım

0

Screamer adlı program belli internet radyolarından bilgisayara kayıt imkanı sağlıyor. Programın Türkçe dil desteği var. Settings / Language kısmından Türkçe’yi seçebilirsiniz. Daha sonra istasyonlar kısmından dinlediğiniz müzik türüne göre radyoları seçebiliyorsunuz.

scream

Kayıt içinse REC tuşuna basmanız yeterli. Program klasörü içerisinde Saved klasörüne kayıt almaya başlıyor. Müziklerin adlarına kadar kayıt ediyor.

Download