ASP.NET C# C/C++ Genel HTML/CSS Java JS/Ajax PHP XML Forum

PHP'de Cookie'ler

PHP'de Cookie'ler

Ç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);

  • $ad - çerezin adı. Örn: "kullaniciAdi"
  • $deger - çerezin değeri. Örn: "sagoral"
  • $bitis - UNIX zamandamgası şeklinde olmalı ve çerezin geçerlilik süresini belirdir. Örnek: time()+3600 Yani bir saat
  • $dizin - çerezin geçerli olacağı dizini belirtirsiniz.
    Mesela eğer dizin "/" olarak ayarlanmışsa bütün sitede geçerli olacaktır bu çerez fakat "/forum/" şeklinde ayarlansaydı çerez sitenizin trkodlama.com/forum/ adresinde geçerli olacaktı.
    Bu bölümü doldurmak isteğe bağlıdır. "/" değeri varsayılandır.
  • $domain - çerezin geçerli olacağı alanları belirlersiniz.
    Örneğin ".trkodlama.com" olarak belirlerseniz çerez altdomain.trkodlama.com, deneme.trkodlama.com adreslerinde de geçerli olur.
    Bir diğer şekli ise "www.trkodlama.com" şeklinde belirlerseniz sadece ana alan adı ve alt klasörlerde çalışır çerez. www.trkodlama.com/forum/, www.trkodlama.com/makaleler/ gibi..
  • $guvenli - boolean tipidir. Sitenizin güvenli(https) sunucu olup olmadığını bildirir. Varsayılan ayarı false'dur

Å?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,

 

 

 




Warning: Cannot modify header information

Warning: Cannot modify header information

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,





PHP ile Email Sansürleme

PHP ile Email Sansürleme

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], $isaretEkle0strlen($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,



Bir Element Üç Background

Bir Element Üç Background

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

 



PHP ile XML Dosya'dan Veri Çekme

PHP ile XML Dosya'dan Veri Çekme

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,



PHP ile Watermark Yapımı

PHP ile Watermark Yapımı

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:

  1. Sistemde varsayılan olarak JPG Quality yani JPG kalitesi %75'dir. Bunu arttırmak için imagejpeg($resim); satırını imagejpeg($resim, null, %100); şeklinde değiştirin. %100 kısmını kendinize göre düzenleyin.
  2. Eğer watermark logonun üzerine eklediğiniz resmi ortalamasını istiyorsanız aşağıdaki satırı
    imagecopy($resim, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);
    imagecopy($resim, $watermark, (($w/2)-($ww/2)), (($h/2)-($wh/2)), 0, 0, $ww, $wh);

Umarım faydalı olur.

Kolay gelsin,











RSSTwitter

En son yazılanlardan ilk senin haberin olsun


Valid HTML 5 Valid CSS!

Güncel Programlama Makaleleri by TR Kodlama © 2009 is licensed under a Creative Commons Alıntı-TicariOlmayan 3.0 Unported License.