PHP Session (Oturum yönetimi)

Çerezleri kullanarak veri depolayabilseniz de, bazı güvenlik sorunları var. Çerezler kullanıcının bilgisayarında saklandığından, bir saldırganın, uygulamanızı bozabilecek olası zararlı veriler eklemesi için bir çerez içeriğini kolayca değiştirmesi mümkündür.

Tarayıcı sunucuya bir URL istediğinde, bir web sitesinin tüm çerez verileri otomatik olarak istek içinde sunucuya gönderilir. Her biri 4KB büyüklüğünde olan ve her biri 4KB büyüklüğünde bir kullanıcı çerezini kullanıcı sistemine sakladıysanız, kullanıcının sitenizi performansını etkileyebilecek bir sayfayı her görüntülediğinde tarayıcının 20KB veri yüklemesi gerektiği anlamına gelir.

Bu iki sorunu da PHP oturumunu kullanarak çözebilirsiniz. Bir PHP oturumu, verileri kullanıcının bilgisayarından ziyade sunucuda depolar. Oturuma dayalı bir ortamda, her kullanıcı oturum tanımlayıcısı veya SID adı verilen benzersiz bir numarayla tanımlanır. Bu benzersiz oturum kimliği, her kullanıcıyı, e-postalar, gönderiler vb... Gibi sunucudaki kendi bilgileriyle ilişkilendirmek için kullanılır.

Aktif bir İnternet kullanıcısıysanız, Kullanıcı bilgi ve şifresi istenen önemli ticari sitelerde muhtemelen şu ifadeyi gördünüz: Bir sayfayı yeniden açtığınızda uzun süre işlem yapılmadığında Oturumunuzun süresi doldu diye uyarı verilir. Sonuç olarak, otomatik olarak giriş yapmazsanız ve belirli bir web sayfasının işlevleri artık kullanılamaz.

PHP oturumu geçici olarak bir sayfadan diğerine bilgi depolamak ve aktarmak için kullanılır (kullanıcı web sitesini kapatıncaya kadar). Şimdi değişkenler biçiminde tutulan bu veriler geçici olarak sunucuda saklanmaktadır. Tarayıcının penceresini veya sekmesini kapattığınızda, oturum bitecektir.

PHP oturum tekniği, alışveriş sayfalarında, alışveriş sepetindeki bilgileri depolamak ve iletmek zorunda olduğumuz alışveriş merkezlerinde kullanılır, örneğin kullanıcı adı, ürün kodu, ürün adı, ürün fiyatı vb. Bir sayfadan diğerine geçiş sağlar.

PHP oturumu, kullanıcıyı tanımak ve birden çok tarayıcı arasındaki uyuşmazlığı önlemek için her bir tarayıcı için benzersiz bir kullanıcı kimliği oluşturur.

İpucu: Oturum kimlikleri, rastgele tahmin edilmesi imkansız olan PHP motoru tarafından rastgele oluşturulur. Ayrıca, oturum verileri sunucuda depolandığından, her tarayıcı isteğiyle birlikte gönderilmesi gerekmez.

PHP Oturumları: Ana İpuçları

Bir Oturum Başlatmak


Bir PHP oturumu, session_start() fonksiyonu çağrı yapılmasıyla kolayca başlatılır. Bu fonksiyon ilk önce bir oturumun başlatılıp başlatılmadığını denetler ve hiçbiri başlatılmadıysa oturum başlatır. Aramayı sayfanın başında session_start() fonksiyonu başlatmanız önerilir.

Aşağıdaki örnekteki PHP kodu sadece yeni bir oturum başlatır.


<?php

// oturum başlatır
session_start();

?>

Önce session_start() fonksiyonu, bir oturum kimliğinin varlığına bakarak bir oturumun mevcut olup olmadığını kontrol eder. Bir tane bulursa, yani oturum zaten başlatılmışsa, oturum değişkenlerini ayarlar ve eğer yoksa, yeni bir oturum kimliği oluşturarak yeni bir oturum başlatır.

