Js ve css dosyalarının browser tarafından cache’lenmesini engelleme

CSS, HTML/DOM, Javascript, php Yorum Yok »

Browser’lar varsayılan olarak javascript, css ve resimler gibi harici dosyaları önbelleğe (cache) alırlar. Genellikle bunu sayfa yeniden açıldığında daha hızlı yükleyebilmek amacıyla yaparlar. Bazen css veya javascript dosyalarımızın browser tarafından ön belleğe alınmasını istemeyiz. Bu sorunu aşağıdaki gibi kolayca halledebilirsiniz.

<link href="/stylesheet.css?<?php echo time(); ?>" rel="stylesheet" type="text/css" />

Aşağıdaki gibi bir sonuç alırsınız. time() fonksiyonu sonucunda elde edilen değer sürekli değişeceği için bu şekilde tanımlanan css veya javascript etiketi browser tarafından farklı bir dosya olarak algılanıp yeniden yüklenecektir.

<link href="/stylesheet.css?1293444465" rel="stylesheet" type="text/css" />

PHP ile css dosyalarının daha hızlı yüklenmesi

CSS, php Yorum Yok »

Web sitenizde birden fazla css dosyası kullanıyorsanız sayfanızın yüklenmesi uzun sürebilir. Aşağıdaki php örneğini kullanarak css dosyalarınızı sıkıştırıp tek bir dosyada birleştirebilirsiniz. Hem tek dosya olması hem de gereksiz boşlukların ve yorumların temizlenmesi css dosyalarınızın daha çabuk yüklenmesini sağlayacaktır.

<?php
header('Content-type: text/css');
ob_start("compress");
function compress($buffer) 
{
	/* yorumlar temizleniyor */
	$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
 
	/* tablar, boşluklar, satırlar temizleniyor */
	$buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);
	return $buffer;
}
 
/* css dosyalarınız */
include('stylesheet.css');
include('typography.css');
include('grid.css');
include('print.css');
include('ozel.css');
 
ob_end_flush();
?>

Sitenizin header bölümünde css dosyalarınız yerine oluşturduğunuz bu php dosyasından istekte bulunanız yeterli.

Metin içerisinde kelime vurgulama/renklendirme

php Yorum Yok »

Arama sonuçlarında aranan kelimeleri renklendirerek veya farklı bir biçimde göstererek vurgulamak isterseniz aşağıdaki fonksiyonu kullanabilirsiniz. Fonksiyon metin içerisindeki kelimeleri regular expression ile bulup değiştiriyor.

<?php
 
function vurgula($metin, $kelimeler)
{
    if (!is_array ($kelimeler) || empty ($kelimeler) || !is_string ($metin))
    {
        return false;
    }
 
    $kelimeler = implode ('|', $kelimeler);
    return preg_replace ('@\b('.$kelimeler.')\b@si', '<strong style="background-color:red">$1</strong>', $metin);
}
 
echo vurgula('Bu metindeki Linux, Apache, Php, Mysql kelimeleri renklendirilecek.', array ('Linux', 'Apache', 'Php', 'Mysql'));
 
?>

Php Url Kısaltma

php Yorum Yok »

Siz de bir twitter kullanıcısı iseniz bilirsiniz, yazacağınız mesajlar 140 karakterle sınırlıdır. Bu sebepten mesajlarınıza bir link eklemek istediğinizde sıkıntı yaşayabilirsiniz. Bu durumu aşmak için internette çeşitli url kısaltma servisleri mevcut. Bunlardan bazılarını api’leri yardımı ile php uygulamalarımızda kullanabiliriz.

İlk olarak üyelik gerektirmeyen Tinyurl.com ile başlayalım :

function getTinyUrl($url)
{
	return file_get_contents("http://tinyurl.com/api-create.php?url=".$url);
}
 
$turl = getTinyUrl('http://www.lampforweb.com/index.php/diger/php-url-kisaltma/');
echo $turl;
 
//http://tinyurl.com/337y28b

