Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  Üyelik gerektiren web sitelerinde kullanıcının kendini tanıtabilmesi, o olduğunu isbat edebilmesi için kullanıcı adı ve şifre girerek doldurduğu form. Aşağıdaki HTML kodu bir login formu görüntüler: (bu form login.php isimli sayfada olsun.)

<form action="do_login.php" method="post">
Kulanıcı Adı: <input type=text name="username"><br>*
      Şifre : <input type=password name="password"><br>*
<input type=submit value="Gönder">*
</form>

Bu kodun browserda görünen şekli aşağıdaki gibidir:
Kullanıcı Adı : ______________
        Şifre : ______________
[ Gönder ]

"Gönder" butonuna basıldığında browser bir HTTP request hazırlar. Bu request (talep), kullanıcının girdiği username ve password değerlerini do_login.php adresine gönderecektir. Bu aşamada do_login.php kodunun yapması gereken şey; gönderilen kullanıcı adı ve şifreye sahip bir kullanıcının var olup olmadığını tesbit etmektir. Bunun için veritabanından sorgulama yapılır. Aşağıdaki gibi:

<?
$username = $_POST['username']; // formdan post ile gönderilen kullanıcı adı
$password = $_POST['password']; // formdan post ile gönderilen şifre

include("database.class"); // db işlemleri için kullandığımız database sınıfı

$db = new Database();
$sql = "
    select
        id
    from
        member
    where
        username='".addslashes($username)."' and
        password='".addslashes($password)."'";

$user_id = $db->getValue($sql);
?>

Bu aşamada eğer böyle bir kullanıcı varsa $user_id değişkeni kullanıcı id değerine sahip olacaktır. Bu durumda oturum açılmalı ve kullanıcı login sonrası sayfaya yönlendirilmelidir. Eğer bu isim ve şifreye sahip kullanıcı yoksa tekrar login.php sayfasına geri gönderilmelidir. Yani kodumuz aşağıdaki gibi devam edecektir:

<?
if($user_id>0)
{
    $_SESSION['user_id'] = $user_id; // oturum açmak dediğimiz olay budur.
    header("location: /uyelere_ozel_sayfa.php");
    exit;
}
else
{
    // demek ki böyle bi kullanıcı yok. login fomunu tekrar göstermek için login.php'ye yönlendirelim.
    header("location: /login.php?hata=1");
    exit;
}
?>

Bu kodda görülen $_SESSION'lı satır kafa karıştırabilir. Bunu biraz açalım. Bir ziyaretçi bir siteye girdiği zaman server tarafından ziyaretçinin bilgisayarına bir cookie bırakılır. Sadece o ziyaretçiye verilen bir sayıdır bu. Buna session id denir. Ziyaretçi site içinde gezinirken her bir sayfayı talep ettiğinde bu sayıyı da talebiyle beraber server'a gönderir. Böylece server ziyaretçiyi tanımış olur.

PHP kodunuzda $_SESSION['user_id'] = $user_id ataması sadece o anki ziyaretçi için geçerli olur. $_SESSION['user_id'] değeri ise bütün sayfalarınızdan kullanılabilir hale gelir. Eğer $_SESSION['user_id'] nin değeri 0'dan büyükse anlarsınız ki; biz bu değeri daha önce do_login.php'de set etmişiz. Dolayısıyla kullanıcı login aşamasını geçmiş. Böylece örneğin uyelere_ozel_sayfa.php adresinde bu değeri kontrol ederek kullanıcının login aşamasını geçip geçmediğini, geçtiyse kullanıcı id'sinin ne olduğunu anlayabilirsiniz. Aşağıdaki gibi:

uyelere_ozel_sayfa.php
<?
if($_SESSION['user_id']>0)
{
    echo "hoşgeldiniz. Siz bizim kayıtlı kullanıcımızsınız.";
    echo "kullanıcı id'niz : ".$_SESSION['user_id'];
    echo "şimdi size çok özel hizmetlerimizi sunalım...";
}
else
{
    header("location: login.php");
    exit;
    // kullanıcının bu sayfaya erişme yetkisi olmadığından direk login.php'ye postalıyoruz.
}
?>


Buraya kadar anlatılan işleme authentication denir. Yani kullanıcının o olduğunu tesbit etme. Bir de authorization işlemi vardır ki; bu ikinci safhadır. Kullanıcıların yetkilendirilmesiyle ilgilidir.
fizikci
22 Ağustos 2006 14:28
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?

Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
© 2005, Bilişim Kulübü. (1093 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen