【发布时间】:2013-10-07 11:03:05
【问题描述】:
我正在尝试在我的应用程序中使用Hash::make(),但我无法让它工作。我一直在尝试使用 Laravel 3 站点上的文档,因为我在 Laravel 4 文档中找不到任何内容。
当我尝试将Hash::make($password) 插入我的数据库时,它会将值保存为0。我的字段是varchar,它的长度为100,应该足够长了。我尝试插入数据库中的不同字段,它始终保存为 0。我尝试将 $password 设置为测试字符串,而不是来自表单的内容,它仍然保存为 0。如果我插入 $password如果没有Hash::make(),它会存储我的密码。
我尝试在我的页面上回显Hash::make('test),但没有得到任何回显。根本没有输出。我想这就是为什么我在尝试存储值时将 0 插入数据库的原因。
这可能与您通过 Artisan 使用 key:generate 设置的应用程序密钥有关吗?我发现我没有设置它,当我尝试设置它时,它告诉我它已经设置了?如何重置密钥?
【问题讨论】:
-
由 artisan 创建的应用密钥用于会话 cookie,但不会阻止 Hash::make() 工作。但是为了帮助获取密钥集,我注意到如果它不包含原始文本 'key' => 'YourSecretKey!!!',key:generate 命令认为密钥已经设置(即使它是一个空字符串)。我正在对完全更新的 L4 进行测试,并且 Hash::make('hello') 返回一个 64 个字符的散列字符串。不确定,但我认为它总是 64 字符,所以你的 100 字符字段应该没问题。
-
我测试了你所说的关于密钥的内容,你是正确的。
Hash::make()可能导致什么问题? -
echo Hash::make('hello')是返回哈希值的有效 PHP 吗? -
不确定。也许是完整的应用程序更新。类似或可能相同的问题在这里有一个链接到更新应用程序文件夹的说明。 stackoverflow.com/questions/14909192/…
-
是的,在大多数情况下你想使用 return 但 echo Hash::make('hello') 和 return 或 var_dump() 一样可以测试它是否有效。