Tinyurl.com servisinin kullanımı kolay fakat alan adı nedeni ile karakter sayısında dezavantajları olabiliyor. Alternatif olarak bit.ly servisini kullanabiliriz. bit.ly için öncelikle üye olmanız ve http://bit.ly/a/your_api_key adresinden API kodunuzu almanız gerekiyor.

function getBitly($url)
{
	$content = file_get_contents("http://api.bit.ly/v3/shorten?login=YOURLOGIN&apiKey=YOURAPIKEY&longUrl=".$url."&format=xml");
	$element = new SimpleXmlElement($content);
	$bitly = $element->data->url;
	if($bitly)
	{
		return $bitly;
	}else
	{
		return '0';
	}
}
 
$burl = getBitly('http://www.lampforweb.com/index.php/diger/php-url-kisaltma/');
echo $burl;
 
//http://bit.ly/eWgVL4

Php’de hızlı ve kolay SQL sorguları için ezSQL

mysql, php 1 Yorum »

Php ile proje geliştiren herkesin mutlaka veritabanıyla az veya çok mutlaka işi oluyordur. En ufak veritabanı işlemi için bile bir kaç satır kod yazmak gerekir.

$sorgu = "SELECT * FROM projeler WHERE aktif='E' ";
$sonuc = mysql_query($sorgu);
if (mysql_num_rows($sonuc) > 0)
{
  $veri = mysql_fetch_object($sonuc);
}

Bir şekilde bu kodları uğraşıp yazmış olsak bile ileride projemiz için kullandığımız veritabanı uygulamasını değiştirmek istediğimizde bütün veritabanı kodlarında php komutlarını belli bir veritabanı uygulamasına göre kullandığımız için neredeyse tüm kodları yeniden yazmamız gerekecektir. (mysql_query, mysql_fetch_object gibi)

Peki ne yapmalıyız?

Hem kod yazımını kolaylaştırmak hemde düzgün bir kod yapısı sağlamak hemde ileriye dönük bir kod yapısı kurmak için özel bir veritabanı sınıfı veya fonksiyonlar kullanılabilir. Bu yapıyı ister kendiniz oluşturun isterseniz hazır kütüphanelerden faydalanın. Ama mutlaka böyle bir yapı kullanın.

ezSQL

ezSQL size böyle bir yapıyı kolayca kullanabileceğiniz bir şekilde sunuyor. Bir çok veritabanı programını destekliyor ezSQL. Aynı zamanda wordpress’in veritabanı sınıfı olan wpdb ezSQL kullanılarak geliştirilmiştir.

Yukarıdaki veritabanı işlemlerini ezSQL ile yazmak istesek aşağıdaki gibi bir satır yeterli olacaktır.

$veri = $db->get_row("SELECT * FROM projeler WHERE aktif = 'E' ");

Bu kadar basit :)

ezSQL Kullanımı

Öncelikle bu adresten ezSQL kütüphanesini indiriyoruz. İndirdiğiniz zip dosyasını proje dizinine açın. ezSQL’i projemizde kullanabilmel için iki dosyaya ihtiyacımız var birincisi ezSQL çekirdek dosyası (ez_sql_core.php) diğeri ise kullandığımız veritabanı uygulamasına ait dosya. (mysql için ez_sql_mysql.php)

Şimdi veritabanı işlemleri için ezSQL nesnesini oluşturalım.

include_once "ez_sql/shared/ez_sql_core.php";
include_once "ez_sql/mysql/ez_sql_mysql.php";
$db = new ezSQL_mysql('db_user','db_password','db_name','db_host');

Artık $db nesnesini kullanarak tüm veritabanı işlemlerimizi gerçekleştirebiliriz.

Sorgu örnekleri

Tabloya kayıt ekleme. Bu metod geriye Insert ID’yi döndürür.

$db->query("INSERT INTO projeler (id, proje_adi, baslangic_tarihi, aktif) VALUES (NULL,'ezSQL Sınıfı', NOW(), 'E')");

Kayıt güncelleme.

$db->query("UPDATE projeler SET aktif = 'H' WHERE id= '5' ");

Tek satır veri alma

