$7.49 .com domain with free InstantPage Website Builder$1.99 Web Hosting   捷飞网络官方淘宝店   Godaddy 优惠码
返回列表 发帖
分享到:




[开发经验技巧分享] 如何修改后台目录admin为任意目录名(版本V2.6.2)

Ecshop后台目录的修改方法在ecshop论坛上有网友公布了几个版本,但都存在修改不完全的地方,我们经过深入分析ecshop 2.6.2,总结修改ecshop2.6.2后台路径的完整无误版,需要修改的所有文件及代码如下,大家只要照着把下面的红字admin统一修改成新的目录名即可。:) u4 ^9 s* G8 A

( v1 R+ M+ Z3 a$ TV1:+ U& R8 M( w5 ^: _3 d. C0 y
http://www.50sz.cn/view-14-1.html
9 D4 n& A+ ^& ^; h6 G/ g
6 m% K4 I8 _8 B" j1 F2 ^* f: `1、quotation.php     62行6 |+ c% i3 }; E$ r% }' D% K7 i2 e' a
    include_once(ROOT_PATH . 'admin/includes/lib_main.php');
8 d& O' p9 b( `( ^6 c  d- _% E$ K% g2、admin/check_file_priv.php  37行' p$ v9 u  S/ _$ R% [1 s: @# w6 A2 P
     $dir[]                     = 'admin';+ N! h4 n+ [1 b. g, }
3、admin/database.php 19行, X: _6 I. r4 _
      require_once(ROOT_PATH . 'admin/includes/cls_sql_dump.php');
% N* U) X- [8 C% {8 X# d4、admin/filecheck.php 51行! v1 s  h4 P0 [( X( y
      checkfiles('admin/', '\.php|\.htm|\.js|\.css|\xml');) m& m4 ~5 a, V/ ~
5、admin/get_password.php 107行2 E! V5 A6 N' ]& F, j
      $reset_email = $ecs->url() . 'admin/get_password.php?act=reset_pwd&uid='.$admin_id.'&code='.$code;, R8 T5 l7 c, b4 A9 I' o0 @; A4 n
6、admin/goods.php 8
8 a, q; |1 M$ i+ S9 z- w/ K' T     require_once(ROOT_PATH . '/admin/includes/lib_goods.php');6 F$ h9 t# b8 O1 L
7、admin/index.php 799
) R1 L. J4 O2 u* L      require_once(ROOT_PATH . 'admin/includes/lib_goods.php');: T# d( L5 }: Q0 A3 `7 w+ b' {
8、admin/picture_batch.php 20
$ d9 v, |3 D  ]4 {; [3 @      include_once(ROOT_PATH . '/admin/includes/lib_goods.php');; }- U* j3 E  @6 ?* G. L
9、admin/includes/init.php- R! o5 q: `2 Z+ a4 b! R
      30行 define('ROOT_PATH', str_replace('admin/includes/init.php', '', str_replace('\\', '/', __FILE__)));- Z2 ~4 H  h2 v' B2 g3 T# |9 k* |1 S
     84行 require(ROOT_PATH . 'admin/includes/lib_main.php');* F  S: i' s/ d' x
     85行  require(ROOT_PATH . 'admin/includes/cls_exchange.php');% k1 r5 o* D; z  O; N7 V1 i
    199行 $smarty->template_dir  = ROOT_PATH . 'admin/templates';
" x" w- |+ p8 U7 w, h    299行  $admin_path = preg_replace('/:\d+/', '', $ecs->url()) . 'admin';
2 I% }& ]; H7 _10、api/client/includes/lib_api.php: t0 o" E: g4 l, S
        264行 require_once(ROOT_PATH.'admin/includes/lib_main.php');
3 |# c1 V* G9 W4 w0 m  x        288行 require_once(ROOT_PATH.'admin/includes/lib_main.php');
' U' K# N& P& x$ F5 p! {* K        369行 require_once(ROOT_PATH . 'admin/includes/lib_main.php');
' F, l+ Z: q0 U- K$ |        370行 require_once(ROOT_PATH . 'admin/includes/cls_exchange.php');
9 _6 ?( D! N2 s4 _& t        452行 require_once(ROOT_PATH . 'admin/includes/lib_main.php');# y$ }; V4 |* @' Q6 y5 i. @
        453行 require_once(ROOT_PATH . 'admin/includes/lib_goods.php');
% ^: q' J. h: N& q' j       1102行 require_once(ROOT_PATH . 'admin/includes/cls_exchange.php');
7 D  a+ d" Y8 O5 w2 V+ S1 @% k       1127行 require_once(ROOT_PATH . 'admin/includes/lib_main.php');
. P1 N3 A$ Z! ^7 W       1164行 require_once(ROOT_PATH . 'admin/includes/cls_exchange.php');% L4 j" o- y$ `2 c) U8 z' n: ?
       1183行 require_once(ROOT_PATH . 'admin/includes/lib_main.php');) o1 Y- E" n9 K! N( H8 |$ u
       1267行  require_once(ROOT_PATH . 'admin/includes/lib_main.php');
