mysql_real_escape_string DBAL dengi (equivalent)

Benim gibi projenizde bir altyapı değişikliği yapıyorsanız, muhtemelen yeniden ele aldığınız kısımlardan biri de veritabanı bağlantısı ile ilgili kısımlar oluyor. Biz de bu noktada Doctrine DBAL kullanmaya karar verdik. Henüz ORM implemente etmek için yolumuz var. O yüzden sadece DBAL katmanını kullanacağız. Ancak burada mysql_real_escape_string vasıtası ile escape ettiğimiz verileri, artık DBAL tarafına geçerken birsürü yerde replace işlemi yapmak istemiyorsanız birkaç önerim olacak.

mysql_Real_Escape artık projenizde düzgün çalışmayacaktır diye tahmin ediyorum. Çünkü artık classlar üzerinden çalışıyorsunuz, ve buradaki mysql doğru connectionı bulamayabilir. (özellikle master slave ilişkili çift veya daha fazla db mimarisinde)

Tabi ki işin doğrusu statement->prepare metodu üzerinden bindParam veya bindValue ile ilerlemek. Ancak bunları için oldukça uzun bir vakit gerekebilir.

Biz de mysql_real_escape_string’in karşılığı olarak bir metod bulduk. Connection nesnesi üzerinde bulunan quote metodu.

 

$conn->quote(”) dediğimiz metod tam da istediğimiz şekilde çalışıyor. Hatta connection objesindeki ekstra parametreler kısmına ATTR_EMULATE_PREPARES=> true verirseniz, bu metod bildiğiniz mysql_Real_escape işlemini yapıyor. bu parametredeki tek handikap, çoklu querylerin tek seferde çalıştırılamaz hale gelmesi oluyor.

quote’un mysql_Real escape’ten tek farkı başına ve sonuna bir tırnak koyuyor. siz bunları substr ile çıkartırsanız birebir aynı olacaktır.

 

dikkat etmeniz gereken bir şey de şu ki, mysql server’ınızın encoding’i ile (server encodinginizin mysql e bağlanıp show variables like ‘%char%’ seklindeki degisklenlerden gorebilirsiniz) connection (DBAL ayarlarından verilen encoding) aynı olması gerkeiyor ki güvenli bir escape işlemi yapılabilsin.

Laravel’e başlangıç

Laravel, bir PHP frameworkudur. Web sitesinde ( laravel.com ) THE PHP FRAMEWORK FOR WEB ARTISANS. mottosuyla tanıtılmakta. Bu aralar çok popüler olmasından dolayı merak edip araştırdım. Kendinden restfuldur kendileri.

İnternet üzerinde bir çok yerde ve yazılımla ilgili muhabbetlerin bir çoğunda son dönemin en iyi frameworklerinden biri olarak nitelendiriliyor. Örnek olarak şuraya göz atabilirsiniz : http://www.sitepoint.com/best-php-frameworks-2014/

Bende araştırırken karşıma çıkan faydalı ve güzel linkleri bir araya getirdim. Aşağıdan ulaşabilirsiniz;

Laravel Documentation http://laravel.com/docs/introduction [ olmazsa olmaz 🙂 ]

Laracast https://laracasts.com/series [ özellikle Laravel From Scratch kısmında, Laravel’in temel prensipleri güzel anlatılmış ]

Visualizing Laravel Relationships http://matthewhailwood.co.nz/visualizing-laravel-relationships/

Laravel Blog örneği https://github.com/ibrahimhizlioglu/laravel-blog-ornegi

Events & Queue örneği https://github.com/Ardakilic/laravel-4-workshop-sunum

Laravel Request Lifecycle http://laravel-recipes.com/recipes/52

Laravel Tricks http://www.laravel-tricks.com/

CMS https://github.com/sseffa/sfcms

Laravel E-Commerce https://medium.com/laravel-4/c5afca925f28 [ Laravel ile e-ticaret sistemi ]

 

 

Faydalı olan başka linkleri de iletirseniz yazıya ekleyebilirim 🙂

phpmyadmin session süresini arttırmak

Local ortamda çalışırken phpmyadmin’de sürekli timeout yiyerek tekrar giriş yapmak zorunda kalmak canımı sıktı. Bende bu süreyi nasıl uzatacağımı buldum.

Öncelikle phpmyadmin’in config.inc.php dosyasını bulunuz. (linux’ta /etc/phpmyadmin/ klasörünün altında olması gerekiyor.) Buraya $cfg[‘LoginCookieValidity’] parametresini ekleyeceğiz. Ben 1 yıl timeout süresi verdim şu şekilde;

$cfg[‘LoginCookieValidity’] = 31536000; /*365 * 24 * 60 * 60*/

NOT : BUNU SADECE LOCAL ORTAMDA ÇALIŞIRKEN UYGULAYINIZ!!!

class_exists ve spl_autoload

Eğer spl_autoload ile bir autoloader belirttiyseniz, daha sonra kodunuzun herhangi bir yerinde class_exists() ile o sınıfın olup olmadığını kontrol ediyorsanız, zaten kontrol etme işlemiyle birlikte sınıfı load etmiş oluyorsunuz.

Bunu http://www.php.net/manual/en/function.spl-autoload-register.php#95456 linkindeki yazıdan da görebilirsiniz.

 

Bir örnek kod da vermeye çalışacağım ilerleyen zamanlarda.

PHP – Sayfanin iframe icerisinde acilmasini engellemek

Bazı durumlar olur ki, sitenizin, veya bir web sayfanızın iframe içinde açılmasını istemezsiniz. Bu durumda ne yapabiliriz diye bir bakındım ve güncel browser’ların kullandığı bir yöntem gördüm.

Örneğimiz şöyle olacak :

1 adet test.html sayfası,
1 adet test.php sayfası.

test.html içeriği

test.php in iframe <br />
<iframe src = 'test.php'>

test.php içeriği :

<?php
header("X-FRAME-OPTIONS: DENY");

echo "hello world";

?>

Görüldüğü gibi, php dosyamızda bir adet header gönderiyoruz, ve burada Frame seçeneklerini DENY yani engellemesini söylüyoruz.
Böyle olunca örneğin chrome ve mozilla’da iframe içinde “hello world” yazmıyor, çünkü request’i deny üstteki header’dan dolayı ediyor.
Chrome ek olarak konsol’a bir uyarı da basıyor.
Ekran görüntüsü de chrome için şu şekilde oluyor. php-deny-iframe