PHP: Hafta 4

php-logo php-logo   {right}PHP kursunun 4. haftasında Sessions konusuna yoğunlaştık. $_SESSIONS, en kaba anlatımla PHP’nin iki çalışması arasında bilgi tutmaya yarayan PHP’nin kendi içerisine gömülü bir çeşit mekanizmadır.

Bu mekanizmanın nasıl kullanıldığı, mekanizmaya neden ihtiyaç kullanıldığı ve arka planda neler döndüğü konusunda durduk bu hafta. Yetmedi, bu mekanizma üzerinden çıkabilecek güvenlik açıklarını uygulamalarıyla birlikte gördük, önlemimizi aldık.

Bu haftanın slaytına ve kod örneklerine bu yazının sonundan ulaşabilirsiniz. Gelecek hafta PHP’de veri tabanı kullanımı ile derse devam edeceğiz.

Dönem Sonu Projesi

Daha önce duyurusunu yapmış olduğum bitirme projesini de bu yazıya koyuyorum. Açıklamaları içinde mevcut. Daha fazla ayrıntı istemeniz halinde derste konuşuruz.

Herkese iyi günler.

Dosyalar

Kodlar

Örnek kaynak kodlarını doğrudan web sitesinden incelemek isteyenler yazının devamına bakabilirler.

example-sessions.php

 <?php session_start(); if(isset($_SESSION['views'])) { $_SESSION['views'] = $_SESSION['views']+ 1; } else { $_SESSION['views'] = 1; } echo "views = ". $_SESSION['views']; ?>

example-sessions-security.php

 <?php /* ÖNEMLİ: Bu program parçası güvenlik açığı içerir, sadece eğitim amaçlı kullanılmalıdır! */ ini_set ("session.use_only_cookies", "0"); session_start(); if(isset($_SESSION['views'])) { $_SESSION['views'] = $_SESSION['views']+ 1; } else { $_SESSION['views'] = 1; } echo "views = ". $_SESSION['views']; ?>

example-sessions-starting.php

 <?php ob_start();

$_SESSION["deneme"] = 'session_start kullanmadan önce bir değer atamak istiyorum. Ama bu nereye kaydolacak?';

/* Session ID ile id ataması session_starttan önce yapılmalıdır. Eğer böyle bir atama yapılmazsa (ki ne gerek var?) PHP rastgele bir değer atacaktır. */ echo "&lt;br /&gt;Session ID: ". session_id(); /* Bu satır henüz session başlamadığı için bir veri döndürmez. */

echo "<br />Session Name:". session_name("SEMSIPASAPASAJI"); /* Bu satır ile varsayılan PHPSESSID değerini değiştirmek mümkündür. Bu değişiklik session_starttan önce yapılmalıdır. */

echo "<br />"; echo "<br /> Session Başladı";

session_start(); /* Kullanıcı için bir kimlik numarası belirlenir. (eğer session_id ile belirlenmişse, bu değer kullanılır.) Bu kimlik numarası kullanıcıya gönderilmek üzere cookielere eklenir. Sessionların sunucu üzerinde tutalacağı klasörde session bilgilerini tutacak bir dosya oluşturularak $_SESSIONS süper değişkeni ilklenir. */

/* Bu noktadan sonra aşağıdaki iki fonksiyon ile sadece değer öğrenilir. Değişiklik yapılamaz. */ echo "<br />Session ID:". session_id(); echo "<br />Session Name:". session_name();

echo "<br />"; echo "<br />";

if(isset($_SESSION['views'])) { $_SESSION['views'] = $_SESSION['views']+ 1; } else { $_SESSION['views'] = 1; } echo "views = ". $_SESSION['views'];

echo '$_SESSION["deneme"]:' . $_SESSION["deneme"];

echo "Vardump: " . var_dump($_SESSION);

echo "Vardump: " . var_dump($_SERVER);

/* session_unset(); // Deneyin. echo "<br />views = ". $_SESSION['views']; */

ob_end_flush(); ?>