Bir önceki yazımda PHP’de Session (Oturum Yönetimi)‘ı anlatmıştım. Şimdi session ile ilgili örnek bir uygulama yapalım.
Aşağıdaki kodlar giris.php sayfasında yer alan kodlardır. Bu sayfa ilk açıldığında session_start() fonksiyonu ile oturum başlatılıyor ve hemen arkasından ekrana giriş formu geliyor. Giriş formuna kullanıcı adı ve şifresiyi yazıp, Giriş Yap butonuna basınca formdan gelen değerler tanımlanan kullaniciadi ve kullanicisifresi adlı oturumlara atanarak index.php sayfasına yönlendiriliyor.
<?php // giris.php sayfası session_start(); if(isset($_POST["girisbuton"])) { $_SESSION["kullaniciadi"] = $_POST["kadi"]; $_SESSION["kullanicisifresi"] = $_POST["sifre"]; header('location: index.php'); } ?> <form name="kullanicigirisi" method="post" action=""> <table width="354" border="0" cellpadding="2" cellspacing="5"> <tr> <td width="130" height="25">Kullanıcı Adı</td> <td width="12">:</td> <td width="189"> <label for="kadi"></label> <input type="text" name="kadi" id="kadi"> </td> </tr> <tr> <td>Kullanıcı Şifresi</td> <td>:</td> <td><input type="text" name="sifre" id="sifre"></td> </tr> <tr> <td> </td> <td> </td> <td> <input type="submit" name="girisbuton" id="girisbuton" value="Giriş Yap"> </td> </tr> </table> </form>
Aşağıdaki kodlar index.php sayfasında yer alan kodlardır. Bu sayfada oturum başlatma fonksiyonunu yazarak, if kontrolünde giris.php sayfasından gelen kullanıcı adı ve şifrenin doğruluğunu kontrol ederek ekrana Hoş geldiniz yazısını basıyoruz. Eğer giris.php sayfasından gelen bilgiler ile if kontrolündeki bilgiler aynı değilse tekrar giris.php sayfasına yönlendiriyoruz.
<?php // index.php sayfası session_start(); if($_SESSION["kullaniciadi"] == "admin" && $_SESSION["kullanicisifresi"] == "admin123") { echo "Hoş Geldiniz Sayın ".$_SESSION["kullaniciadi"]."<br><br> <a href='ozel_sayfa.php'>Özel Sayfa</a> | <a href='cikis.php'>Çıkış</a>"; } else { header("location: giris.php"); } ?>
Aşağıdaki kodlar ozel_sayfa.php sayfasında yer alan kodlardır. index.php sayfasından bu sayfaya geçiş sağlanabilmesi için Özel Sayfa diye bir link vermiştik. Amacımız oturumumuzun diğer sayfalara geçişlerde de devam ettiğini göstermektir.
<?php // ozel_sayfa.php sayfası session_start(); if($_SESSION["kullaniciadi"] == "admin" && $_SESSION["kullanicisifresi"] == "admin123") { echo " Bu sayfa size özel bir sayfadır. Oturumunuz başarıyla gerçekleştiği için şuan bu sayfaya girebilmektesiniz. <br><br> <a href='index.php'>Anasayfa</a> | <a href='cikis.php'>Çıkış</a> "; } else { header("location: giris.php"); } ?>
Aşağıdaki kodlar cikis.php sayfasında yer alan kodlardır. Diğer sayfalara yer alan Çıkış Yap linkine tıkladığımızda aşağıdaki kodlar çalışarak oturum sonlandırılarak giris.php sayfasına yönlendirilir.
<?php // cikis.php sayfası session_start(); session_destroy(); header("location: giris.php"); ?>
hocam güzel bir çalışma emeğinize saglık yanlız bu işlemi veri tabanımızdaki tablodan yapsak nasıl değiştiricez siz burda formun içinde vermişsiniz ben bunu md5 ile veri tabanından çekilerek gricek şekilde yapmak istiyorum fakat hata alıyorum
Öncelikle yorumunuza geç cevap verdiğim içim özür dilerim. Veritabanında bulunan kullanıcılar tablosunda sifre diye bir alanınız var. Bu alanda şifrenizi “123456” şeklinde değilde bu şifrenin md5’li halini (e10adc3949ba59abbe56e057f20f883e) saklıyorsunuz. Saklamını işlemini gerçekleştirirken bildiğiniz üzere $sifre diye bir değişkende “123456” şifresini $sifre = md5($sifre) şeklinde md5 ile şifreledikten sonra veritabanınıza kaydettiniz.
Şimdi gelelim veritabanındaki şifre ile giriş yaptırma işlemine. Yukarıdaki gibi form oluşturacaksınız. Bu formdaki kullanıcı adı ve şifre alanını doldurduktan sonra butona bastınız. Butona bastıktan sonra if(isset($_POST[“girisbuton”])) kod aralığı çalışacak. Burada yapmanız gereken ilk işlem $_POST[“sifre”]; ile formdan gelen saf şifreyi md5 ile şifrelemek – $sifre = md5 ($_POST[“sifre”];) -. Şifreledikten sonra bir SQL sorgusu ile formdan gelen kullanıcı adına ve sizin şifrelediğini md5 şifresine sahip bir kullanıcı var mı yok mu diye kontrol ettirmeniz gerekmektedir. Eğer var ise geriye true değeri döndürebilecek bir yapı kurup oturumu başlatabilirsiniz.
Daha detaylı bilgi ve yardım almak için [email protected] adresinden bana ulaşabilirsiniz.
Merhaba hocam. Emeğinize sağlık güzel anlatım olmuş… Benim bir sorum olacak.
Küçük bir yazılım yapıyorum ve bu yazılımda bir adminler birde diğer kullanıcılar olacak. sunucudaki uyeler tabloma statu diye bir satır ekledim. ve kayıt olan uyelere 0 degerini verdim burada 1 değerindekiler admin 0 değerindekiler diğer kullanıcılar oldu. Session sistemim çalışıyor kayıt olup giriş yapınca sayfaları kullanabiliyor tüm kullanıcılar. Burada benim yapmam gereken. 3 adet sayfaya sadece statu degerlerini 1 verdigim adminlerin girmesini saglamak diğer kullanıcıların girmesini engellemek. Yardımcı olursanız sevinirim. teşekkülrer iyi çalışmalar.
Teşekkürler Fevzi Bey,
Yazmış olduğunuz sistemde kullanıcı verileri ile giriş yaptıktan sonra veritabanında bulunan statü değerlerini çektiğinizi söylemişsiniz. Statüye göre sayfaların sadece yetkililere görülmesini basit bir if komutu ile gerçekleştirebilirsiniz.
Yukarıda örnek olarak verdiğim şu kod yerine;
if($_SESSION[“kullaniciadi”] == “admin” && $_SESSION[“kullanicisifresi”] == “admin123”)
Aşağıdaki gibi kod kullanarak statüsü 1 olan kişilerin görmesini sağlayabilirsiniz.
if($_SESSION[“kullaniciadi”] == “admin” && $_SESSION[“kullanicisifresi”] == “admin123” && $_SESSION[“statu”] == 1)
Daha detaylı bilgi ve yardım almak için [email protected] adresinden bana ulaşabilirsiniz.
Fatih bey merhaba;
50 kullanıcılık çağrı merkezi yazılımında session yönetimi ile ilgili sorunlar yaşıyorum.
Sistem benim ekrana çağırdığımve onuç atamak istediğim müşteriyi değil de, databaseden en son çağrılan
müşterinin bilgilerini update ediyor.
50 kullanıcı olduğu için herkes aynı anda müşteri çağırıp, görüşme sonucuna göre müşteriyi update ettiğinde, DB
den son çağrılan kayıt hangisiyse, hepsi onu Update ediyor.
Yardımlarınız için şimdiden tşkler, iyi geceler.
Ekrana hiç aranmamış datayı çağırdıktan sonra , o data başka bir kişiye atanmasın diye hemen UPDATE
ediyorum.
if($abone=$db->get_row(“SELECT * FROM musteriler22 WHERE agent=0 and durum =0 AND atanma =0 and datatipi=1 LIMIT 1 “)){
$db->query(“UPDATE musteriler22 SET durum=2,atanma=1,agent=$agid WHERE id=”.$abone->id.”” );
Sonra bu datayı aradıktan sonra sonuçlandırdığında update ederken, session lar karışıyor,
$_SESSION[“abone_id”] =$abone->id;
$sql=”UPDATE musteriler22 SET
adres='”.@$_POST[“adres”].”‘,
aciklama='”.@$_POST[“bayi_notu”].”‘ ,
sonuc='”.@$_POST[“dddurum”].”‘,
sonuc_detay='”.@$detay.”‘
$ss
WHERE id=”.$_SESSION[“abone_id”].” ” ;
Ekrana örneğin MÜŞTERİ ID si 100 olan kayıt gelmişse, update ederken gidip 101 nolu
kaydı update ediyor.
A kullanıcısının ekranında 100 nolu kayıt, B kullanıcısını ekranında 101 nolu
kayıt varken, C kullanısıcı 102 yi çağırdığında, A ve B kullanıcılarının DURUMUNU GÜNCELLEDİKLERİ KAYIT ID
de 102 oluyor.
Konu hakkındaki mailinizi aldım Ömer bey. Mail üzerinden dönüş yapıyorum.
giriş.php sayfası oluştururken css dosyalarını nasıl çekebiliriz