www.cakal.net Forumları YabadabaDuuuee  

Geri Git   www.cakal.net Forumları YabadabaDuuuee > Forum > Eskiler (Arşiv)

Eskiler (Arşiv) Eski konular

CevaplaCevapla
 
Konu Araçları Görünüm Modları
Old 07-11-2007, 11:47 PM   #1
jockeя
Administrator
 
jockeя Kullanıcısının Avatarı
 
Üyelik Tarihi: Aug 2005
Mesajlar: 8,106
Teşekkür Etme: 20
Thanked 155 Times in 28 Posts
Üye No: 1
İtibar Gücü: 70000
Rep Puanı : 434913
Rep Derecesi : jockeя has a reputation beyond reputejockeя has a reputation beyond reputejockeя has a reputation beyond reputejockeя has a reputation beyond reputejockeя has a reputation beyond reputejockeя has a reputation beyond reputejockeя has a reputation beyond reputejockeя has a reputation beyond reputejockeя has a reputation beyond reputejockeя has a reputation beyond reputejockeя has a reputation beyond repute
Cinsiyet :
Ünvan : Admin
Varsayılan PHP ve Cookie Kullanımı

Bu yazıda sizlere PHP ile Cookie yönetiminin nasıl yapılacağını anlatacağım.
Cookie`ler nedir? Ne işe yarar?
Cookie'ler web sunucusu tarafindan üretilen bilgi parçalarıdır ve client bilgisayara kaydedilirler. Cookie'ler HTML kod içine gömülüdür ve server-client arasinda gidip gelirler. Client'iniz sizin web tarayıcınızdır (örneğin Netscape, Lynx). Sunucu ise web sayfasının bulunduğu makinede çalışan programdır. (örneğin cclub.ktu.edu.tr in 80 no'lu portta çalışan web sunucusu Apache)
Cookie'ler kişiye özel web sayfası yapmak, sayaç yapmak, sörf yapılırken veri kaydetmek, istatistik tutmak gibi işlerde kullanılır.
Cookie`ler ve PHP
PHP ile cookie kullanmak oldukça kolaydır. SetCookie fonksiyonu kullanılarak cookie yaratılır. Cookie'ler HTTP header'in bir parçasıdır, bu nedenle SetCookie fonksiyonu, tarayıcıya öncesinde hiçbir çıktı gönderilmeden çağrılmalıdır. Bu diğer header fonksiyonlari için de geçerli olan kuraldır. Client'tan size herhangi bir cookie gönderildiği zaman sunucuda otomatik olarak bir PHP değişkeni yaratılır. PHP header'i alıp parçalar (parse eder), cookie isimlerini açar ve bu isimleri değişkenlere atar. Mesela SetCookie ("isim","baris") şeklinde bir cookie kullanılırsa PHP otomatik olarak $isim diye bir değişken oluşturup bu değişkenin değerini "baris" yapacaktır. SetCookie'nin tam yapısı şöyledir :
setcookie (string CookieAdı, string CookieDeğeri, int CookieBitişZamanı, dizin, domain, int güvenlik); Dizin: Bu cookie için web server altındakı dizin. Default değeri istenilen sayfanın bulunduğu dizindir.
Domain: Bu cookie'nin kullanılabileceği domain ismi. Default olarak istenilen web sayfasının domain'idir. DOMAIN kısmı iki adet "." içermelidir. ".domainismi.com" şeklindedir.
SECURE: "1" e eşitlenmesi cookie'nin sadece güvenlikli bir HTTPS bağlantı ile transfer edilebileceğini gösterir.
Şunu unutmayın ki, cookie'nin görülebileceği bir sayfa yüklenene kadar cookie görünür olacaktır. Aynı script içerisinde birden fazla SetCookie kullanılırsa ters sırada gerçekleştirilecektir. Eğer bir cookie'yi silmek istiyorsanız değer olarak boş değer vermelisiniz.
Uygulamalar
Şimdi düşünün ki bir siteyi üye olmaya açacağız. Kullanıcının otomatik tanınmasını istiyoruz. Veri tabanı olarak MySQL kullanacağız. Küçük bir veri tabanı oluşturup ad, soyad, email ve ziyaretçi sayısı bilgilerini tutacağız.

