Zend_Session のコードを調べて、セッションの開始を実装する方法をよりよく理解しようとしました。コード内で、彼らは私がよく理解していないことをしています。
$hashBitsPerChar = ini_get('session.hash_bits_per_character');
if (!$hashBitsPerChar) {
$hashBitsPerChar = 5;
}
switch($hashBitsPerChar) {
case 4: $pattern = '^[0-9a-f]*$'; break;
case 5: $pattern = '^[0-9a-v]*$'; break;
case 6: $pattern = '^[0-9a-zA-Z-,]*$'; break;
}
if(!preg_match('#'.$pattern.'#', $id)){
session_id(md5(session_id()));
$regenerateId = true;
}
私が理解するのが難しいのは、not ( ^ ) を持つパターンがあり、それが一致しない場合は、セッションを開始する前に一時的なセッション ID を作成する理由です。これは私には意味がありません-なぜ彼らは持っていないに対してプレグマッチをするの0-9a-zA-Z-,
ですか? ここで何が起こっているのかよくわからないので、理解したいと思います。
ありがとう