; ]6 c! ]9 g* H- _       1268行 require_once(ROOT_PATH . 'admin/includes/cls_exchange.php');
+ h+ w, f7 e# ^% a9 B$ [7 v! u. h11、data/config.php 23
8 U" a/ q3 D6 b% p4 X       $admin_dir = "admin";+ V/ y4 L% B& V) M
12、includes/modules/convert/shopex46.php 895 ^6 f6 L1 j/ m% l% C9 i7 M
        $this->tdocroot = str_replace('/admin', '', dirname(PHP_SELF));( O: Z% h, [* i# q% b
13、includes/lib_main.php 19209 j' f$ G& B  M6 _" U; ?+ Z  |
        include_once(ROOT_PATH . 'admin/includes/lib_template.php');3 o# I- P/ T6 O: c. x
14、includes/modules/convert/shopex47.php 71& ]! g* |6 |- k) ^  S  f
        $this->tdocroot = str_replace('/admin', '', dirname(PHP_SELF));
: f  e8 S; A, D3 @8 a1 L15、languages/en_us.php 30! {9 ?, _4 s# q7 @# R
        $_LANG['usage1'] = '<a href="../admin">Login Control panel</a>,<span style="color:red;font-weight:bold;font-size:18px;">Backup</span>Database data';
2 g) ~0 p$ Q, d% W16、languages/zh_cn_utf-8.php 30; J) ~7 Y# a+ K6 z) i2 o
       $_LANG['usage2']  = '<a href="../admin">登录后台</a>,<span style="color:red;font-weight:bold;font-size:18px;">备份</span>数据库资料;';
. U) ^; ]5 @2 y9 t, ^* N17、languages/zh_tw_utf-8.php 30
5 N9 m# b9 h$ Y5 K. v' f       $_LANG['usage2'] = '<a href="../admin">登錄後台</a>,<span style="color:red;font-weight:bold;font-size:18px;">備份</span>數據庫資料;';, w* T/ Q) M( `# t# k2 m/ Z- f
18、languages/zh_cn_gbk.php 30! l4 n4 K% s- [
       $_LANG['usage2']  = '<a href="../admin">登录后台</a>,<span style="color:red;font-weight:bold;font-size:18px;">备份</span>数据库资料;';* m; s: x# y2 U7 H; d
19、languages/zh_cn/common.php 27; l7 D7 j# ^/ q9 f& g6 V
       $_LANG['shop_upgrade'] = "本店升级中,管理员从 <a href=\"admin/\">管理中心</a> 登录后,系统会自动完成升级";
: }8 n* e9 Z) J+ i6 J8 z20、languages/zh_tw/common.php 272 r, l2 r8 ^/ \$ O2 x+ x! u, r  M
       $_LANG['shop_upgrade'] = "本店升級中,管理員從 <a href=\"admin/\">管理中心</a> 登錄後,系統會自動完成升級";