mysql> create database users; Query OK, 1 row affected (0.06 sec) mysql> use users; Database changed mysql> create table info (FirstName varchar(20), LastName varchar(40), email varchar(40), count varchar(3)); Query OK, 0 rows affected (0.05 sec) Şimdi cookie'leri kontrol edecek ve veri tabanı ile karşılaştıracak PHP kodu yazalım.
<!--- Index.php3 ---> <?php if(isset($Example)){ // Cookie mevcutsa yapilacaklar $info = explode("&",$Example); $FirstName= $info[0]; $LastName =$info[1]; $email = $info[2]; $count = $info[3]; $count++; $CookieString = $FirstName. '&' . $LastName . '&' .$email . '&' . $count;SetCookie("Example", $CookieString, time() +3600);// cookie yenileniyorecho " <html> <title>Cookie Örnegi</title> </head> <body> <p>Merhaba $FirstName $LastName, siteyi {$count}. kez ziyaret edisiniz.</p> <p>Your email address is: $email</p> <body> <html>"; mysql_connect() or die("Veritabanina baglanilamadi.");// Veritabanini güncelle$query = "UPDATE info SET count=$count WHERE FirstName='$FirstName' AND";$query .= "LastName ='$LastName' AND email='$email'"; $result = mysql_db_query("users", $query) OR die("Veritabaninda problem..."); } else { //Cookie ilk kez atiliyorsa yapilacaklar echo " <html> <head> <Title>Cookie Örnegi</title> </head> <body> <a href=\"reg.php3\">Siteye kayit olmak için tiklayin.</a> </body> </html>";}?>Eğer MySQL server'ı uzaktan kullanıyorsanız, mysql_connect() fonksiyonunu şu şekilde kullanın :

mysql_connect ("server","username","password")OR die ("Veritabanına baglanılamıyor");isset() fonksiyonu yardımıyla eğer istediğimiz cookie'ler varsa bunların PHP'ye değişken olarak gelmesini saglıyoruz :

<? if (isset($Example)) {// Cookie olmasi durumunda isletilecek komutlar ... }else { // Cookie yoksa isletilecek komutlar ... } ?>Bizim örnekte eger cookie varsa sayaç bir artırılacak ve kullanıcıya ait bilgiler ekrana basılacak. Eger cookie yoksa üye olmasını isteyeceğiz. explode() fonksiyonu, bir ayraçla ayrılmış elemanları string dizisi olarak atar. Böylece cookie içindeki veriler elde edilir. Bizim örneğimizde bu string '&' ayraçı ile ayrılmış adı, soyadı, emaili ve sayaç değerlerini tutar. Kullanımı aşağıdaki gibidir:

$info = explode("&", $Example);$info[0], $info[1], $info[2], $info[3] şeklinde cookie'mizin elemanlarına ulaşırız. Görüldüğü gibi explode() fonksiyonunun parametrelerinden biri ayraç, diğeri cookie ismidir. Okuduğumuz cookie'nin elemanlarına yeni değerler verebiliriz. Örneğimizde : $counter++; ile sayacımızı artırıyoruz. Güncellenmiş bilgileri yazmak için yeni bir cookie oluşturuyoruz.

$CookieString = $FirstName . '&' . $LastName . '&' . $email . '&' . $count; SetCookie ("Example", $CookieString, time()+3600);// yeni cookie yaratiliyorYukardaki iki satırda : Önce CookieString'imiz güncellenmiş değerlerle oluşturuluyor. Ayraç olarak yukardaki PHP kodla uyumlu olması için '&' kullandım. Daha sonra güncellenmiş bilgileri cookie olarak tarayıcıya gönderiyorum. Sonra MySQL kullanarak yeni sayaç değerini kendi sunucumda veritabanına yazıyorum :
mysql_connect()or die ("Problem connecting to DataBase"); // Veritabanini güncelle $query = "UPDATE info SET count=$count WHERE FirstName='$FirstName' and $query.= "LastName='$LastName' and email='$email'"; $result = mysql_db_query("users",$query) OR die("Problems .... "); Eğer cookie yoksa kişi register olmadı demektir. Register olması için reg.php3 scripti çağrılıyor :
<!--- reg.php3 ---!> <html> <head><title>Siteye Kayit</title> </head> <body bgcolor=#ffffff> <h1>Siteye Kayıt</h1> <form method="post" action="reg1.php3"> <table width=90% align=center> <tr> <td>Kullanici Adi:</td> <td><input ******text name='FirstName' size=20 maxlength=20></td> </tr> <tr> <td>Isim:</td> <td><input ******text name='LastName' size=40 maxlength=40></td> </tr> <tr> <td>E-Posta Adresi:</td> <td><input ******text name='email' size=40 maxlength=40></td> </tr> <tr> <td></td> <td><input ******submit value="Click to Register"></td> </tr> </table> </form> </body> </html> Buradan bir form ile adı, soyadı ve e-posta bilgileri alınır. Kayıt etmek için bu bilgiler reg1.php3 scriptine postalanır :
<!--- reg1.php3 ---!> <?php if ($FirstName AND $LastName AND $email) { mysql_connect() OR die ("Veritabanına baglanilamiyor.");$query = "SELECT * FROM info WHERE FirstName='$FirstName' AND "; $query .= "LastName='$LastName' AND email='$email'";$result = mysql_db_query("users",$query); $r = mysql_fetch_array($result); $count = $r["count"]; if (isset($count)) { $CookieString = $FirstName . '&' . $LastName . '&' . $email . '&' . $count; SetCookie ("Example",$CookieString, time()+3600); echo "<p>$FirstName $LastName zaten mevcut. Varolan bilgiler kullanilacak.</p>"; echo "<p><a href=\"index.php3\">Ana Sayfaya Dön</a>"; } else{ $count = "1"; $query= "insert into info values ('$FirstName','$LastName','$email','$count')"; $result = mysql_db_query("users", $query); $CookieString = $FirstName. '&' . $LastName. '&' . $email. '&' . $count; SetCookie ("Example",$CookieString, time()+3600);echo "Kayıt olduğunuz için teşekkürler.<br>"; } } else{ echo "Forma girilen bilgiler eksik, lütfen geri dönüp bütün alanlari eksiksiz doldurun."; } ?>Kişinin bilgileri veritabanına MySQL ile yazılıyor. Cookie ilk kez karşı makinede oluşturuluyor. Böylece ilk cookie'mizi yarattık ve nasıl yöneteceğimizi öğrendik... Sizler de bu kodları geliştirip kendi uygulamalarınızda kullanabilir ve programlarınıza cookie'lerin sağladığı avantajları ekleyebilirsiniz...
jockeя çevrimdışı   Alıntı ile Cevapla
CevaplaCevapla


Konuyu Görüntüleyen Aktif Kullanıcılar: 1 (0 üye ve 1 misafir)
 

Yayınlama Kuralları
Yeni konu açamazsınız
Cevap gönderemezsiniz
Eklenti ekleyemezsiniz
Mesajlarınızı düzenleyemezsiniz

Kodlama is Açık
Smilies are Açık
[IMG] code is Açık
HTML code is Kapalı


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Win XP de cookie sorunu acil yardım enginx Eskiler (Arşiv) 2 08-08-2007 04:13 PM
XSS Cookie çalma ile web hack jackal Eskiler (Arşiv) 0 09-01-2005 08:27 AM

Forum saati GMT +3 olarak ayarlanmıştır. Şu an saat: 11:27 PM

Yazılım: vBulletin® - Sürüm: 3.8.11   Copyright ©2000 - 2025, vBulletin Solutions, Inc.