
Çerezler internet kullanıcılarının bilgisayarlarına web siteleri tarafından bırakılan bir nevi kimlik işlevi gören küçük dosyalardır. Web siteleri bu kimliklerle sizleri tanır.
Mesela projenizde "Beni Hatırla" seçeneği sunmak istiyorsunuz; bu işlemde sizin yardımınıza çerezler yetişir. Tabii ki farklı yollarla bu işlemi oturum(session) ve veritabanı ikilisiylede halledebilirsiniz ama çerezleri kullanmak kadar basit bir yöntem varken buna neden ihtiyaç duyarsınız ki?
Çerez Oluşturma
PHP ile çerezlerimizi setcookie() fonksiyonu ile kuruyoruz. Hemen bir örnekle açıklayalım:
setcookie($ad, $deger, $bitis, $dizin, $domain, $guvenli);
Å?imdi örnek bir çerez oluşturalım:
<?php
/* setcookie() fonksiyonunu bu şekilde kullanmak ile
** setcookie("kullaniciAdi", "sagoral", time()+3600, "/", ".trkodlama.com", false);
** bu şekilde(alt satırdaki) kullanmak arasında hiçbir fark yoktur. */
setcookie("kullaniciAdi", "sagoral", time()+3600);
?>
kullaniciAdi isimli bir çerez oluşturduk ve değerini desagoral yaptık. Bu çerez time()+3600 dediğimiz için bir saat süreyle geçerli olacaktır.
Uyarı: setcookie() fonksiyonu her zaman HTML içerik gönderilmeden önce kullanılmalıdır. Aksi taktirde "Warning: Cannot modify header information..." şeklinde bir uyarıyla karşılaşırsınız. Gerekli çözüm linkte yazıyor.
Bir Yıllık Çerez Oluşturalım
Å?imdiki çerezimizi bir yıllık oluşturalım bakalım time() değerini nasıl değiştiriyoruz?
setcookie("kullaniciAdi", "sagoral", time()+(60*60*24*365));
Bu şekilde çerezin bitiş süresi tam bir yıl sonrası oldu.
Çerezi Okuma
Å?imdi çerez değerini çekelim. "kullaniciAdi" adlı bir çerez oluşturduk ve buna "sagoral" değerini atadık. Å?imdi sayfalarımızda bu değeri nasıl çağırabiliriz ona bakalım:
<?php
// Oldukça kolaydır
echo $_COOKIE["kullaniciAdi"];
?>
Å?u anda "sagoral" adını ekrana yazdırmış olduk.
Çerezi Silme
Sıradaki işlemimiz ise değerini "sagoral" olarak atadığımız çerezi silme:
setcookie("kullaniciAdi", "", time()-3600);
Burada dikkat etmemiz gereken nokta şu, eğer çerezi eklerken bitiş süresini time()+3600 olarak belirlediysek silerkende time()-3600 olarak yazmamız gerekiyor. Aksi taktirde problem yaşayabilirsiniz.
Kolay gelsin,

