平成30/ 2018-12-14 11:09
PHP/ SESSION /2016.1.21

SESSION ID 複雑化
---------------------------------------------
MD5, sha1 利用するなら、
最大桁数は40byte

session_id() は以下2つの設定で決定される。
session.hash_function(0: MD5、1: SHA1)
session.hash_bits_per_character

(session.hash_function : session.hash_bits_per_character)
= (0:4) 32byte
= (0:5) 26byte <- DEFAULT
= (0:6) 22byte
= (1:4) 40byte
= (1:5) 32byte
= (1:6) 27byte

php.ini を利用しないで、PHPソース側で設定したい場合は以下のように設定する。
ini_set('session.hash_function', 1);
ini_set('session.hash_bits_per_character', 5);

session.hash_bits_per_character の文字種の仕様
-
; Define how many bits are stored in each character when converting
; the binary hash data to something readable.
; Possible values:
;   4  (4 bits: 0-9, a-f)
;   5  (5 bits: 0-9, a-v)
;   6  (6 bits: 0-9, a-z, A-Z, "-", ",")
; Default Value: 4
; Development Value: 5
; Production Value: 5
; http://php.net/session.hash-bits-per-character
;
; 6だと、カンマ、ハイフンの記号が入る。SESSIONIDはファイル保存して利用するケースがあるので記号つきでファイル名を保存するケースや、コンバージョンタグで利用しているケースなどで、記号を利用できない場合は、5を利用しないといけない
; sha512 + 6 = 86byte
; sha512 + 5 = 103byte
; sha256 + 6 = 43byte
; sha256 + 5 = 52byte
;session.hash_bits_per_character = 5
session.hash_bits_per_character = 6


//____ session_idと、session_save_pathを指定することでSESSIONの取得情報をコントロールできる。
---------------------------------------------
session_id($_COOKIE["xxxxxxxxSESSID"]);
session_save_path('/home/xxx/xxx/tmp');
session_start();
print_r($_SESSION);
exit;



// セッションの保存先を指定する
$path = dirname($_SERVER["DOCUMENT_ROOT"]). "/tmp";
session_save_path($path);
session_start();



// SESSION保存先
/var/lib/php/session

// SESSION有効期限を設定
setcookie(session_name(), '', time()-42000, '/');
// 上記のように削除したいときは過去の日付を設定する。
// この有効期限であれば、ChromeでもSESSION削除される。


// Chromeの問題
ブラウザ閉じるタイミングでSESSION削除の設定をしてもChromeでは無視される。



// Thanks.
PHP セッションデータの保存先
phpのセッションデータはデフォルトではファイルで保存されている。
保存先はphpinfoで表示される「session.save_path」になる。
CentOSだと/var/lib/php/session


session_save_path
http://manual.xwd.jp/function.session-save-path.html

セッションファイルの保存先
http://www.welearn.jp/php/session.html


セッション