更新时间:2023-02-14 10:55:43
我假设你的 functions_phpbb.php
文件是 includes / functions.php $ c $的副本c> phpBB3软件包的文件。
现在,您遇到此错误的原因是因为 phpbb_hash
函数使用phpBB unique_id
函数实现熵,这取决于数据库连接(在每个请求中更改并保留熵)。
有两种方法可以解决这个问题。
a)包括phpBB的 common.php
,它将启动你的phpBB代码(包括数据库连接,错误处理程序等)。
$ b b)phpBB3使用 phpass 进行散列。我建议你只需下载独立的phpass包并使用它来生成散列。
小小警告:phpBB3将散列标识符从'$ P $'更改为'$ H $'(不要问我为什么),所以你必须改变这一行:
$ output ='$ P $;
到:
$ output ='$ H $';
由于选项a)增加了一些开销,并且您可能只想使用散列函数,我建议选项b)。
I am trying to convert a test password (testing4) into a phpbb3 hash. This is the code I have tried:
<?php
/**
*
* @package phpBB3
* @version $Id: v3_dbal.xml 44 2007-07-25 11:06:55Z smithy_dll $
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
/**
* @ignore
*/
define('IN_PHPBB', true);
include ("functions_phpbb.php");
$data['new_password'] = "testing4";
$user_row = array(
'user_password' => phpbb_hash($data['new_password'])
);
$hash = $user_row['user_password'];
echo $hash;
?>
and this doesn't work either:
$pass = "testing4";
$hash = phpbb_hash($pass);
Both times I recieve the following error message:
Fatal error: Call to a member function sql_escape() on a non-object in /home/a8544020/public_html/Pass/functions_phpbb.php on line 149
I have tried it on 2 different hosts without any luck. Otherwise is there an online service that simply converts text to the hash?
Thanks in advance
I'm assuming your functions_phpbb.php
file is a copy of the includes/functions.php
file of the phpBB3 package.
Now, the reason you are getting this error is because the phpbb_hash
function uses the phpBB unique_id
function for entropy, which depends on a database connection (to change and persist the entropy on every request).
There's two ways to fix this.
a) include phpBB's common.php
, which will bootstrap your code for phpBB (including db connection, error handlers, etc).
b) phpBB3 uses phpass for hashing. I suggest you simply download the standalone phpass package and use that to generate the hash.
Little caveat: phpBB3 changes the hash identifier from '$P$' to '$H$' (don't ask me why), so you will have to change this line:
$output = '$P$';
to:
$output = '$H$';
Since option a) adds quite some overhead, and you are probably only wanting to use the hashing functions, I'd suggest option b).