$veri = $db->get_row("SELECT proje_adi, baslangic_tarihi FROM projeler WHERE id = 5");
 
echo $user->name;
echo $user->email;

Tek bir değer alma

$deger = $db->get_var("SELECT count(*) FROM projeler WHERE aktif= 'E' ");
 
echo $deger;

Birden fazla satır kayıt alma

$sonuclar = $db->get_results("SELECT proje_adi, baslangic_tarihi FROM projeler");
 
foreach ( $sonuclar as $veri )
{
  echo $veri->proje_adi;
  echo $veri->baslangic_tarihi;
}

Diğer örnekler ve daha detaylı bilgi için burayı kullanabilirsiniz.

Umarım projelerinizi daha kolay ve hızlı bir şekilde yürütmenizi sağlayacak bir yazı olmuştur.

Son Derece Kullanışlı 50 Adet PHP Aracı

php 1 Yorum »

Samashing Magazine sitesi Php uygulama geliştiricilerin kesinlikle işine yarayacak 50 adet kullanışlı bir araç listesi oluşturmuş. Liste kategorilendirilmiş. Aradığınız veya ihtiyacını olan bir çok şeyi bu listede bulabilirsiniz.

Hata Ayıklama Araçları
Test ve Optimizasyon Araçları
Dökümantasyon Araçları
Güvenlik Araçları
Resim ve Grafik Oluşturma Araçları
Php Kod Düzenleyiciler
Versiyon Kontrol Sistemleri
Kullanışlı Eklenti, Uygulama ve Kütüphaneler
Online Php Araçları ve Kaynakları
Php Frameworkler
Php Editörleri ve IDE’ler

Php’de serialize ve base64_encode ile sayfalar arasında dizi veya nesneleri taşımak

php 4 Yorum »

Php sayfaları arasında POST veya GET metoduyla gelen değerleri veya sayfa içindeki dizi veya nesnelerin alt elemanlarıyla beraber değerlerini taşımak için aşağıdaki yöntemi kullanabilirsiniz.

form.html // Form verilerinin POST metodu ile gönderileceği form sayfası.

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Form</title>
</head>
<body>
	<form action="islem1.php" method="POST">
		Adı : <input type="text" name="adi" size="30"><br>
		Soyadı : <input type="text" name="soyadi" size="30"><br>
		Email : <input type="text" name="email" size="50"><br>
		Telefon : <input type="text" name="Telefon" size="30"><br>
		Şehir : <select name="sehir">
          	<option>İstanbul</option>
          	<option>Ankara</option>
          	<option>İzmir</option>
        	</select><br>
    <input type="submit" value="Gönder">
	</form>
</body>
</html>

islem1.php //Formdan POST metoduyla gelen değerler islem2.php dosyasına aktarılacak.

<?
$param=base64_encode(serialize($_POST));
 
$link = 'islem2.php?data='.$param;
?>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>1. Adım</title>
</head>
<body>
	<a href="<?=$link?>">2. Adıma Geç</a>
</body>
</html>

Burada form verilerini aktarmak için php’nin serialize ve base64_encode fonksiyonlarını kullanıyoruz. Serialize fonksiyonu bir değişken(dizi veya nesne) içindeki değerleri string’e dönüştürür. base64_encode fonksiyonu ise verilen değeri 64 bit olarak şifreler ve yine string bir değer oluşturur. Oluşturduğumuz bu string değeri sayfalar arasında taşımak, formdaki her bir değeri ayrı ayrı yazıp taşımaktan daha kolaydır. Hatta bazı durumlarda değişkenlerde değişebileceği için bu yöntem daha sağlıklı olacaktır.

<?
$renk[0]='mavi';
$renk[1]='kırmızı';
$renk[2]='yeşil';
$data = serialize($renk);
 
echo $data;
//a:3:{i:0;s:4:"mavi";i:1;s:10:"kırmızı";i:2;s:6:"yeşil";}
 
$data=base64_encode($data);
 
echo $data;
//YTozOntpOjA7czo0OiJtYXZpIjtpOjE7czoxMDoia8Sxcm3EsXrEsSI7aToyO3M6NjoieWXFn2lsIjt9
?>

