什么是PHP会话IDstring的长度?

我正在MySQL数据库中创build一个表来保存一些会话数据,包括session_id 。 什么应该是存储session_idstring的VARCHAR的长度?

取决于session.hash_function和session.hash_bits_per_character 。

查看session_id页面了解更多信息。

你设置的session.hash_bits_per_character越高,session_id越短,每个字符使用更多的位数。 可能的值是4,5或6。

当使用sha-1进行散列(通过设置ini_set('session.hash_function',1)),会话string的长度由三个session.hash_bits_per_character设置产生:

4 – 40个字符的string

5 – 32个字符的string

6 – 27个字符的string

@sachleen的答案并不完整。
有关会话ID长度的更详细的信息在这里描述。

概要:

 128-bit digest (MD5) 4 bits/char: 32 char SID 5 bits/char: 26 char SID 6 bits/char: 22 char SID 160-bit digest (SHA-1) 4 bits/char: 40 char SID 5 bits/char: 32 char SID 6 bits/char: 27 char SID 

和示例正则expression式来检查会话ID:

 preg_match('/^[a-zA-Z0-9,-]{22,40}$/', $sessionId) 

这取决于这些configuration设置: session.hash_functionsession.hash_bits_per_character

较短的会话ID长度具有较高的碰撞几率,但这也取决于ID生成algorithm。 鉴于默认设置,会话ID的长度应该适用于大多数应用程序。 对于更高安全性的实现,您可以考虑查看PHP如何生成会话ID并检查其是否具有密码安全性。 如果不是的话,那么你应该用一个密码安全的随机源来推出你自己的algorithm。

我不知道我的应用程序将被用于什么,然后我将它设置为:VARCHAR(127),并希望未知的MySQL用户将是伟大的。

通过php的安装长度总是26(exmp:psprdaccghmmre1oo2eg0tnpe6)