Merhaba arkadaşlar,
Aşağıdaki hatayı eminim birçoğumuz vakti zamanında yaşamıştır. Eğer sayfanızda ekrana bir çıktı verdikten sonra header fonksiyonunu kullanıyorsanız bu hatayı alırsınız
<?php
echo "İçerik";
header("Location: index.php)
?>
Yukarıdaki örnekği çalıştırdığınızda bu hatayı alacaksınız: Warning: Cannot modify header information - headers already sent by (output started at /dizin/trkodlama/public_html/dosya.php:123) in /dizin/trkodlama/public_html/sistem/oturumlar.php on line 456
Bunun çözümü kısa ve basittir. Kullandığınız sayfanın en üstüne ob_start(); ve en altına da ob_flush(); ekleyin.
<?php
ob_start();
echo "İçerik";
header("Location: index")
ob_flush();
?>
Kolay gelsin,

Bir sayfada kullanıcı emaillerini göstermek istiyorsunuz ama tamamı gözükmesin mi istiyorsunuz? İşte bu sansürleme fonksiyonu tam size göre.. Yaptığı işlem ise şu:
Orjinal email: ounal@trkodlama.com
Sansürlü email: o***l@trkodlama.com
Hemen gerekli fonksiyonu sizlerle paylaşıyorum:
function emailSansur($email, $isaret = "*") {
$diziEmail = explode("@", $email);
for ($i = 1; $i<= (strlen($diziEmail[0]) - 2);$i++) {
$isaretEkle .= $isaret;
}
return $diziEmail[0]{0}.substr_replace($diziEmail[0], $isaretEkle, 0, strlen($diziEmail[0])).$diziEmail[0]{strlen($diziEmail[0])-1}."@".$diziEmail[1];
}
$isaret parametresini tanımladığınız anda sansürlenen yerlere tanımladığınız veri yazılacaktır. Mesela varsayılan olarak "*" tanımladım. Mailler o***l@trkodlam.com olacak. Siz "x" tanımlarsanızoxxxl@trkodlama.com olacaktır. Kullanımı çok basittir:
emailSansur("ounal@trkodlama.com", "TR");
Kolay gelsin,

Merhaba arkadaşlar,
Bugünkü yazımda bir CSS elementine birden fazla nasıl background ekleyebileceğinizden bahsedeceğim. Bu özellik CSS3 ile birlikte kullanılabiliyor. Å?öyle bir örnek ile buna neden ihtiyaç duyabileceğimizi anlatalım.
Bir kutunuz var ve köşelerinin sizin koyduğunuz resimlerden oluşmasını istiyorsanız. Bunun için iki CSS elementi belirliyordunuz ve ayrı ayrı işleme sokuyordunuz. Bu özellik sizi bu ayrımcılıktan kurtarıyor. Lafı fazla uzatmadan nasıl yapıldığını inceleyelim:
/* CSS dosyamız */
.elementAdi{
background-image: url("sol_ust.gif"), url("sag_ust.gif"), url("resim3.gif");
background-position: top left, top right, bottom center;
background-color: #FFFFFF, #FFFFFF, #DDDDDD;
}
Yani her eklediğiniz değeri virgül ile ayırarak yazıyorsunuz. Ama sıralama önemlidir. Yani sol_ust.gif için top left geçerli olacaktır.
Kolay gelsin

Merhaba,
Bu makalemde PHP ile XML dosyasındaki veriyi nasıl okuyacağımızı göstereceğim. Bu makaleyi okuduktan sonra dilediğiniz sitenin(paylaşıma açık olması gerekli) XML dosyalarına erişebilirsiniz. Ayrıca kendi RSS Okuyucunuzu bile yapabilirsiniz. Sonuçta RSS okuyucularının çıkış noktası XML dosyalarının yorumlanmasıdır.
Teorik Bilgi: PHP simpleXML XML dosylarınızı nesneye çevirmenizi sağlar. Bu makalede simpleXML'in simplexml_load_file() fonksiyonunu göreceğiz. Fonksiyonun kullanım yapısı şu şekildedir:
simplexml_load_file('dosya'); // Daha detaylı bir kullanım için php.net'i ziyaret etmeyi unutmayın
Hemen bir örnek ile kullanımını göstereyim. Öncelikle uyeler.xml adlı bir dosya oluşturun. Bu dosyanın içeriği aşağıdaki gibi olsun:
<?xml version="1.0" encoding="iso-8859-1"?>
<uyeler>
<uye>
<ad>sagoral</ad>
<adres>İzmir Türkiye</adres>
<email>ounal@trkodlama.com</email>
</uye>
<uye>
<ad>Oral ÜNAL</ad>
<adres>İzmir Çiğli</adres>
<email>ounal_2@trkodlama.com</email>
</uye>
<uye>
<ad>Oral</ad>
<adres>Çiğli Türkiye</adres>
<email>ounal_3@trkodlama.com</email>
</uye>
</uyeler>
Aşağıdaki PHP kodu ile XML dosyamızdaki bütün verileri simplexml_load_file() ve foreach() kullanarak okuyalım:
// Å?imdi uyeler.xml dosyamızı çekelim ve eğer hata meydala gelirse hatayı yazdıralım:
if(!$xml=simplexml_load_file('uyeler.xml')){
trigger_error('XML dosyasını okurken hata meydana geldi.',E_USER_ERROR);}
echo 'XML dosyasının içeriğini yazdıralım:...<br />';
foreach($xml as $uye){
echo 'Ad: '.$uye->ad.' Adres: '.$uye->adres.'
Email: '.$uye->email.'<br />';
}
Yukarıdaki PHP kodunun ekran görüntüsü aşağıdaki gibi olacaktır:
XML Dosyasının içeriğini yazdıralım:...
Ad: sagoral Adres: İzmir Türkiye Email: ounal@trkodlama.com
Ad: Oral ÜNAL Adres: İzmir Çiğli Email: ounal_2@trkodlama.com
Ad: Oral Adres: Çiğli Türkiye Email: ounal_3@trkodlama.com
Gerçekten çok kolaymış değil mi? Ne kadar kolay olduğunu gördünüz. Å?imdi bir örnek daha yapalım ve tamamen pekiştirelim. Bu örneğimizde sadece adları alalım ve alt alta sıralayalım:
// Å?imdi uyeler.xml dosyamızı çekelim ve eğer hata meydala gelirse hatayı yazdıralım:
if(!$xml=simplexml_load_file('uyeler.xml')){
trigger_error('XML dosyasını okurken hata meydana geldi.',E_USER_ERROR);}
echo 'XML dosyasının içeriğini yazdıralım:...<br />';
foreach($xml as $uye){
echo 'Ad: '.$uye->ad.' <br />';
}
Yukarıdaki PHP kodunun ekran görüntüsü aşağıdaki gibi olacaktır:
XML Dosyasının içeriğini yazdıralım:...
Ad: sagoral
Ad: Oral ÜNAL
Ad: Oral
Ne kadar kolay olduğunu görmüş olduk. Å?imdi XML dosyasından bilgi çekme tarzımızı değiştirelim. Bu işlemde oldukça basittir. Tamamen dizi mantığı ile bu olayından üstesinden geleceğiz. Örneğimizi inceleyelim:
// Sadece ilk üyenin bilgilerini çekelim
if(!$xml=simplexml_load_file('uyeler.xml')){
trigger_error('XML dosyasını okurken hata meydana geldi.',E_USER_ERROR);}
// İlk kullanıcının adını alalım
echo 'İlk kullanıcının adı: '.$xml->uye[0]->ad;
Yukarıdaki kodun ekran görüntüsü aşağıdaki gibi olacaktır:
İlk kullanıcının adı: sagoral
PHP'de biliyorsunuz sayma işlemi 0'dan başlıyor.. Bu nedenle 1. üyenin bilgisini çekerken 0; 2. üyenin bilgisini çekerken 1 kullanıyoruz. Yani dizilerle aynı mantıkla çalışıyor.
Umarım yararlı olmuştur.
Kolay gelsin,

Merhaba arkadaşlar,
Bugünkü makalemde PHP ve HTACCESS yardımı ile web sitenizdeki resimlerinize nasıl watermark yani resimlerin üzerine kendi logonuzu nasıl ekleyebileceğinizden bahsediyorum.
Bunları kendiniz tedarik edin. Yani watermark.php ve .htaccess isimli iki dosya oluşturun. Daha sonra arkaplanı transparan ve opacity'si %60-%70 civarında olan bir PNG logo oluşturun kendinize. En sonra olarak da elinizdeki JPG resimlerden birini alın. Bunların hepsini bir klasöre atın.
Şimdi gelelim dosyalarımızın içeriklerine..
watermark.php:
<?php
$dizin = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];
// İstenilen resmi alalım
$resim = imagecreatefromstring(file_get_contents($dizin));
$w = imagesx($resim);
$h = imagesy($resim);
// Watermark'ı yükleyelim.. Logo.png'yi değiştirin...
$watermark = imagecreatefrompng('logo.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);
// Logoyu resimle birleştiriyoruz
imagecopy($resim, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);
// Resmi basalım...
header('Content-type: image/jpeg');
// Şu anda JPG kalitesi %75'dir. Bu varsayılan ayardır. Bunu %100 yapmak için şunu kullanın imagejpeg($resim,null,100);
imagejpeg($resim);
exit();
?>
.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .(gif|jpeg|jpg|png)$ watermark.php [QSA,NC]
Bu dosyalarınızın bulunduğu klasördeki bütün resimlerde artık logo.png diye belirttiğiniz dosya bulunacaktır.
Ekstra Özellikler:
Umarım faydalı olur.
Kolay gelsin,
Güncel Programlama Makaleleri by TR Kodlama © 2009 is licensed under a Creative Commons Alıntı-TicariOlmayan 3.0 Unported License.