5 X3 y: n) U" @* t21、includes/cls_ecshop.php" ~3 p. q3 L: v3 B
        130行     $curr = strpos(PHP_SELF, 'admin/') !== false ?
4 Z2 ^2 T. L6 l# _# q, \( m        131行      preg_replace('/(.*)(admin)(\/?)(.)*/i', '\1', dirname(PHP_SELF)) :% j: }3 p9 }7 E) _
修改完以上代码之后,还要修改网站后台文件夹的名称,即把admin改成刚才修改了的新目录名称即可。
9 [/ E* r, J( B+ t通过以上修改,我们就可以把ecshop2.6.2后台目录改为自己想要的目录,从而大大小减被非法入侵的机率。; i2 M: o% X7 v; A4 M* n
特别说明:本文仅针对ECSHOP2.6.2 其它版本大同小异,我站将会另行公布。
7 y1 r4 t% v) N  m特别提醒:修改之前请一定做好整站备份,不管您因为修改网站而造成任何损失,我们均不承担责任。% i- g9 l% A+ {) |% q" s% Z

9 n$ F8 @. a7 U1 o' Z8 E# c0 f. M6 i+ u+ F7 u$ z1 G
V2:
% n. F, [& Y4 M# {# w/ h# f. }4 V! Chttp://bbs.ecshop.com/thread-82319-1-1.html
' y" z  x$ d2 X/ F2 O- Q8 x  O
: i# f) a' ?! w1.修改data/config.php   第23行- p: x2 B/ X# A6 N
  1. $admin_dir = "admin";
复制代码

5 q0 S: S: ]! _/ u: e# _4 H& p/ m7 f! [. \. A
修改成+ V( g% R! w1 k+ v
  1. $admin_dir = "新目录名";
复制代码
: O2 P$ D( a% U$ H. v% Y$ ]

7 @1 G  h% \8 f( C8 W2.修改admin/index.php   第799行
( {2 q4 U  ^# M5 I4 u% O4 l, C
  1.    //货号
  2.         require_once(ROOT_PATH . 'admin/includes/lib_goods.php');
复制代码
' g8 l4 a3 k  t% x! z

5 c; h( {/ X7 f3 i) h% d' l修改成
# u0 R! m) m; h" }" {
  1. require_once(ROOT_PATH . $admin_dir.'/includes/lib_goods.php');
复制代码
) d* c! l- O0 E0 W: f% d+ a

' G% E; `* [7 ~; R3 c0 U3.修改admin/database.php     第19行
; e4 _; Q4 U4 k( W0 e
; c* Y. ?7 A8 b, u7 l9 `
  1. require_once(ROOT_PATH . 'admin/includes/cls_sql_dump.php');
复制代码

  w' }- A/ e  O0 B% ?修改成
/ @1 w5 v# D" H4 O% |3 U+ F# l
  1. require_once(ROOT_PATH . $admin_dir.'/includes/cls_sql_dump.php');
复制代码

  X) I& `5 P- |6 i
- ^- }9 H$ w! }* {4.修改admin/get_password.php     第107行; A' A: O# ^; v" V
8 f( ]2 q8 q- }+ L
  1. $reset_email = $ecs->url() . 'admin/get_password.php?act=reset_pwd&uid='.$admin_id.'&code='.$code;
  2. 修改成
  3. $reset_email = $ecs->url() . $admin_dir.'/get_password.php?act=reset_pwd&uid='.$admin_id.'&code='.$code;
复制代码

2 P) P5 w/ ?  M4 z7 c: `  y% j1 ^
5.修改admin/goods.php     第19行3 Y! z8 d- `* @: D7 Y) M
7 _: R! _' n" c6 N5 j
  1. require_once(ROOT_PATH . '/admin/includes/lib_goods.php');
  2. 修改成
  3. require_once(ROOT_PATH . $admin_dir.'/includes/lib_goods.php');
复制代码

% |( r( y) ]# S  g0 h; W  F% D+ L3 m6 \5 z$ }
6.修改admin/check_file_priv.php     第37行/ O( r9 Z5 i; |) c' J$ ~
  1. $dir[] = 'admin';
  2. 修改成
  3. $dir[] = $admin_dir;
复制代码
" @6 [' S; l4 N2 i* Y
2 V- R8 y5 [, r7 ^6 n6 K4 Q# i" _' m
7.修改admin/includes/init.php
: X* Y! E$ _# |& s. s5 W9 n! z; }    第50行
) |" r7 x& x6 r6 i) T
  1. if (file_exists(ROOT_PATH . 'data/config.php'))
  2. {
  3. include(ROOT_PATH . 'data/config.php');
  4. }
  5. else
  6. {
  7. include(ROOT_PATH . 'includes/config.php');
  8. }
  9. 修改成下面代码,并将代码移至“/* 取得当前ecshop所在的根目录 */”注释之前。
  10. if (file_exists('../data/config.php'))
  11. {
  12. include('../data/config.php');
  13. }
  14. else
  15. {
  16. include('../includes/config.php');
  17. }
复制代码
1 N/ _/ o; E" p  x  d+ _, d
    第31行8 K1 J; f2 E2 E. }" R, x( g

: G" Q1 O/ `. @: O& k
  1. define('ROOT_PATH', str_replace('admin/includes/init.php', '', str_replace('\\', '/', __FILE__)));
  2. 修改成
  3. define('ROOT_PATH', str_replace($admin_dir.'/includes/init.php', '', str_replace('\\', '/', __FILE__)));
复制代码

( A1 \9 O1 L+ L) l4 ?" K
, g: n; t" x5 o7 d" `    第84行* U( @7 P5 \& G% Y6 w: n) {
  1. require(ROOT_PATH . 'admin/includes/lib_main.php');
  2. require(ROOT_PATH . 'admin/includes/cls_exchange.php');

  3. 修改为:

  4. require(ROOT_PATH . $admin_dir.'/includes/lib_main.php');
  5. require(ROOT_PATH . $admin_dir.'/includes/cls_exchange.php');
复制代码
3 e: Q8 O% V2 h: T
    第199行4 M/ X6 _9 f) }4 p1 k, ^. q
  1. $smarty->template_dir = ROOT_PATH . 'admin/templates';
  2. 修改成
  3. $smarty->template_dir = ROOT_PATH . $admin_dir.'/templates';
复制代码
, k/ B- Z; S/ j8 j5 L

: v1 E1 c1 X* M: [, w/ G5 P6 t   第299行

4 A: B4 e) j# N( }8 K
, x- R8 S8 H4 {
  1. $admin_path = preg_replace('/:\d+/', '', $ecs->url()) . 'admin';
  2. 修改成
  3. $admin_path = preg_replace('/:\d+/', '', $ecs->url()) . $admin_dir;
复制代码

  E2 D9 K" d0 r1 D8 J( B1 i( W: ~" M! T. x
; c) N! g" H4 r+ [
8.修改include/lib_main.php   第1922行( m3 k2 S) n$ s0 n+ t2 u
  1. include_once(ROOT_PATH . 'admin/includes/lib_template.php');
复制代码
% J3 O3 Z7 B5 n6 _

+ L  L' f5 w* D: j( K; y. g: G修改成1 v% z/ c1 Y- |% ?! k% B; K' T) W+ T

5 T. X$ J! P' [% s2 b6 A
  1. global $admin_dir;
  2. include_once(ROOT_PATH . $admin_dir.'/includes/lib_template.php');
复制代码

7 e: d' e; G8 d5 q) f* j. H5 ]  C( Z4 C2 B% n  a% G
9.修改include/cls_ecshop.php   第130行
. z2 d& e: ~+ L! `7 a
) S4 @% ?# Q6 ?
  1. $curr = strpos(PHP_SELF, 'admin/') !== false ?
  2. preg_replace('/(.*)(admin)(\/?)(.)*/i', '\1', dirname(PHP_SELF)) :
  3. dirname(PHP_SELF);
