首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

ECShop 後台管理員密碼遺失?兩種快速重置/新增方案

     編輯:PHP 相關知識

方案一:單檔腳本重置指定帳號密碼

將以下程式碼存為 reset_pass.php 放入 ECShop 根目錄,瀏覽器訪問即可執行。

<?php
define('IN_ECS', true);
require(dirname(__FILE__) . '/includes/init.php');

$admin_user = 'xiaoyao';      // 目標管理員帳號
$new_pass   = 'x111111';      // 新密碼

// 取得該帳號的 ec_salt
$sql = "SELECT `ec_salt` FROM " . $ecs->table('admin_user') . " WHERE user_name = '$admin_user'";
$ec_salt = $db->getOne($sql);

// ECShop 密碼加密邏輯:md5(md5(密碼) . ec_salt)
$new_hash = md5(md5($new_pass) . $ec_salt);

$sql = "UPDATE " . $ecs->table('admin_user') . " SET password = '$new_hash' WHERE user_name = '$admin_user'";
mysql_query($sql);

echo "密碼修改成功!新密碼是: $new_pass";
?>

方案二:多功能管理腳本(新增/刪除/重置)

存為 admin_tool.php,支援 GET 參數操作:

  • ?act=add&u=帳號&p=密碼 新增超級管理員
  • ?act=drop&u=帳號 刪除管理員
<?php
define('IN_ECS', true);
require(dirname(__FILE__) . '/includes/init.php');

$admin_name = trim($_REQUEST['u'] ?? '');

if (empty($_REQUEST['act'])) {
    // 預設顯示提示
    exit('Usage: ?act=add&u=xxx&p=yyy OR ?act=drop&u=xxx');
}

if ($_REQUEST['act'] === 'add') {
    $admin_pass = trim($_REQUEST['p'] ?? '');
    if (empty($admin_name) || empty($admin_pass)) exit('帳號密碼不可為空');

    $hash = md5($admin_pass); // 注意:此處未加鹽,僅適用舊版或特定情境
    $sql = "INSERT INTO " . $ecs->table('admin_user') .
           " (user_id, user_name, email, password, action_list) " .
           "VALUES (NULL, '$admin_name', 'admin@admin.com', '$hash', 'all')";
    $db->query($sql);
    exit("管理員已新增,用戶名: $admin_name, 密碼: $admin_pass");
}

if ($_REQUEST['act'] === 'drop') {
    if (empty($admin_name)) exit('請指定要刪除的帳號');
    $sql = "DELETE FROM " . $ecs->table('admin_user') . " WHERE user_name = '$admin_name'";
    $db->query($sql);
    exit("管理員 $admin_name 已刪除");
}
?>

安全警示 ⚠️

  1. 執行後立即刪除腳本檔案,避免被惡意利用;
  2. 方案二未加鹽雜湊,僅適用緊急搶救,建議登入後立即在後台修改密碼以觸發正規加鹽機制;
  3. 生產環境請限制存取 IP(如 if ($_SERVER['REMOTE_ADDR'] !== '你的IP') exit;)。

原理說明

ECShop 密碼儲存格式:password = md5(md5(明文密碼) . ec_salt)。ec_salt 為每位管理員隨機生成的鹽值,儲存在 admin_user 表。重置時必須讀取該鹽值重新計算雜湊,否則舊鹽值與新密碼不匹配導致無法登入。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved