Yenilikleri, isteklerinizin aşamalarını görebilirsiniz.
Arkadaşlar tabi ki konularınızı; başlık, açıklama ve düzenli bir kod dökümanı halinde ilettiğiniz takdirde paylaşırız. Bunun için info@phpmutfagi.com mail adresine yazmanız yeterlidir. Sadece tek şartımız herkesin anlayacağı bir dilde anlatmanız (Konularınızı iletirken lütfen imzanızı da gönderin. İsim soyisim, varsa linkedin veya başka bir sosyal medya hesabınız).
31-12-2022
Php derslerinde, php hazır kodlarda, php hatalarda ve ya tüm konularda hızlıca arama yaparak aradığınıza hızlıca ulaşabilirsiniz.
Yayın Tarihi
Arkadaşlar tabi ki konularınızı; başlık, açıklama ve düzenli bir kod dökümanı halinde ilettiğiniz takdirde paylaşırız. Bunun için info@phpmutfagi.com mail adresine yazmanız yeterlidir. Sadece tek şartımız herkesin anlayacağı bir dilde anlatmanızdır.
Konularınızı iletirken lütfen imzanızı da gönderin. (İsim soyisim, varsa linkedin veya başka bir sosyal medya hesabınız)
Php session genellikle oturumları yönetmek, sayfalar arası veri göndermek için kullanılır.
session_start()
komutu her zaman için sayfanın en başına yazılmalıdır. Daha sonra html, php, css, jquery vb. kodlar yazılmalıdır.Kullanım ve mantık olarak tamamen çerezler(cookie) ile aynıdır;
Bu sebeplerden dolayı üyelik sistemleri, e-ticaret sistemleri, ödeme sistemleri gibi güvenliğin önemli olduğu noktalarda session kullanılması gerekmektedir hatta kullanımı zorunludur.
$_SESSION[""]
kullanmadan önce kullanılmak istenilen tüm sayfalarda en tepesine tüm kodlardan önce session_start()
komutu yazılır. Bu komut o sayfa içerisinde session kullanılacağını belirtir ve sunucuyu hazırlar. session_start()
yazmadığınız taktirde sessionu kullanamazsınız.
<?php
session_start();
//$_SESSION["sessionun_adi"];
$_SESSION["ilk_sessionum"] = "Merhaba Dünya !";
echo $_SESSION["ilk_sessionum"]; // Çıktı: Merhaba Dünya !
?>
<?php session_start(); //BU SAYFADA $_SESSION[""] KULLANACAĞIMIZI BELİRTTİK. $_SESSION["bilgi"] = "Test Session"; ?> < ><html> <head> <title>Session HTML İçerisinde Kullanımı</title> </head> <body> <p><strong>Session değeri:</strong> <?php echo $_SESSION["bilgi"]; ?></p> </body> </html>
Session ile proje klasörünüzün altındaki .php dosyalarına birbirleri ile haberleşmek için değişken, veri vb. değerler gönderebilirsiniz. En çok tercih edilme sebeblerindendir.
localhost'unuzda çalıştığınız zaman sessionlar komple www dizinini görmektedir çünkü bilgisayarınızdaki sanal sunucunuz www dizinidir. Bu yüzden localhostta diğer projeye geçtiğinizde aynı session isimlerini kullandıysanız tanımlanmış olacaktır. Gerçek sunucuda her domaine ayrı bölüm açıldığı için problem yaşanmamaktadır.
<?php session_start(); // Sessionu başlattık. ?> < ><html> <head> <title>Session Kullanımı</title> </head> <body> <?php $_SESSION["metin"] = "Test Metin Session Değeri"; $_SESSION["sayi1"] = 10; $_SESSION["sayi2"] = 5; ?> <p>Şuan 1. Sayfadasınız ve "metin" Session değeri : <?php echo $_SESSION["metin"]; ?></p> <br /> <a href="sayfa2.php">2.Sayfaya Git </a> </body> </html>
<?php session_start(); // Sessionu başlattık. ?> < ><html> <head> <title>Session Kullanımı</title> </head> <body> <?php $toplam = $_SESSION["sayi1"] + $_SESSION["sayi2"]; /* 2 sayfada da session başlattığımız ve aynı proje dizininde olduğu için session ile farklı sayfalara değer gönderebildik. Toplam çıktısı olarak 15 çıkacaktır. */ ?> <p>Şuan 2. Sayfadasınız. "sayi1" ve "sayi2" Sessionların toplamı : <?php echo $toplam; ?></p> <?php if(isset($_SESSION["metin"])){ //isset() bildiğiniz gibi bir değişkenin tanımlı olup olmadığını kontrol ediyor. //sayfa1.php sayfasında tanımlandığı için burada tanımlı olarak çalışacaktır. ?> <p>"metin" adında session tanımlanmıştır ve Eski Değer => <?php echo $_SESSION["metin"]; ?></p> <?php $_SESSION["metin"] = date("Y-m-d H:i:s") . " Tarihinde ve Saatinde Yeni Değer Atandı."; echo '<p>"metin" adında session tanımlanmıştır ve Yeni Değer => ' . $_SESSION["metin"] . '</p>'; //bundan sonra $_SESSION["metin"] session değeri yukarıdaki gibi atanmıştır. Her sayfa yenilendiğinde yeni değer atamaya devam edecektir. } ?> <br /> <a href="sayfa1.php">1.Sayfaya Git </a> </body> </html>
unset()
fonksiyonu ile tanımlanmış olan bir sessionu silip yok edebilirsiniz.
<?php
session_start();
//unset($_SESSION["sessionunuz"]);
$_SESSION["birinci_session"] = "Merhaba Dünya !";
$_SESSION["ikinci_session"] = "Hello World !";
var_dump($_SESSION);
//Tanımlı olan tüm sessionları ekrana bastık.
//var_dump kurtarıcı bir fonksiyondur. Dizilerde, sessionlarda, tanımlı fonksiyonlarda, xml, soap vb. bir çok alanda kullanabilirsiniz.
/* Çıktı:
array (size=2)
'birinci_session' => string 'Merhaba Dünya !' (length=16)
'ikinci_session' => string 'Hello World !' (length=13)
*/
unset($_SESSION["ikinci_session"]);
//unset ile sadece bir sessionu silebilirsiniz.
//$_SESSION["ikinci_session"] 'nu silip yok ettik.
var_dump($_SESSION);
/* Çıktı:
array (size=1)
'birinci_session' => string 'Merhaba Dünya !' (length=
*/
?>
session_destroy()
fonksiyonu tüm tanımlı sessionları siler, öldürür.
Kullandıktan sonra session perde arkasında yok edilir. Yani session_destroy() kullandıktan sonra aynı sayfada gene session değeri gelir ancak farklı sayfada aynı sessionu çağırdığınızda gelmez. Bundan dolayı oturum kapatma işlemlerinde session_destroy()
çalıştırıldıktan sonra sayfa tekrar yönlendirilir.
<?php
session_start();
$_SESSION["birinci_session"] = "Merhaba Dünya !";
$_SESSION["ikinci_session"] = "Hello World !";
session_destroy();
//Şuan tüm sessionlar bu sayfa için öldü.
//Ancak bu sayfada session_destroy(); dan sonra sessionu çağırırsanız gelecektir.
//Başka bir sayfaya yönlendiğinde o sayfada gelmeyecektir çünkü silindi, yok oldu.
?>
Php sessionda diziler çoğunlukla kullanılmaktadır. Bundan dolayı bu konuya da değinme gereği duyduk.
<?php
session_start();
$_SESSION["programlamaDilleri"] = array("PHP", "JAVA", "JAVASCRİPT", "PYTHON" , "C", "DART");
echo $_SESSION["programlamaDilleri"][0] . "<br />"; //Çıktı: PHP
echo $_SESSION["programlamaDilleri"][1] . "<br />"; //Çıktı: JAVA
echo $_SESSION["programlamaDilleri"][2] . "<br />"; //Çıktı: JAVASCRİPT
echo $_SESSION["programlamaDilleri"][3] . "<br />"; //Çıktı: PYTHON
echo $_SESSION["programlamaDilleri"][4] . "<br />"; //Çıktı: C
echo $_SESSION["programlamaDilleri"][5] . "<br />"; //Çıktı: DART
var_dump($_SESSION["programlamaDilleri"]);
/* Çıktı:
array (size=6)
0 => string 'PHP' (length=3)
1 => string 'JAVA' (length=4)
2 => string 'JAVASCRİPT' (length=11)
3 => string 'PYTHON' (length=6)
4 => string 'C' (length=1)
5 => string 'DART' (length=4)
*/
?>
Gördüğünüz gibi normal dizi tanımlaması nasılsa sessionlarda da aynı şekilde kullanılmaktadır. Amaç farklı sayfalara dizi deki değerleri veya komple diziyi gönderebilmek.
Php sessionlarda zaman ayarı eklemek isteyebilirsiniz. Oturumu kendiniz kullanıcı tarayıcıyı kapatmadan sonlandırmak isteyebilirsiniz ve ya bir bilgiyi kısa süreliğine tutup daha sonra silmek isteyebilirsiniz. Böyle durumlarda kenidniz manuel zaman ayarı vermeniz gerekmektedir.
Mantık tamamen basit. Sessionun oluşturulduğu zamanı bilmemiz gerekiyor. Bu yüzden oluşturmadaki zamanı başka bir sessiona kayıt ediyoruz ve sayfa her yenilendiğinde şimdiki zaman ile kontrol ediyoruz.
<?php
session_start();
$_SESSION["sure"] = time() + 20; //şuanki zamana 20 sn ye ekledik.
$_SESSION["uyeAdi"] = "Php Mutfagi";
// YUKARIDAKİ KODU 1 KERELİĞİNE ÇALIŞTIRIN
// DAHA SONRA AÇIKLAMA SATIRI HALİNE GETİRİN.
echo $_SESSION["uyeAdi"] . "<br />";
/*
### YUKARIDAKİ KODU 1 KERE ÇALIŞTIRINCA BU KODLARI AÇIKLAMA SATIRINDAN ÇIKARTIN
### SAYFAYI BELİRLİ ARALIKLARLA YENİLEYİN
### YUKARIDAKİ KOD ÇALIŞTIKTAN 20 SN SONRA İF ŞARTINI SAĞLAYACAKTIR.
if($_SESSION["sure"] < time()){
//EĞER TANIMLADIĞIMIZ SÜRE ŞUANKİ ZAMANDAN KÜÇÜKSE YANİ GEÇMİŞ ZAMANSA SESSİON SONLANACAK.
unset($_SESSION["sure"]);
unset($_SESSION["uyeAdi"]);
// VEYA => session_destroy();
echo "ZAMAN AŞIMINA UĞRANDI.";
}
else echo "HALA SÜREYİ AŞMADINIZ.";
*/
?>