Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何重置OpenCart 2+;管理密码?_Php_Opencart2.x - Fatal编程技术网

Php 如何重置OpenCart 2+;管理密码?

Php 如何重置OpenCart 2+;管理密码?,php,opencart2.x,Php,Opencart2.x,显然,新的(v2)OpenCart密码加密方案不是一个简单的md5散列。在我为我的OpenCart安装更改了主机后,我试图在网上搜索重置管理员密码的方法,但找不到任何东西 谢谢。如果您只需要重新获得访问权限并更改密码,那么您可以非常轻松地完成此操作。打开system/library/user.php(system/library/cart/user.php在更高版本中)并找到行的开头 $user_query = $this->db->query("SELECT * FROM " .

显然,新的(v2)OpenCart密码加密方案不是一个简单的md5散列。在我为我的OpenCart安装更改了主机后,我试图在网上搜索重置管理员密码的方法,但找不到任何东西


谢谢。

如果您只需要重新获得访问权限并更改密码,那么您可以非常轻松地完成此操作。打开
system/library/user.php
system/library/cart/user.php在更高版本中)并找到行的开头

$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE username = 
WHERE
前面放置一个
#
将其更改为

$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user #WHERE username = 

和保存。这允许您使用第一个帐户(通常是默认的管理员帐户)登录,而无需任何用户和密码。一旦这样做,请将其反转并再次保存。您仍将登录并可以编辑用户数据,如您所愿编辑密码

密码由OpenCart(从
admin/model/user/user.php
)存储为

假设您有DB访问权限,您可以按以下方式检索salt

SELECT salt FROM your_db.oc_user WHERE username='your_username';
然后生成新的散列,例如在bash中($SALT是前一个命令的结果):

最后,使用此新哈希更新数据库:

UPDATAE your_db.oc_user SET password='newhash' WHERE username='your_username';
然后使用新密码登录。

通过
phpMyAdmin
MySQL
命令提示符编辑MySQL数据库,重置OPENCART管理员密码 重置管理
密码
的唯一方法是通过
phpMyAdmin
修改
oc\u user
中的密码列,类似于狩猎丝绸之路,或者通过
MySQL
命令提示符更改
密码
列。您无法使用
MySQL
命令提示符生成新的Salt&Hashing,如最后所述。按照以下步骤操作:

导航到
oc\u user
表并查找名为password&salt的列 并更改所需
用户id的值

密码:D1C194DAFFB03FC2653027C87F76A12A4 EAEAC5F

盐:x3x6r693j

此字符串或散列组合将所需用户的管理密码更改为“
password
”(不带引号)。此方法可能会产生轻微的安全风险,因为salt将是一个公开的数据,在这里发布

点击“开始”。它会将您的密码更改为密码。现在,使用现有用户名和新密码登录OpenCart管理员(www.yourwebsitename.com/Admin)仪表板

用户名:

密码:密码

通过了解您的用户\u id,可以通过一个命令完成上述所有步骤:

update `oc_user` set `password` = sha1( concat(`salt`, sha1( concat(`salt`, sha1('password'))))) where user_id = 1

解释:

$salt = substr(md5(uniqid(rand(), true)), 0, 9)
密码是用随机密码加密的

sha1($salt . sha1($salt . sha1($password)))
上述方法用于加密文件admin/model/user/user.php中的密码

SELECT SHA1( CONCAT( salt, SHA1( CONCAT( salt, SHA1(  'password' ) ) ) ) ) 
FROM oc_user
WHERE user_id =1
LIMIT 0 , 30
结果: D1C194DAFB03FC2653027C87F76A12A4 EAEAC5F

对于盐:

$salt = substr(md5(uniqid(rand(), true)), 0, 9)
uniqid()
password\u hash
password\u verify
都是纯PHP函数。它们与MySQL无关

密码\u散列不使用MD5算法对密码进行散列。md5和password_hash()产生两种不同的长度


导航到
您可以在
数据库>oc_用户

密码0c7a864c5a737f08f001f3123849ba5e03af3d06

SELECT SHA1( CONCAT( salt, SHA1( CONCAT( salt, SHA1(  'password' ) ) ) ) ) 
FROM oc_user
WHERE user_id =1
LIMIT 0 , 30
和盐HYSQS59P9

SELECT SHA1( CONCAT( salt, SHA1( CONCAT( salt, SHA1(  'password' ) ) ) ) ) 
FROM oc_user
WHERE user_id =1
LIMIT 0 , 30

到管理员用户行。

您可以使用以下脚本生成新密码:

<?php    
  $salt = 'pMiPpQ7N4';   //salt, update user.salt with this
  $password = 'test123'; //actual password

  //update user.password with this
  echo sha1($salt . sha1($salt . sha1($password))); 
?>

假设您有权访问php文件,请在文本编辑器中打开文件系统/library/cart/user.php,并将login()方法的第1行第40行更改为:

致:


这将删除密码检查,因此无论您输入的密码如何,您都将始终登录登录后,立即将此行更改回,因为这将允许任何人以任何用户帐户登录,然后在“用户-用户-编辑”下更改密码。

创建新用户。将该用户的密码复制到您的管理员帐户。@ceejayoz您还需要复制salt值across@JayGilford希望他们使用的是行业标准的bcrypt,在这种情况下,盐是散列的一部分。如果这是真的@ceejayoz-@JayGilford eww就好了/我发抖这节省了我几个小时。。。但是,在我的文件版本中,您突出显示要搜索的行出现了两次,这导致了一些混乱。对我来说,这是一个好主意,当您访问DB my OpenCart版本3.0.3.1时,如果您想要快速简单的内容,请选择此选项,但不要忘记在完成后重新更改密码。
$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE username = '" . $this->db->escape($username) . "' AND status = '1'");