复制代码
, V$ j, \; A* |: H! C# V$ v
. D: D9 J0 ~) W) D2 A5 L- K4 o; u
修改成; W: S" Z$ H- x' T3 X) k

# m( W1 P9 f. t. x! R  g; `
  1. global $admin_dir;
  2. $curr = strpos(PHP_SELF, $admin_dir.'/') !== false ?
  3. preg_replace('/(.*)('.$admin_dir.')(\/?)(.)*/i', '\1', dirname(PHP_SELF)) :
  4. dirname(PHP_SELF);
复制代码

+ Q0 z, A# C/ g8 b5 V$ J# _2 S- H' Z2 x
10.如果担心$admin_dir变量注入安全问题可以在data/config.php文件中define('EC_CHARSET','utf-8');后增加   第27行后
) B. z! n- d- L2 ]
0 [$ x' {6 ]9 s
  1. define('ADMIN_DIR','新目录名');
复制代码

6 t1 k; m( m' q3 w0 W
* ^+ v8 f+ b! S* j8 D然后将所有修改的$admin_dir变量修改成ADMIN_DIR,例如:
: n/ o% Z: y  P$ J! h5 C7 T# d6 e1 c3 \) b3 b0 p
  1. require_once(ROOT_PATH . $admin_dir.'/includes/lib_goods.php');
  2. 修改成
  3. require_once(ROOT_PATH . ADMIN_DIR.'/includes/lib_goods.php');
复制代码

4 ~9 i7 V# K. P8 c  F4 `0 ]$ Q; Y
5 C5 f# p+ y+ T其它的以此类推..这里就省略了..
$ G# Q7 q% j/ O1 _, P7 D& w4 F9 s/ ~2 g: a4 {. c
11.根据pjb126 网友提示修改/admin/picture_batch.php     第20行
' K$ G- E# B' n4 C
/ [3 C) H& l. m# g8 ]$ Q
  1. include_once(ROOT_PATH . '/admin/includes/lib_goods.php');
  2. 修改成
  3. include_once(ROOT_PATH .$admin_dir.'/includes/lib_goods.php');
复制代码
, ^4 G9 P' G. C$ r8 j* {

2 P$ }+ K3 |9 C1 X, [6 P0 {9 v12.新增修改quotation.php       第63行
' w2 c( v9 J5 q  K0 d' c- _2 s" c0 }0 X6 v5 c6 `
  1. include_once(ROOT_PATH . 'admin/includes/lib_main.php');
复制代码
! \7 S8 b7 x2 H  C- \

' J2 p# s* O& O( E+ N" B( |7 l修改成7 i- ?2 z0 ?. b) L1 j+ w/ E

* w9 v2 S+ u! a& C
  1. global $admin_dir;
  2. include_once(ROOT_PATH . $admin_dir.'/includes/lib_main.php');
复制代码

' t, k" N8 ^) J  j. H: m1 f" m$ p- j( M9 c- o- ]
没有完全测试...有问题的可以留言..大家伙一块调试...


还有一个版本:
4 z( D$ u5 }) U9 v+ }/ x% w3 v& M5 dhttp://bbs.ecshop.com/thread-76239-1-10.html
- b% U8 ?* A! l7 a7 G及别人的经验8 v" i; S; X( v+ l) N5 ~; {( |$ o) G: t
http://bbs.ecshop.com/redirect.p ... 9&fromuid=63477

TOP

返回列表
Namecheap
Namecheap.com - Cheap domain name registration, renewal and transfers - Free SSL Certificates - Web Hosting
互联网安全