【问题标题】:PasswordHash not working with CodeIgniterPasswordHash 不适用于 CodeIgniter
【发布时间】:2011-08-16 02:22:13
【问题描述】:

我已经把我从http://www.openwall.com/phpass/下载的文件放到application/libraries

在我的控制器中,我正在使用此代码 -

$params = array(
       'phpass_hash_strength' => 8,
           'phpass_hash_portable' => FALSE
       );
$this->load->library('PasswordHash', $params);
$password = $this->passwordhash->HashPassword($pwd);

我收到这些错误 -

A PHP Error was encountered

Severity: Notice

Message: Uninitialized string offset: 3

Filename: libraries/PasswordHash.php

Line Number: 116

A PHP Error was encountered

Severity: Warning

Message: strpos() [function.strpos]: Empty delimiter

Filename: libraries/PasswordHash.php

Line Number: 116

更新

删除了PasswordHash.php,现在使用SimpleLoginSecure

【问题讨论】:

  • 您使用的是哪个操作系统? PHP 安装中安装了哪些密码?
  • @hakre 我正在运行 win 7 ... crypts,我猜是 php 5.3.4 附带的那些
  • 刚遇到同样的问题,您可能需要将构造函数重命名为__construct() 才能在以后的 PHP 版本中工作。
  • @Xeoncross ,太棒了。我正在使用 ubuntu 16、php-7 和 CI3 它对我有用。谢谢。

标签: php codeigniter password-hash


【解决方案1】:

我在将 PasswordHash 集成到 Symfony2 时遇到了同样的问题。

为了解决这个问题,我将PasswordHash 方法重命名为__construct

理论上,如果 PHP 5+ 找不到构造函数 (http://php.net/manual/en/language.oop5.decon.php),它应该寻找与类同名的方法。我的猜测是,一旦添加了命名空间(我的集成要求),类名的解析方式就会不同,但我根本没有调查过。

【讨论】:

  • 这解决了我在将常规 PHP 项目转换为使用 Composer 并将 PHPass 移动到命名空间时的问题。检查密码似乎可以正常工作,但散列密码却不行。
  • 这行得通。更改命名空间后,我遇到了与@wwarren 相同的问题,但按照您的方法,它已得到修复。谢谢!
  • 这应该是答案。该类是基于PHP4的,所以没有构造方法。
【解决方案2】:

我认为您的问题是您正在尝试将通用 PHP 对象用作 CodeIgniter 库。你不能这样做。您需要修改原始代码才能工作,或下载contributed libraries already designed for CodeIgniter 之一。

CodeIgniter 库有一些限制(例如它们的实例化方式),因此仅将任何文件放入库文件夹是行不通的。

【讨论】:

  • 我已经修改了 PasswordHash.php 以使它像一个库文件。它正在加载库,但该功能不起作用。
  • 好吧,看起来你破坏了这个功能。查看修改后的类中的第 116 行。那里发生了什么?错误输出中有很多信息,但前提是有人可以访问源。如果你修改了它,我们将很难重现。
  • 我没有修改整个班级,我只是改变了它的名字。这不会有这么大的不同。
  • 如果您只是更改了名称,那么您没有修改类以使用 CodeIgniter。看看Passing Parameters when Initializing Your Class in the CodeIgniter manual。原始类接受两个参数。
  • 我抛弃了旧课程。现在根据SimpleLoginSecure.php 修改数据库
猜你喜欢
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 2011-12-14
  • 2016-04-07
  • 2015-02-09
  • 2015-07-08
  • 1970-01-01
相关资源
最近更新 更多