Oturum Verilerini Saklama ve Erişim


Tüm oturum verilerinizi $_SESSION[] süper küresel dizide anahtar - değer çiftleri olarak saklayabilirsiniz. Saklanan verilere bir oturumun ömrü boyunca erişilebilir. Yeni bir oturum oluşturan ve iki oturum değişkenini kaydeden aşağıdaki örneğe bakın.


<?php
// Oturum başlatmak
session_start();
 
// Oturum verilerini kaydetme

$_SESSION["ad"] = "Fatih";
$_SESSION["soyad"] = "Sultan Mehmet";
?>
	

Önceki örneğimizde belirlediğimiz oturum verilerine aynı web alanındaki herhangi bir sayfadan erişmek için - sadece arayarak oturumu yeniden oluşturun session_start() ve karşılık gelen anahtarı $_SESSION ilişkisel diziye iletin.


<<php

// Oturum başlatmak
session_start();
 
// oturum başlatmak
echo 'Merhaba, ' . $_SESSION["ad"] . ' ' . $_SESSION["soyad"];
?>

ÇIKTI:

Merhaba Fatih Sultan Mehmet

Bir Oturum Silme


Belirli oturum verilerini silmek istiyorsanız $_SESSION, aşağıdaki örnekte gösterildiği gibi, ilişkisel dizinin karşılık gelen anahtarını kaldırın.


<?php
// Oturum başlatma
session_start();
 
// Oturum verileri kaldırma

if(isset($_SESSION["ad"])){
    unset($_SESSION["ad"]);
}
?>

Tüm global oturum değişkenlerini kaldırmak için session_unset() fonksiyonunu ve oturum, kullanımını yok etmek için session_destroy() fonksiyonunu kullanın:


<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Tüm oturum değişkenlerini kaldır
session_unset(); 

// Oturumu yok et
session_destroy(); 
?>

</body>
</html>


Səbuhi Bayramov 28/06/2021

Merhaba,hocam birşey soraçakdım ben bir kayıt formu yapdım ve istiyorum ki kullanıcı kayıt olduğunda menü de giriş yap butonunu görmesin onun yerine profil butonunu görsün onu nasıl ayarlaya bilirim?

yönetici 01/07/2021

sabuhi, javascript ile istediğin herhangi bir html elemanı kaldırıp yerine başka bir eleman ekleyebilirsin. giriş yaparken php kodlarına yanına javascript kodlarıda eklemelisin.

Mehmet 12/07/2021

Merhaba, kullanıcı giriş yaptıktan sonra 2dk sonra session oturumu silsin yada kapatsın ve sayfada atsın gibi birşey nasıl yapılabilir. Bulamadım bir süredir araştırıyorum.

yönetici 14/07/2021

ilk olarak, kullanıcının en son istekte bulunduğu zamanı kaydedin.

<?php
  $_SESSION['timeout'] = time();
?>

sonraki istekte, önceki isteklerini ne kadar süre önce yaptıklarını kontrol edin (bu örnekte 2 dakika)

<?php
  if ($_SESSION['timeout'] + 10 * 60 < time()) {
     // Oturum zaman aşımına uğradı sessionları sil

        session_unset();
        session_destroy();
        header("Location:login.php");
  } else {
     // session ok

  }
?>

Sadık 30/12/2022

Merhaba alışveriş sitesinde misafir kullanıcının teslimat adreslerini sesion da tutmak iyi bir fikirmi şöyle bir senaryoda kullanıcı sepetten ödeme sayfasına gidip adres ekledi ama tekrar sepete dönmek istedi sonra tekrar ödeme sayfasına geldiğinde form verileri kaybolur. Bunları sessiondan alıp tekrar forma ekletmeyi düşündüm. Olurmu sizce.

yönetici 02/01/2023

Dene olması gerekir.
Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

6868

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML FORM OLUŞTURMA
  • CSS YATAY MENÜ YAPIMI
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML DİV ve SPAN NEDİR?
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.