srand(seed)在不同的服务器上生成不同的值

时间:2011-11-09 00:14:55

标签: php

我的网站用于编码/解码cookie数据的函数使用rand()。它根本不是一个理想的方法,但它是CakePHP 1.2中的默认密码函数,所以我暂时不使用它,除非我想让我所有用户的cookie无效(我现在真的不知道)。

问题是我正在将站点移动到另一台服务器,并且新服务器无法解码旧服务器设置的cookie,因为rand()产生不同的值,即使两台服务器都使用srand(seed)同样的种子。我想问题是两个服务器使用不同的内部php函数来生成随机数,如关于密码函数的这个cakephp错误中提到的那样:http://cakephp.lighthouseapp.com/projects/42648/tickets/1524-securitycipher-is-platform-dependent

我想知道如何更改新服务器上的密码功能,以便能够正确解码旧服务器设置的cookie。有什么方法可以强制php使用相同的内部随机函数吗?

2 个答案:

答案 0 :(得分:1)

我倾向于认为这可能是一种理想的行为。所以说http://php.net/manual/en/function.mt-srand.php(我知道你的是srand而不是mt_srand但仍然):

  

相同的种子不再产生与先前版本中相同的值序列。预计这种行为不会再次改变,但仍然认为它依赖于它是不安全的。

答案 1 :(得分:0)

我有同样的问题,在这里I link my solution,我知道这是一个非常古老的问题,但希望有人在未来找到解决方案。正如第一个回答所说@chx,它是关于从srand()更改为mt_srand()。