islem2.php //islem1.php sayfasındaki form değerleri bu sayfaya aktarıldı.

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>2. Adım</title>
</head>
<body>
<?
if(isset($_GET['data']))
{
	$_POST=unserialize(base64_decode($_GET['data']));
	echo 'Adı : '.$_POST['adi'].'<br>';
	echo 'Soyadı : '.$_POST['soyadi'].'<br>';
	echo 'Email : '.$_POST['email'].'<br>';
	echo 'Şehir : '.$_POST['sehir'].'<br>';
}
?>
</body>
</html>

islem1.php dosyasından aktarılan değerleri yeniden kullanabilmemiz için yaptığımız işlemlerin tersini gerçekleştirmemiz gerekiyor. base64_encode ile şifrelediğimiz veriyi base64_decode fonksiyonu ile dönüştürüyoruz. serialize ile string hale dönüştürdüğümüz verieri de unserialize ile dönüştürüyoruz. Artık değişkenlerimizi sayfa içerisinde kullanabiliriz.

Zeev Suraski ve Derick Rethans Türkiye’de!

Diğer, php 1 Yorum »

PHP’nin yaratıcısı ve geliştiricisi Zeev Suraski ile PHP dilinin aktif geliştiricilerinden biri olan Derick Rethans, 24 Ocak 2009‘da Taksim Nippon Otelde düzenlenen web programcıları platformu etkinliği için Türkiye’ye geliyorlar.

Golden Horn Ventures’un liderliğinde gerçekleştirilen etkinlik hakkında bilgi almak ve diğer katılımcıları görmek için www.webprogramcilariplatformu.org adresini ziyaret edebilirsiniz. Etkinlik programı için buraya, kayıt yaptırmak için buraya.

Web programcılarının kaçırmaması gereken bir etkinlik…

PHP, Mysql ve Ajax ile Sürükle-Bırak Sıralı Listeler

ajax, mysql, php 12 Yorum »

drag_drop.gifWeb uygulamalarında çoğu zaman bir listenin sıralamasını kullanıcı seçimi doğrultusunda sunmak gerekir. Favori kataplar, müzikler v.s Bu listelerdeki sıralamayı kullanıcıya göre ayarlamak için de genellikle “Yukarı Taşı”,”Aşağı Taşı”,”En Üste”,”En Alta” gibi butonlar koyup kullanıcının her seferinde sadece bir adım atlayarak sıralamayı yapmasını isteriz. Bir başka yöntemde listedeki her satıra textbox koyup sıralamanın bu kutulardaki sayılara göre ayarlanmasıdır. Kullanıcı sıralamayı tek adımda oluşturacak olsa da hesaplama yapmak zorunda kalacağı için bu yöntem de kolay olmayacaktır.

Bu yazımızda gelişen javascript ve ajax yöntemleri sayesinde sürükle-bırak yöntemini kullanarak böyle bir sıralamayı daha kolay bir şekilde nasıl yapabileceğimizi göreceğiz. Listedeki bir elemanı sürükleyerek sırasının değiştirilmesini, bıraktığımızda ise veritabanına listedeki yeni sırasının kaydedilmesini sağlayacağız. Tüm işlemleri (sürükle-bırak, efektler, ajax ile veri kaydı) Prototype ve Scriptaculous js frameworklerinden faydalanarak yapacağız. Devamını Oku »

PHP’de IN Fonksiyonu

php 1 Yorum »

Mysql’de uzun OR sorgularından bizi kurtaran IN fonksiyonundan daha önce bahsetmiştik. Php’de IN fonksiyonunun tam karşılığı olmasa da aynı şekilde işimize yarayacak olan bir kullanım şekli:

$degisken='php';
if(in_array($degisken, array('linux', 'apache', 'mysql', 'php')))
{
  echo 'www.lampforweb.com';
}
Lampforweb 2007 Tüm hakları saklıdır. Tema N.Design Studio
İçerik RSS Yorum RSS Giriş