Antalya Tasarım Grubu - Web Sitesi Tasarım    ATG - Genel Bilgi Sayfaları Geri Ileri
CGI hakkında ön bilgi
CGI nedir, ne işe yarar?
Kişisel web server kurulumu
Programların çalışabilmesi için gerekli kodlar
Ekrana yazdırma ve ilk program
Perl diline giriþ
Değişkenler
Splice ve split fonksiyonlarý
Formları kullanma
Çevre değişkenleri
Döngüler
Mantıksal sınama
Matematiksel işlemler
Dosya işlemleri
Alt programlar
Bulma ve değiştirme
Web üzerinden mail gönderme
Perl ile dizin işlemleri
Cookie'ler
Modüller, modül kullanımı ve require
Yazılma sonrası işlemleri
Güvenlik
Upload
Lisans konularý
Programların lisansı ve copyrigth haklarý
Linkler
Perl ile ilgili Türkce ve yabancı linkler
Bu döküman hakkında
Bu döküman hakkında
Antalya Tasarım Grubu - Web Tasarim Hizmetleri - Hosting (Barindirma) Islemleri - Alan Adi Islemlerii

Perl ile cookie'ler :

Cookie'ler, web sayfalarında kullanılan programlar tarafından (CGI/Perl, PHP, ASP, JavaScript..) bazı işlemleri kolaylaştırmak, formları tekrar tekrar doldurma külfetinden kurtulmak ya da bir dahaki ziyarette hatırlamak üzere ziyaretcinin bilgisayarına gönderilen dosyalardır. Hemen hemen her server'da bulunan CGI.pm modülü ile cookie gönderme işlemi çok kolaylaştırılmıştır. Öncelikle CGI.pm modülünün kullanıldığını belirten kodu programın en başına yazmak gerekir

use CGI qw(:standard);

CGI.pm modülü kullanarak cookie göndermek için bir ilişkili dizi (hash) değişken oluşturulur;

   
$cookie = cookie(-name    =>   "cookie_ismi",
                       -value   =>   "cookie_degeri",
                       -path    =>   "cookie_yolu",
                       -expires =>   "cookie_zamani");

Örnekte "name" anahtarlı bölüm cookie ismidir. Daha sonra gönderilen cookie'yi okuturken bu isim ile çağırılır. "value" değeri cookie'nin içine yazdırılacak bilgidir. Bu bilgi form vasıtası ile gelen bir değişken olabileceği gibi, programın gönderebileceği bir değer de olabilir. Buradaki "path" değeri de programın tam yoludur. Bu bölüm isteğe bağlıdır yani -path ile başlayan satır olmasa da cookie gönderilir ve okunur. "expires" değeri de cookie'nin ne kadar süre geçerli olacağıdır. Bu bölüme gelebilecek değerler şu şekildedir:

Oturumluk :

-expires => "",

"expires" değeri boş bırakılırsa bilgisayara bir oturumluk cookie gönderilir ve browser kapandığında bu cookie silinir.

Günlük :

-expires => "+1d",

"expires" değeri yukarıdaki şekilde düzenlenirse bilgisayara "d" harfinden önce yazılan rakam kadar günlük cookie gönderilir. +5d yazıldığında 5 günlük, +15d yazıldığında 15 günlük cookie gönderilir.

Aylık :

-expires => "+1M",

"expires" değeri yukarıdaki şekilde düzenlenirse bilgisayara "M" harfinden önce yazılan rakam değeri kadar aylık cookie gönderilir. +1M bir aylık, +5M beş aylık cookie gönderir.

Yıllık :

-expires => "+1y",

"expires" değeri yukarıdaki şekilde düzenlenirse bilgisayara "y" harfinden önce yazılan rakam değeri kadar yıllık cookie gönderilir. Mesela +1y yazdığımızda bir yıllık, +10y yazdığımızda 10 yıllık cookie gönderilir.

Cookie Silme :

Eğer daha önceden gönderdiğimiz bir cookie'yi geçersiz hale getirmek istiyorsak aynı cookie ismi ile "expires" değerini "now" olarak girip bu cookie'yi aynen önceki cookie'yi yazdırıyormuş gibi yazdırırız.

-expires => "now",

Dizi değişken oluşturulduktan sonra CGI.pm modülü kullanılarak cookie makinaya gönderilir :

print header(-cookie=>$cookie);

CGI.pm modülü ile daha önce gönderilmiş cookie'yi okumak çok kolaydır :

$isim = cookie("cookie_ismi");

Burada yukardaki hash değişkenin "-name" anahtarına değer olarak verdiğimiz ismi yazdık ve $isim değişkenine atadık. Daha sonra bu değişkeni kullanarak makineye gönderdiğimiz isim değeri ile işlem yapabiliriz.

Toparlamak açısından cookie gönderen bir örnek yapalım. Basit örneğimizde ziyaretci sayfaya geldiğinde ismini sorgulayan bir form olsun, ziyaretci ismini yazıp göndersin ve program makinaya cookie göndersin. Eğer ziyarecti daha önce bu formu doldurmuşsa cookie okunsun ve ekrana yazılsın, form gösterilmesin :

#!/usr/bin/perl

# cookie.cgi

use CGI qw(:standard);

$query = new CGI;

$isim        = $query -> param('isim');
$istem       = $query -> param('istem');

$cookie_isim = cookie("ziyaretci_ismi");

if ($istem eq "kukile") {
$cookie = cookie(-name    =>   "ziyaretci_ismi",
                                  -value   =>   "$isim",
                                  -expires =>   "+1d");

print header(-cookie=>$cookie);

print "Cookie basariyla gonderildi, geri donus icin <a href=cookie.cgi>buraya tiklayin</a>";

exit;
}

if ($istem eq "kukisil") {

$cookie = cookie(-name    =>   "ziyaretci_ismi",
                         -value   =>   "$isim",
                         -expires =>   "now");


print header(-cookie=>$cookie);

print "Cookie basariyla silindi, geri donus icin <a href=cookie.cgi>buraya tiklayin</a>";

exit;
}

print "Content-Type: text/html\n\n";

if ($cookie_isim eq "") {

print "<form action=cookie.cgi method=post>";
print "<input type=hidden name=istem value=kukile>";
print "Merhaba, lütfen isminizi girin : ";
print "<input type=text name=isim>";
print "<input type=submit value=\"Cookie'yi Gönder!\">";

exit;
}

print "Hoşgeldin <b>$cookie_isim</b>, ismini içeren cookie 1 gün süreyle makinanda barınacaktır,";
print "denemek için tarihini bir gün ileriye alıp tekrar ziyaret edebilirsin. ";
print "Makinadaki cookie'yi silmek için <a href=cookie.cgi?istem=kukisil>buraya tıklayabilirsin";




Dikkat !!! Cookie gönderirken cookie'den önce şu kodu :

print "Content-Type: text/html\n\n";

kullanmayın, cookie gönderildikten sonra kullanabilirsiniz. Eğer bu kodu cookie gönderilmeden önce (print header(-cookie=>$cookie); kodundan önce) kullanırsanız cookie'nin içerdiği bilgiler direk ekrana yazılır.
p