PHP de Session İşlemi
Hepinize merhaba dostlarım :). Bu yazımda sizlere PHP de proje geliştirirken karşımıza sıklıkla çıkan, admin panelinin vazgeçilmezi, flash mesajlarının göz bebeği olan SESSION dan bahsedeceğim :). Normal zamanlarda karşınıza çıkmıştır veya seo çalışmaları yapıyorsanız ziyaretçi analizlerinde görmüşsünüzdür session yazılarını. Şimdi gelelim bu session nedir ne değildir bir bakalım. Sözü daha fazla uzatmamaya çalışıyorum hepinizin istekli olduğunu görünce konuya girmek istiyorum :)
Session Nedir ve Niçin Kullanılır ?
Dostlarım session mantıksal bir açıklama yapmak gerekirse oturum yöneticisi olarak adlandırılır. Yani bir siteye üye olup giriş yaptığınızda olsun, flash mesajlar olsun bunlar hep sessiondan ayarlanır. Yani her olay için (login,alert vs) işlemlerde bir oturum oluşturulup olaylar bunun üzerinden yaptırılır. Örnek vermek gerekirse dostlarım kullanım alanı ve benim de hoşuma giden bir şey olan sisteme en son ne zaman girmiş ne zaman çıkmış bilgilerinde giriş için bir session alıp çıkış zamanında o session içeriğini veri tabanında o kullanıcının en son giriş çıkış bilgilerine bastırılmasında çok ama çok önemli rol oynar dostlarım :). Dilim döndüğümce bu paragrafta session un ne olduğuna ve niçin kullanıldığına değindim :). Şimdi gelelim session kullanılmadan önce yapılacak ayarlara :)
Session Öncesi Ayarlar
Dostlarım session ile işlem yapmadan önce bize iki adet kod gerekiyor. Birincisi session oluşturma işlemi için bir emir sağlıyor yani "Sessionlar Başlatılabilir" , diğeri ise çıktı kontrolü sağlayıcısı olarak geçiyor. Bu iki koddan birisi olmasa bile session başlatıldıktan bir süre sonra hatalar çıkabiliyor dostlarım. Bu iki kodu da size tavsiye ediyorum. Hocam artık kodları gösterin dediğinizi duyuyorum ve sözü daha fazla uzatmadan kodları bırakıyorum
<?php
session_start(); // SESSIONLARI BAŞLATIR
ob_start(); // ÇIKTI KONTROLÜ SAĞLAYICISI
?>
şeklindeki kodlarımızı session işlemi yapacağımız sayfada en üste yazıyoruz. Özellikle dostlarım belirtmemiz gerekirse veri tabanı bağlı işlem yapıyorsanız veri tabanı bağlantı dosyanızın içerisine yapmanızda çok ama çok faydası olacaktır :). Çünkü hem ön panelde hem de admin panelinde session açtırma işlemlerinde ayrı ayrı session_start() tanımlamak yerine tek bir yerden yazıp diğer yerlere etki etmesi hem bizim için hem de projemiz için faydalı bir yöntem olacaktır. Şimdi ise gelelim session oluşturma işlemimize :).
Session Oluşturma
Dostlarım session un genel tanımından ve session öncesi ayarlardan bahsettik. Şimdi ise gelelim bu session değişkeni nasıl oluşturulur gelin ondan bahsedelim.
Dostlarım öncelikle dediğim gibi session başlatma kodlarımız yazdıktan sonra deneme isimli bir sesion değişkeni oluşturalım ve içerisine de mfsoftware.net yazalım
<?php
session_start(); // SESSIONLARI BAŞLATIR
ob_start(); // ÇIKTI KONTROLÜ SAĞLAYICISI
$_SESSION['deneme'] = "mfsoftware.net"; // session değişkenimizi oluşturduk
echo $_SESSION['deneme']; // değişkenimzin içeriğini ekrana bastırdık
// Ekran Çıktısı: mfsoftware.net
?>
şeklinde olacaktır dostlarım :). Kullanımı gördüğünüz gibi gayet basit :). Şimdi ise gelelim session içeriği nasıl değiştirileceğine :)
Session Değişkeninin İçeriği Nasıl Değiştirilir ?
Dostlarım session eklemeyi öğrendik iyi güzel ama bazı durumlarda session değişkeninin içeriğini değiştireceğimiz durumlar olabilir dostlarım :). Örnek vermek gerekirse siteye giriş yaptırdığımızda kullanıcıyı bir alert çıksın dedik ve o alert gözüktükten sonra session silinsin istedik. İşte bunu nasıl yapabiliriz diyorsanız dostlarım doğru adrestesiniz. Session değişkenine biir başka değer atayarak session içeriğini değiştirme işlemini halledebiliriz dostlarım :). O halde hızlıca bunu da koda dökelim :)
<?php
session_start();
ob_start();
$_SESSION['alert_status']=1; // alert gösterilecek
if($_SESSION['alert_status']==1){
echo "Alert Bastırıldı";
$_SESSION['alert_status']=0; // session değişkeni değiştirildi
}else{
echo "Alert Bastırılamadı";
}
// Ekran Çıktısı: Alert Bastırıldı
?>
şeklinde kodumuzu yazdık dostlarım :). Bu kod ilk olarak session değişkenimizin içerisine 1 yani true değerini atayacak ve eğer true ise gerçekten içerisine bastırılan değer ekranımıza Alert Bastırıldı değerini yazacaktır. Eğer yazdırma işleminde hata olmuşsa veya true bastırılmamışsa da ekranımıza Alert Bastırılamadı yazacaktır :). Session değişkeninin içeriğini yazdırmayı da anladığımıza göre dostlarım gelelim session değişkenini silmeye :).
Session Değişkeni Nasıl Silinir ?
Evet dostlarım :). Yeri gelir bazen session değişkenini silmemiz gerekebilir. Mesela kullanıcı başarılı şekilde girmiş ise sisteme bizim sistemde alert çıkarmamız gerekecek ama sonradan bu alerti tutacak olan değişkeni silmemiz gerekecek varsayalım dostlarım. İşte burada karşımıza unset() fonksiyonu çıkıyor. Telaffuzunun kibarlığı kadar kullanımı da bir o kadar kolaydır. Sözü daha fazla uzatmadan hemen kodlamaya geçelim dostlarım :). Yukarıdaki paragraftaki örneği gelin unset() ile yapalım
<?php
session_start();
ob_start();
$_SESSION['alert_status']=1; // alert gösterilecek
if($_SESSION['alert_status']==1){
echo "Alert Bastırıldı";
unset($_SESSION['alert_status']); // session değişkenini yok ettik
}else{
echo "Alert Bastırılamadı";
}
// Ekran Çıktısı: Alert Bastırıldı
?>
şeklinde kodumuzu yazdık dostlarım :). Örnekte sesion u oluşturacak ve ekrana Alert Bastırıldı yazacak ve ardından alert_status isimli değişkeni yok edecektir dostlarım :).
Artık session oluşturmayı session değerlerini silmeyi ve değiştirmeyi kavradınız dostlarım :). Şimdi gelin sizinle ufak bir login işlemi yapalım
Dostlarım örneğimiz şu olsun.Öncelikle giris.php dosyamız olsun ve formdan gelen bilgilerden isim Sefer, Soyisim ise Yazıcı olmasını isteyelim. islem.php üzerinde bunun kontrolü yapılsın. Eğer şartlar sağlanıyorsa panel.php sayfasına ilerlemesini isteyelim :). Gelin bunu kodlamaya dökelim. Önce bir giris.php sayfasını hazırlayalım
<!DOCTYPE html>
<html>
<head>
<title>Üye Giriş Sayfası | MFSoftware Blog</title>
</head>
<body>
<form action="islem.php" method="POST">
<label>İsim</label>
<input type="text" name="isim">
<label>Soyisim</label>
<input type="text" name="soyisim">
<button type="submit" name="giris">Giriş</button>
</form>
</body>
</html>
giris.php sayfamızı yazdık dostlarım :). Şimdi sıra islem.php yi yazmaya gelelim
<?php
session_start(); // SESSION u BAŞLATALIM
ob_start();
if(isset($_POST['giris'])){
$isim=$_POST['isim']; // isim değişkenini aldık
$soyisim = $_POST['soyisim']; // soyisim değişkenini aldık
if($isim=="Sefer" && soyisim=="Yazıcı"){
$_SESSION['isim']=$isim; // session değşkenine isim atadık
$_SESSION['soyisim']=$soyisim; // session değişkenine soyisim atadık
header("Location: panel.php");
}else{
echo "Giriş Başarısız";
}
}
?>
Evet dostlarım islem.php yi de yazdık. Kullanıcımız ismini Sefer, Soyismini de Yazıcı olarak girdiği vakit panel.php ye yönlendirilme işlemi yapılacaktır :). Peki ya çıkış yapmak isterse onda nasıl olacak ? Gelin ona da diğer başlıkta değinelim dostlarım
Session Değişkenleri Silinerek Çıkış Yapma
Evet dostlarım login olma işlemini yaptık :). Peki ya kullanıcımız çıkış yapmak isterse bu nasıl olacak ? Çözüm için sabırsızlanıyorsunuz değil mi :). Tüm session ları sildirerek çıkış yaptırıyoruz dostlarım :). Geliln bunu yukarıdaki örneğimizi devam ettirerek görelim dostlarım :)
Kullanıcımız hatırlarsanız login olmuştu sistemimize ve panel.php sayfasına ilerlemişti. Ama panel sayfasını tasarlamadık :). Gelin öncelikle onu tasarlamakla başlayalım dostlarım
<?php
session_start();
ob_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>Panel Sayfası | MFSoftware Blog</title>
</head>
<body>
<a href="logout.php">Çıkış Yap</a>
<h1>Hoşgeldiniz <b><?php echo $_SESSION['isim']." ".$_SESSION['soyisim']; ?></b></h1>
</body>
</html>
şeklinde sayfamızı tasarladık dostlarım :). Kullanıcımız panel.php sayfamızda ve çıkış yapmak istiyor dostlarım :). Bunun için Çıkış Yap linkine bastığı an logout.php ye yönlenecek ve çıkış işlemi yapılacaktır dostlarım :). Gelin logout.php dosyamızı da hazırlayalım hemen
<?php
session_start(); // TÜM SESSİONLARI TEKRAR BAŞLATTIK
session_destroy(); // TÜM SESSİONLARI SİLDİK
header("Location: giris.php"); // GİRİŞ SAYFASINA YÖNLENDİRDİK
?>
şeklinde kodumuzu yazdık dostlarım :). Kullanıcı çıkış yap dediğinde bu sayfaya yönlenecek ve session_start() komutu ile tüm sessionlar tekrardan başlatılacak. Daha sonra session_destroy() komutu ile tüm session veriler temizlenecek ve header() komutu ile içerisinde belirtilen dosyaya gidecek :). İşte size ufak bir login logout işlemi :)
Evet dostlarım bu yazımda elimden geldiğince PHP programlama dilinde session kullanımlarından bahsettim. Umarım faydalı olabilmişimdir. Başlarda biraz karmaşık gelebilir bu konu. Benim her zamanki dediğim gibi istikrarlı ve azimli bir çalışmanız ve bolca pratik yapmanız sonucunda başarı sizler için kaçınılmaz olacaktır dostlarım :).
Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)
Yazar Hakkında
Kendi Halinde Bir Backend Developer