PHP’de Session ID Uzunluğu


Veritabanında tutacağım kaydın hangi oturuma ait olduğunu anlamak için bir veritabanı alanında php’de session_id() ile gelen değeri tutma gereği duyabilirsiniz. Peki tablo alanındaki char/varchar uzunluğuna nasıl karar vereceğiz?

Kendi localhost’umda yaptığım teste göre uzunluğu: strlen(session_id()) => 26 çıktı.

Yalnız bu uzunluk ve içerdiği karakter çeşitleri php.ini dosyasındaki hash_function ve hash_bits_per_character göre değişiklik göstermekte.

php.ini session.hash_function session.hash_bits_per_character

session.hash_function & session.hash_bits_per_character

Ben de php.ini session hash ayarlarıyla dinamik olarak oynayarak şu gelecek tabloyu elde ettim:

session_id()

session_id()

İlgilenenler için bu tabloyu üreten php kodlarını ve demo sayfasını paylaşıyorum:

[php]
“;
$result .= “
session_id() – PHP Version ” . phpversion() . “

“;
$result .= “
 session.hash_function(0)session.hash_function(1)

“;
for($bit = 4; $bit <= 6; $bit++) { $result .= "$bit

“;

for($func = 0; $func < 2; $func++) { $result .= "” . id($func, $bit) . “

“;
}
$result .= “

“;
}
$result .= “

“;

echo $result;

function id($func, $bit) {
ini_set(“session.hash_function”, $func);
ini_set(“session.hash_bits_per_character”, $bit);
session_regenerate_id();
return session_id() . “(” . strlen(session_id()) . “)”;
}
?>
[/php]

Sonuç

Ve sonuç olarak session_id() değerini taşıyacak veritabanı alan uzunluğunu varchar(40) olarak belirlemeye karar verdim.

  1. Henüz hiç yorum yok.
(yayınlanmayacak)

Please leave these two fields as-is: