论坛
BBS
空间测绘
发表
发布文章
提问答疑
搜索
您还未登录
登录后即可体验更多功能
立即登录
我的收藏
提问答疑
我要投稿
代码审计
[13847] 2019-03-09_代码审计实战思路之浅析PHPCMS
文档创建者:
s7ckTeam
浏览次数:
2
最后更新:
2025-01-18
代码审计
2 人阅读
|
0 人回复
s7ckTeam
s7ckTeam
当前在线
积分
-56
6万
主题
-6万
回帖
-56
积分
管理员
积分
-56
发消息
2019-03-09_代码审计实战思路之浅析PHPCMS
代
码
审
计
实
战
思
路
之
浅
析
P
H
P
C
M
S
w
n
l
t
c
0
F
r
e
e
B
u
f
2
0
1
9
-
0
3
-
0
9
前
言
前
言
这
是
在
这
是
在
F
r
e
e
B
u
f
的
第
二
篇
审
计
文
章
,
不
是
想
讲
漏
洞
分
析
,
更
多
是
想
写
下
整
个
审
计
的
过
程
,
在
我
最
开
始
学
代
码
审
的
第
二
篇
审
计
文
章
,
不
是
想
讲
漏
洞
分
析
,
更
多
是
想
写
下
整
个
审
计
的
过
程
,
在
我
最
开
始
学
代
码
审
计
时
,
拿
到
一
套
计
时
,
拿
到
一
套
c
m
s
,
却
无
从
下
手
,
想
从
网
上
找
找
实
战
案
例
,
但
找
到
的
大
都
是
案
例
分
析
,
没
见
过
几
篇
是
把
整
个
,
却
无
从
下
手
,
想
从
网
上
找
找
实
战
案
例
,
但
找
到
的
大
都
是
案
例
分
析
,
没
见
过
几
篇
是
把
整
个
审
计
过
程
写
下
来
的
。
经
过
一
番
摸
索
,
终
于
从
小
白
进
阶
到
菜
鸟
,
于
是
想
着
写
几
篇
带
完
整
过
程
的
代
码
审
计
文
章
,
尽
审
计
过
程
写
下
来
的
。
经
过
一
番
摸
索
,
终
于
从
小
白
进
阶
到
菜
鸟
,
于
是
想
着
写
几
篇
带
完
整
过
程
的
代
码
审
计
文
章
,
尽
管
这
些
过
程
在
大
佬
们
看
来
跟
后
面
的
漏
洞
关
系
不
大
、
并
不
重
要
;
但
对
于
新
手
朋
友
来
说
,
这
可
能
是
一
篇
把
他
从
迷
茫
管
这
些
过
程
在
大
佬
们
看
来
跟
后
面
的
漏
洞
关
系
不
大
、
并
不
重
要
;
但
对
于
新
手
朋
友
来
说
,
这
可
能
是
一
篇
把
他
从
迷
茫
中
拉
出
来
的
文
章
。
中
拉
出
来
的
文
章
。
虽
然
我
只
写
了
两
篇
,
但
每
篇
都
是
我
审
计
时
的
完
整
过
程
,
算
不
是
什
么
深
度
好
文
,
但
只
希
望
能
给
新
手
朋
友
一
点
点
帮
虽
然
我
只
写
了
两
篇
,
但
每
篇
都
是
我
审
计
时
的
完
整
过
程
,
算
不
是
什
么
深
度
好
文
,
但
只
希
望
能
给
新
手
朋
友
一
点
点
帮
助
。
我
只
是
位
菜
鸟
,
写
出
让
大
佬
满
意
的
文
章
,
我
不
是
小
说
主
角
,
做
不
出
越
级
的
操
作
,
但
我
的
文
章
兴
许
能
对
新
人
助
。
我
只
是
位
菜
鸟
,
写
出
让
大
佬
满
意
的
文
章
,
我
不
是
小
说
主
角
,
做
不
出
越
级
的
操
作
,
但
我
的
文
章
兴
许
能
对
新
人
朋
友
有
帮
助
呢
?
毕
竟
我
也
是
刚
从
新
手
过
来
的
,
我
知
道
那
时
候
的
我
想
要
什
么
,
但
找
不
到
;
如
果
后
来
人
也
这
么
想
,
朋
友
有
帮
助
呢
?
毕
竟
我
也
是
刚
从
新
手
过
来
的
,
我
知
道
那
时
候
的
我
想
要
什
么
,
但
找
不
到
;
如
果
后
来
人
也
这
么
想
,
也
像
当
初
的
我
那
样
想
,
那
这
两
篇
就
没
白
写
也
像
当
初
的
我
那
样
想
,
那
这
两
篇
就
没
白
写
~
通
读
全
文
通
读
全
文
跟
进
将
包
含
进
来
,
然
后
调
用
函
数
,
跟
进
i
n
d
e
x
.
p
h
p
d
e
f
i
n
e
(
'
P
H
P
C
M
S
_
P
A
T
H
'
,
d
i
r
n
a
m
e
(
_
_
F
I
L
E
_
_
)
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
)
;
i
n
c
l
u
d
e
P
H
P
C
M
S
_
P
A
T
H
.
'
/
p
h
p
c
m
s
/
b
a
s
e
.
p
h
p
'
;
p
c
_
b
a
s
e
:
:
c
r
e
a
t
_
a
p
p
(
)
;
p
h
p
c
m
s
/
b
a
s
e
.
p
h
p
p
c
_
b
a
s
e
:
:
c
r
e
a
t
_
a
p
p
p
h
p
c
m
s
/
b
a
s
e
.
p
h
p
行
,
定
义
常
量
,
加
载
通
用
函
数
库
继
续
跟
进
方
法
,
这
里
介
绍
几
个
比
较
常
用
的
方
法
,
都
在
p
c
_
b
a
s
e
类
中
/
/
加
载
系
统
类
/
/
加
载
应
用
类
/
/
加
载
数
据
模
型
/
/
加
载
配
置
文
件
d
e
f
i
n
e
(
'
I
N
_
P
H
P
C
M
S
'
,
t
r
u
e
)
;
/
/
P
H
P
C
M
S
框
架
路
径
d
e
f
i
n
e
(
'
P
C
_
P
A
T
H
'
,
d
i
r
n
a
m
e
(
_
_
F
I
L
E
_
_
)
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
)
;
i
f
(
!
d
e
f
i
n
e
d
(
'
P
H
P
C
M
S
_
P
A
T
H
'
)
)
d
e
f
i
n
e
(
'
P
H
P
C
M
S
_
P
A
T
H
'
,
P
C
_
P
A
T
H
.
'
.
.
'
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
)
;
/
/
缓
存
文
件
夹
地
址
d
e
f
i
n
e
(
'
C
A
C
H
E
_
P
A
T
H
'
,
P
H
P
C
M
S
_
P
A
T
H
.
'
c
a
c
h
e
s
'
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
)
;
/
/
主
机
协
议
d
e
f
i
n
e
(
'
S
I
T
E
_
P
R
O
T
O
C
O
L
'
,
i
s
s
e
t
(
$
_
S
E
R
V
E
R
[
'
S
E
R
V
E
R
_
P
O
R
T
'
]
)
&
&
$
_
S
E
R
V
E
R
[
'
S
E
R
V
E
R
_
P
O
R
T
'
]
=
=
'
4
4
3
'
?
'
h
t
t
p
s
:
/
/
'
:
'
h
t
t
p
:
/
/
'
)
;
/
/
当
前
访
问
的
主
机
名
d
e
f
i
n
e
(
'
S
I
T
E
_
U
R
L
'
,
(
i
s
s
e
t
(
$
_
S
E
R
V
E
R
[
'
H
T
T
P
_
H
O
S
T
'
]
)
?
$
_
S
E
R
V
E
R
[
'
H
T
T
P
_
H
O
S
T
'
]
:
'
'
)
)
;
/
/
来
源
d
e
f
i
n
e
(
'
H
T
T
P
_
R
E
F
E
R
E
R
'
,
i
s
s
e
t
(
$
_
S
E
R
V
E
R
[
'
H
T
T
P
_
R
E
F
E
R
E
R
'
]
)
?
$
_
S
E
R
V
E
R
[
'
H
T
T
P
_
R
E
F
E
R
E
R
'
]
:
'
'
)
;
/
/
系
统
开
始
时
间
d
e
f
i
n
e
(
'
S
Y
S
_
S
T
A
R
T
_
T
I
M
E
'
,
m
i
c
r
o
t
i
m
e
(
)
)
;
/
/
加
载
公
用
函
数
库
p
c
_
b
a
s
e
:
:
l
o
a
d
_
s
y
s
_
f
u
n
c
(
'
g
l
o
b
a
l
'
)
;
p
c
_
b
a
s
e
:
:
l
o
a
d
_
s
y
s
_
f
u
n
c
(
'
e
x
t
e
n
t
i
o
n
'
)
;
p
c
_
b
a
s
e
:
:
a
u
t
o
_
l
o
a
d
_
f
u
n
c
(
)
;
p
c
_
b
a
s
e
:
:
l
o
a
d
_
c
o
n
f
i
g
(
'
s
y
s
t
e
m
'
,
'
e
r
r
o
r
l
o
g
'
)
?
s
e
t
_
e
r
r
o
r
_
h
a
n
d
l
e
r
(
'
m
y
_
e
r
r
o
r
_
h
a
n
d
l
e
r
'
)
:
e
r
r
o
r
_
r
e
p
o
r
t
i
n
g
(
E
_
E
R
R
O
R
|
E
_
W
A
R
N
I
N
G
|
E
_
P
A
R
S
E
)
;
/
/
设
置
本
地
时
差
f
u
n
c
t
i
o
n
_
e
x
i
s
t
s
(
'
d
a
t
e
_
d
e
f
a
u
l
t
_
t
i
m
e
z
o
n
e
_
s
e
t
'
)
&
&
d
a
t
e
_
d
e
f
a
u
l
t
_
t
i
m
e
z
o
n
e
_
s
e
t
(
p
c
_
b
a
s
e
:
:
l
o
a
d
_
c
o
n
f
i
g
(
'
s
y
s
t
e
m
'
,
'
t
i
m
e
z
o
n
e
'
)
)
;
d
e
f
i
n
e
(
'
C
H
A
R
S
E
T
'
,
p
c
_
b
a
s
e
:
:
l
o
a
d
_
c
o
n
f
i
g
(
'
s
y
s
t
e
m
'
,
'
c
h
a
r
s
e
t
'
)
)
;
/
/
输
出
页
面
字
符
集
h
e
a
d
e
r
(
'
C
o
n
t
e
n
t
-
t
y
p
e
:
t
e
x
t
/
h
t
m
l
;
c
h
a
r
s
e
t
=
'
.
C
H
A
R
S
E
T
)
;
d
e
f
i
n
e
(
'
S
Y
S
_
T
I
M
E
'
,
t
i
m
e
(
)
)
;
/
/
定
义
网
站
根
路
径
d
e
f
i
n
e
(
'
W
E
B
_
P
A
T
H
'
,
p
c
_
b
a
s
e
:
:
l
o
a
d
_
c
o
n
f
i
g
(
'
s
y
s
t
e
m
'
,
'
w
e
b
_
p
a
t
h
'
)
)
;
/
/
j
s
路
径
d
e
f
i
n
e
(
'
J
S
_
P
A
T
H
'
,
p
c
_
b
a
s
e
:
:
l
o
a
d
_
c
o
n
f
i
g
(
'
s
y
s
t
e
m
'
,
'
j
s
_
p
a
t
h
'
)
)
;
/
/
c
s
s
路
径
d
e
f
i
n
e
(
'
C
S
S
_
P
A
T
H
'
,
p
c
_
b
a
s
e
:
:
l
o
a
d
_
c
o
n
f
i
g
(
'
s
y
s
t
e
m
'
,
'
c
s
s
_
p
a
t
h
'
)
)
;
/
/
i
m
g
路
径
d
e
f
i
n
e
(
'
I
M
G
_
P
A
T
H
'
,
p
c
_
b
a
s
e
:
:
l
o
a
d
_
c
o
n
f
i
g
(
'
s
y
s
t
e
m
'
,
'
i
m
g
_
p
a
t
h
'
)
)
;
/
/
动
态
程
序
路
径
d
e
f
i
n
e
(
'
A
P
P
_
P
A
T
H
'
,
p
c
_
b
a
s
e
:
:
l
o
a
d
_
c
o
n
f
i
g
(
'
s
y
s
t
e
m
'
,
'
a
p
p
_
p
a
t
h
'
)
)
;
/
/
应
用
静
态
文
件
路
径
d
e
f
i
n
e
(
'
P
L
U
G
I
N
_
S
T
A
T
I
C
S
_
P
A
T
H
'
,
W
E
B
_
P
A
T
H
.
'
s
t
a
t
i
c
s
/
p
l
u
g
i
n
/
'
)
;
.
.
.
.
.
.
9
-
6
0
p
c
_
b
a
s
e
:
:
c
r
e
a
t
_
a
p
p
p
h
p
c
m
s
/
b
a
s
e
.
p
h
p
6
7
行
/
*
*
*
初
始
化
应
用
程
序
*
/
p
u
b
l
i
c
s
t
a
t
i
c
f
u
n
c
t
i
o
n
c
r
e
a
t
_
a
p
p
(
)
{
r
e
t
u
r
n
s
e
l
f
:
:
l
o
a
d
_
s
y
s
_
c
l
a
s
s
(
'
a
p
p
l
i
c
a
t
i
o
n
'
)
;
}
l
o
a
d
_
s
y
s
_
c
l
a
s
s
l
o
a
d
_
a
p
p
_
c
l
a
s
s
l
o
a
d
_
m
o
d
e
l
l
o
a
d
_
c
o
n
f
i
g
对
比
三
个
方
法
发
现
,
相
同
的
是
核
心
都
是
调
用
方
法
,
跟
进
方
法
跟
读
完
方
法
,
可
知
:
当
调
用
时
,
到
目
录
下
找
当
调
用
时
,
到
目
录
下
找
当
调
用
时
,
到
目
录
下
找
/
*
*
*
加
载
系
统
类
方
法
*
@
p
a
r
a
m
s
t
r
i
n
g
$
c
l
a
s
s
n
a
m
e
类
名
*
@
p
a
r
a
m
s
t
r
i
n
g
$
p
a
t
h
扩
展
地
址
*
@
p
a
r
a
m
i
n
t
g
e
r
$
i
n
i
t
i
a
l
i
z
e
是
否
初
始
化
*
/
p
u
b
l
i
c
s
t
a
t
i
c
f
u
n
c
t
i
o
n
l
o
a
d
_
s
y
s
_
c
l
a
s
s
(
$
c
l
a
s
s
n
a
m
e
,
$
p
a
t
h
=
'
'
,
$
i
n
i
t
i
a
l
i
z
e
=
1
)
{
r
e
t
u
r
n
s
e
l
f
:
:
_
l
o
a
d
_
c
l
a
s
s
(
$
c
l
a
s
s
n
a
m
e
,
$
p
a
t
h
,
$
i
n
i
t
i
a
l
i
z
e
)
;
}
/
*
*
*
加
载
应
用
类
方
法
*
@
p
a
r
a
m
s
t
r
i
n
g
$
c
l
a
s
s
n
a
m
e
类
名
*
@
p
a
r
a
m
s
t
r
i
n
g
$
m
模
块
*
@
p
a
r
a
m
i
n
t
g
e
r
$
i
n
i
t
i
a
l
i
z
e
是
否
初
始
化
*
/
p
u
b
l
i
c
s
t
a
t
i
c
f
u
n
c
t
i
o
n
l
o
a
d
_
a
p
p
_
c
l
a
s
s
(
$
c
l
a
s
s
n
a
m
e
,
$
m
=
'
'
,
$
i
n
i
t
i
a
l
i
z
e
=
1
)
{
$
m
=
e
m
p
t
y
(
$
m
)
&
&
d
e
f
i
n
e
d
(
'
R
O
U
T
E
_
M
'
)
?
R
O
U
T
E
_
M
:
$
m
;
i
f
(
e
m
p
t
y
(
$
m
)
)
r
e
t
u
r
n
f
a
l
s
e
;
r
e
t
u
r
n
s
e
l
f
:
:
_
l
o
a
d
_
c
l
a
s
s
(
$
c
l
a
s
s
n
a
m
e
,
'
m
o
d
u
l
e
s
'
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
$
m
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
'
c
l
a
s
s
e
s
'
,
$
i
n
i
t
i
a
l
i
z
e
)
;
}
/
*
*
*
加
载
数
据
模
型
*
@
p
a
r
a
m
s
t
r
i
n
g
$
c
l
a
s
s
n
a
m
e
类
名
*
/
p
u
b
l
i
c
s
t
a
t
i
c
f
u
n
c
t
i
o
n
l
o
a
d
_
m
o
d
e
l
(
$
c
l
a
s
s
n
a
m
e
)
{
r
e
t
u
r
n
s
e
l
f
:
:
_
l
o
a
d
_
c
l
a
s
s
(
$
c
l
a
s
s
n
a
m
e
,
'
m
o
d
e
l
'
)
;
}
_
l
o
a
d
_
c
l
a
s
s
_
l
o
a
d
_
c
l
a
s
s
/
*
*
*
加
载
类
文
件
函
数
*
@
p
a
r
a
m
s
t
r
i
n
g
$
c
l
a
s
s
n
a
m
e
类
名
*
@
p
a
r
a
m
s
t
r
i
n
g
$
p
a
t
h
扩
展
地
址
*
@
p
a
r
a
m
i
n
t
g
e
r
$
i
n
i
t
i
a
l
i
z
e
是
否
初
始
化
*
/
p
r
i
v
a
t
e
s
t
a
t
i
c
f
u
n
c
t
i
o
n
_
l
o
a
d
_
c
l
a
s
s
(
$
c
l
a
s
s
n
a
m
e
,
$
p
a
t
h
=
'
'
,
$
i
n
i
t
i
a
l
i
z
e
=
1
)
{
s
t
a
t
i
c
$
c
l
a
s
s
e
s
=
a
r
r
a
y
(
)
;
i
f
(
e
m
p
t
y
(
$
p
a
t
h
)
)
$
p
a
t
h
=
'
l
i
b
s
'
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
'
c
l
a
s
s
e
s
'
;
$
k
e
y
=
m
d
5
(
$
p
a
t
h
.
$
c
l
a
s
s
n
a
m
e
)
;
i
f
(
i
s
s
e
t
(
$
c
l
a
s
s
e
s
[
$
k
e
y
]
)
)
{
i
f
(
!
e
m
p
t
y
(
$
c
l
a
s
s
e
s
[
$
k
e
y
]
)
)
{
r
e
t
u
r
n
$
c
l
a
s
s
e
s
[
$
k
e
y
]
;
}
e
l
s
e
{
r
e
t
u
r
n
t
r
u
e
;
}
}
i
f
(
f
i
l
e
_
e
x
i
s
t
s
(
P
C
_
P
A
T
H
.
$
p
a
t
h
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
$
c
l
a
s
s
n
a
m
e
.
'
.
c
l
a
s
s
.
p
h
p
'
)
)
{
i
n
c
l
u
d
e
P
C
_
P
A
T
H
.
$
p
a
t
h
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
$
c
l
a
s
s
n
a
m
e
.
'
.
c
l
a
s
s
.
p
h
p
'
;
$
n
a
m
e
=
$
c
l
a
s
s
n
a
m
e
;
i
f
(
$
m
y
_
p
a
t
h
=
s
e
l
f
:
:
m
y
_
p
a
t
h
(
P
C
_
P
A
T
H
.
$
p
a
t
h
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
$
c
l
a
s
s
n
a
m
e
.
'
.
c
l
a
s
s
.
p
h
p
'
)
)
{
i
n
c
l
u
d
e
$
m
y
_
p
a
t
h
;
$
n
a
m
e
=
'
M
Y
_
'
.
$
c
l
a
s
s
n
a
m
e
;
}
i
f
(
$
i
n
i
t
i
a
l
i
z
e
)
{
$
c
l
a
s
s
e
s
[
$
k
e
y
]
=
n
e
w
$
n
a
m
e
;
}
e
l
s
e
{
$
c
l
a
s
s
e
s
[
$
k
e
y
]
=
t
r
u
e
;
}
r
e
t
u
r
n
$
c
l
a
s
s
e
s
[
$
k
e
y
]
;
}
e
l
s
e
{
r
e
t
u
r
n
f
a
l
s
e
;
}
}
_
l
o
a
d
_
c
l
a
s
s
l
o
a
d
_
s
y
s
_
c
l
a
s
s
p
h
p
c
m
s
/
l
i
b
s
/
c
l
a
s
s
e
s
x
x
.
c
l
a
s
s
.
p
h
p
l
o
a
d
_
a
p
p
_
c
l
a
s
s
p
h
p
c
m
s
/
m
o
d
u
l
e
s
/
模
块
名
/
c
l
a
s
s
e
s
/
x
x
.
c
l
a
s
s
.
p
h
p
l
o
a
d
_
m
o
d
e
l
p
h
p
c
m
s
/
m
o
d
e
l
x
x
.
c
l
a
s
s
.
p
h
p
如
果
时
,
包
含
类
文
件
并
实
例
化
类
,
反
之
,
仅
包
含
类
文
件
还
有
个
方
法
,
用
于
加
载
配
置
文
件
,
继
续
跟
进
调
用
时
,
到
目
录
下
找
如
果
不
为
空
时
,
返
回
具
体
配
置
变
量
的
值
,
反
之
,
返
回
整
个
配
置
文
件
中
的
配
置
信
息
了
解
了
几
个
常
见
的
方
法
后
,
继
续
回
到
方
法
该
处
只
有
一
句
代
码
,
实
例
化
类
,
由
于
前
面
已
经
了
解
过
这
几
个
常
见
的
方
法
,
所
以
这
里
能
轻
易
的
就
找
到
类
的
文
件
,
跟
进
在
类
的
构
造
方
法
中
实
例
化
了
类
,
并
定
义
了
几
个
常
量
,
根
据
常
量
名
,
猜
测
应
该
是
跟
路
由
相
关
,
跟
进
$
i
n
i
t
i
a
l
i
z
e
=
1
l
o
a
d
_
c
o
n
f
i
g
2
6
0
行
/
*
*
*
加
载
配
置
文
件
*
@
p
a
r
a
m
s
t
r
i
n
g
$
f
i
l
e
配
置
文
件
*
@
p
a
r
a
m
s
t
r
i
n
g
$
k
e
y
要
获
取
的
配
置
荐
*
@
p
a
r
a
m
s
t
r
i
n
g
$
d
e
f
a
u
l
t
默
认
配
置
。
当
获
取
配
置
项
目
失
败
时
该
值
发
生
作
用
。
*
@
p
a
r
a
m
b
o
o
l
e
a
n
$
r
e
l
o
a
d
强
制
重
新
加
载
。
*
/
p
u
b
l
i
c
s
t
a
t
i
c
f
u
n
c
t
i
o
n
l
o
a
d
_
c
o
n
f
i
g
(
$
f
i
l
e
,
$
k
e
y
=
'
'
,
$
d
e
f
a
u
l
t
=
'
'
,
$
r
e
l
o
a
d
=
f
a
l
s
e
)
{
s
t
a
t
i
c
$
c
o
n
f
i
g
s
=
a
r
r
a
y
(
)
;
i
f
(
!
$
r
e
l
o
a
d
&
&
i
s
s
e
t
(
$
c
o
n
f
i
g
s
[
$
f
i
l
e
]
)
)
{
i
f
(
e
m
p
t
y
(
$
k
e
y
)
)
{
r
e
t
u
r
n
$
c
o
n
f
i
g
s
[
$
f
i
l
e
]
;
}
e
l
s
e
i
f
(
i
s
s
e
t
(
$
c
o
n
f
i
g
s
[
$
f
i
l
e
]
[
$
k
e
y
]
)
)
{
r
e
t
u
r
n
$
c
o
n
f
i
g
s
[
$
f
i
l
e
]
[
$
k
e
y
]
;
}
e
l
s
e
{
r
e
t
u
r
n
$
d
e
f
a
u
l
t
;
}
}
$
p
a
t
h
=
C
A
C
H
E
_
P
A
T
H
.
'
c
o
n
f
i
g
s
'
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
$
f
i
l
e
.
'
.
p
h
p
'
;
i
f
(
f
i
l
e
_
e
x
i
s
t
s
(
$
p
a
t
h
)
)
{
$
c
o
n
f
i
g
s
[
$
f
i
l
e
]
=
i
n
c
l
u
d
e
$
p
a
t
h
;
}
i
f
(
e
m
p
t
y
(
$
k
e
y
)
)
{
r
e
t
u
r
n
$
c
o
n
f
i
g
s
[
$
f
i
l
e
]
;
}
e
l
s
e
i
f
(
i
s
s
e
t
(
$
c
o
n
f
i
g
s
[
$
f
i
l
e
]
[
$
k
e
y
]
)
)
{
r
e
t
u
r
n
$
c
o
n
f
i
g
s
[
$
f
i
l
e
]
[
$
k
e
y
]
;
}
e
l
s
e
{
r
e
t
u
r
n
$
d
e
f
a
u
l
t
;
}
}
l
o
a
d
_
c
o
n
f
i
g
c
a
c
h
e
s
/
c
o
n
f
i
g
s
/
x
x
.
p
h
p
$
k
e
y
p
c
_
b
a
s
e
:
:
c
r
e
a
t
_
a
p
p
/
*
*
*
初
始
化
应
用
程
序
*
/
p
u
b
l
i
c
s
t
a
t
i
c
f
u
n
c
t
i
o
n
c
r
e
a
t
_
a
p
p
(
)
{
r
e
t
u
r
n
s
e
l
f
:
:
l
o
a
d
_
s
y
s
_
c
l
a
s
s
(
'
a
p
p
l
i
c
a
t
i
o
n
'
)
;
}
a
p
p
l
i
c
a
t
i
o
n
a
p
p
l
i
c
a
t
i
o
n
p
h
p
c
m
s
/
l
i
b
s
/
c
l
a
s
s
e
s
/
a
p
p
l
i
c
a
t
i
o
n
.
c
l
a
s
s
.
p
h
p
c
l
a
s
s
a
p
p
l
i
c
a
t
i
o
n
{
/
*
*
*
构
造
函
数
*
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
_
_
c
o
n
s
t
r
u
c
t
(
)
{
$
p
a
r
a
m
=
p
c
_
b
a
s
e
:
:
l
o
a
d
_
s
y
s
_
c
l
a
s
s
(
'
p
a
r
a
m
'
)
;
d
e
f
i
n
e
(
'
R
O
U
T
E
_
M
'
,
$
p
a
r
a
m
-
>
r
o
u
t
e
_
m
(
)
)
;
d
e
f
i
n
e
(
'
R
O
U
T
E
_
C
'
,
$
p
a
r
a
m
-
>
r
o
u
t
e
_
c
(
)
)
;
d
e
f
i
n
e
(
'
R
O
U
T
E
_
A
'
,
$
p
a
r
a
m
-
>
r
o
u
t
e
_
a
(
)
)
;
$
t
h
i
s
-
>
i
n
i
t
(
)
;
}
.
.
.
.
.
.
a
p
p
l
i
c
a
t
i
o
n
p
a
r
a
m
p
h
p
c
m
s
/
l
i
b
s
/
c
l
a
s
s
e
s
/
p
a
r
a
m
.
c
l
a
s
s
.
p
h
p
将
、
等
外
部
传
入
的
变
量
交
给
函
数
处
理
,
函
数
的
核
心
就
是
除
了
转
义
外
部
传
入
的
变
量
,
还
有
就
是
加
载
配
置
,
在
,
如
下
继
续
往
下
,
c
l
a
s
s
p
a
r
a
m
{
/
/
路
由
配
置
p
r
i
v
a
t
e
$
r
o
u
t
e
_
c
o
n
f
i
g
=
'
'
;
p
u
b
l
i
c
f
u
n
c
t
i
o
n
_
_
c
o
n
s
t
r
u
c
t
(
)
{
i
f
(
!
g
e
t
_
m
a
g
i
c
_
q
u
o
t
e
s
_
g
p
c
(
)
)
{
$
_
P
O
S
T
=
n
e
w
_
a
d
d
s
l
a
s
h
e
s
(
$
_
P
O
S
T
)
;
$
_
G
E
T
=
n
e
w
_
a
d
d
s
l
a
s
h
e
s
(
$
_
G
E
T
)
;
$
_
R
E
Q
U
E
S
T
=
n
e
w
_
a
d
d
s
l
a
s
h
e
s
(
$
_
R
E
Q
U
E
S
T
)
;
$
_
C
O
O
K
I
E
=
n
e
w
_
a
d
d
s
l
a
s
h
e
s
(
$
_
C
O
O
K
I
E
)
;
}
$
t
h
i
s
-
>
r
o
u
t
e
_
c
o
n
f
i
g
=
p
c
_
b
a
s
e
:
:
l
o
a
d
_
c
o
n
f
i
g
(
'
r
o
u
t
e
'
,
S
I
T
E
_
U
R
L
)
?
p
c
_
b
a
s
e
:
:
l
o
a
d
_
c
o
n
f
i
g
(
'
r
o
u
t
e
'
,
S
I
T
E
_
U
R
L
)
:
p
c
_
b
a
s
e
:
:
l
o
a
d
_
c
o
n
f
i
g
(
'
r
o
u
t
e
'
,
'
d
e
f
a
u
l
t
'
)
;
i
f
(
i
s
s
e
t
(
$
t
h
i
s
-
>
r
o
u
t
e
_
c
o
n
f
i
g
[
'
d
a
t
a
'
]
[
'
P
O
S
T
'
]
)
&
&
i
s
_
a
r
r
a
y
(
$
t
h
i
s
-
>
r
o
u
t
e
_
c
o
n
f
i
g
[
'
d
a
t
a
'
]
[
'
P
O
S
T
'
]
)
)
{
f
o
r
e
a
c
h
(
$
t
h
i
s
-
>
r
o
u
t
e
_
c
o
n
f
i
g
[
'
d
a
t
a
'
]
[
'
P
O
S
T
'
]
a
s
$
_
k
e
y
=
>
$
_
v
a
l
u
e
)
{
i
f
(
!
i
s
s
e
t
(
$
_
P
O
S
T
[
$
_
k
e
y
]
)
)
$
_
P
O
S
T
[
$
_
k
e
y
]
=
$
_
v
a
l
u
e
;
}
}
i
f
(
i
s
s
e
t
(
$
t
h
i
s
-
>
r
o
u
t
e
_
c
o
n
f
i
g
[
'
d
a
t
a
'
]
[
'
G
E
T
'
]
)
&
&
i
s
_
a
r
r
a
y
(
$
t
h
i
s
-
>
r
o
u
t
e
_
c
o
n
f
i
g
[
'
d
a
t
a
'
]
[
'
G
E
T
'
]
)
)
{
f
o
r
e
a
c
h
(
$
t
h
i
s
-
>
r
o
u
t
e
_
c
o
n
f
i
g
[
'
d
a
t
a
'
]
[
'
G
E
T
'
]
a
s
$
_
k
e
y
=
>
$
_
v
a
l
u
e
)
{
i
f
(
!
i
s
s
e
t
(
$
_
G
E
T
[
$
_
k
e
y
]
)
)
$
_
G
E
T
[
$
_
k
e
y
]
=
$
_
v
a
l
u
e
;
}
}
i
f
(
i
s
s
e
t
(
$
_
G
E
T
[
'
p
a
g
e
'
]
)
)
{
$
_
G
E
T
[
'
p
a
g
e
'
]
=
m
a
x
(
i
n
t
v
a
l
(
$
_
G
E
T
[
'
p
a
g
e
'
]
)
,
1
)
;
$
_
G
E
T
[
'
p
a
g
e
'
]
=
m
i
n
(
$
_
G
E
T
[
'
p
a
g
e
'
]
,
1
0
0
0
0
0
0
0
0
0
)
;
}
r
e
t
u
r
n
t
r
u
e
;
}
.
.
.
.
.
.
p
o
s
t
g
e
t
n
e
w
_
a
d
d
s
l
a
s
h
e
s
n
e
w
_
a
d
d
s
l
a
s
h
e
s
a
d
d
s
l
a
s
h
e
s
r
o
u
t
e
c
a
c
h
e
s
/
c
o
n
f
i
g
s
/
r
o
u
t
e
.
p
h
p
r
e
t
u
r
n
a
r
r
a
y
(
'
d
e
f
a
u
l
t
'
=
>
a
r
r
a
y
(
'
m
'
=
>
'
c
o
n
t
e
n
t
'
,
'
c
'
=
>
'
i
n
d
e
x
'
,
'
a
'
=
>
'
i
n
i
t
'
)
,
)
;
回
到
类
的
构
造
方
法
几
个
常
量
的
值
也
知
道
是
什
么
了
,
继
续
跟
进
方
法
跟
进
/
*
*
*
获
取
模
型
*
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
r
o
u
t
e
_
m
(
)
{
$
m
=
i
s
s
e
t
(
$
_
G
E
T
[
'
m
'
]
)
&
&
!
e
m
p
t
y
(
$
_
G
E
T
[
'
m
'
]
)
?
$
_
G
E
T
[
'
m
'
]
:
(
i
s
s
e
t
(
$
_
P
O
S
T
[
'
m
'
]
)
&
&
!
e
m
p
t
y
(
$
_
P
O
S
T
[
'
m
'
]
)
?
$
_
P
O
S
T
[
'
m
'
]
:
'
'
)
;
$
m
=
$
t
h
i
s
-
>
s
a
f
e
_
d
e
a
l
(
$
m
)
;
i
f
(
e
m
p
t
y
(
$
m
)
)
{
r
e
t
u
r
n
$
t
h
i
s
-
>
r
o
u
t
e
_
c
o
n
f
i
g
[
'
m
'
]
;
}
e
l
s
e
{
i
f
(
i
s
_
s
t
r
i
n
g
(
$
m
)
)
r
e
t
u
r
n
$
m
;
}
}
/
*
*
*
获
取
控
制
器
*
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
r
o
u
t
e
_
c
(
)
{
$
c
=
i
s
s
e
t
(
$
_
G
E
T
[
'
c
'
]
)
&
&
!
e
m
p
t
y
(
$
_
G
E
T
[
'
c
'
]
)
?
$
_
G
E
T
[
'
c
'
]
:
(
i
s
s
e
t
(
$
_
P
O
S
T
[
'
c
'
]
)
&
&
!
e
m
p
t
y
(
$
_
P
O
S
T
[
'
c
'
]
)
?
$
_
P
O
S
T
[
'
c
'
]
:
'
'
)
;
$
c
=
$
t
h
i
s
-
>
s
a
f
e
_
d
e
a
l
(
$
c
)
;
i
f
(
e
m
p
t
y
(
$
c
)
)
{
r
e
t
u
r
n
$
t
h
i
s
-
>
r
o
u
t
e
_
c
o
n
f
i
g
[
'
c
'
]
;
}
e
l
s
e
{
i
f
(
i
s
_
s
t
r
i
n
g
(
$
c
)
)
r
e
t
u
r
n
$
c
;
}
}
/
*
*
*
获
取
事
件
*
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
r
o
u
t
e
_
a
(
)
{
$
a
=
i
s
s
e
t
(
$
_
G
E
T
[
'
a
'
]
)
&
&
!
e
m
p
t
y
(
$
_
G
E
T
[
'
a
'
]
)
?
$
_
G
E
T
[
'
a
'
]
:
(
i
s
s
e
t
(
$
_
P
O
S
T
[
'
a
'
]
)
&
&
!
e
m
p
t
y
(
$
_
P
O
S
T
[
'
a
'
]
)
?
$
_
P
O
S
T
[
'
a
'
]
:
'
'
)
;
$
a
=
$
t
h
i
s
-
>
s
a
f
e
_
d
e
a
l
(
$
a
)
;
i
f
(
e
m
p
t
y
(
$
a
)
)
{
r
e
t
u
r
n
$
t
h
i
s
-
>
r
o
u
t
e
_
c
o
n
f
i
g
[
'
a
'
]
;
}
e
l
s
e
{
i
f
(
i
s
_
s
t
r
i
n
g
(
$
a
)
)
r
e
t
u
r
n
$
a
;
}
}
.
.
.
.
.
.
.
/
*
*
*
安
全
处
理
函
数
*
处
理
m
,
a
,
c
*
/
p
r
i
v
a
t
e
f
u
n
c
t
i
o
n
s
a
f
e
_
d
e
a
l
(
$
s
t
r
)
{
r
e
t
u
r
n
s
t
r
_
r
e
p
l
a
c
e
(
a
r
r
a
y
(
'
/
'
,
'
.
'
)
,
'
'
,
$
s
t
r
)
;
}
a
p
p
l
i
c
a
t
i
o
n
/
*
*
*
构
造
函
数
*
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
_
_
c
o
n
s
t
r
u
c
t
(
)
{
$
p
a
r
a
m
=
p
c
_
b
a
s
e
:
:
l
o
a
d
_
s
y
s
_
c
l
a
s
s
(
'
p
a
r
a
m
'
)
;
d
e
f
i
n
e
(
'
R
O
U
T
E
_
M
'
,
$
p
a
r
a
m
-
>
r
o
u
t
e
_
m
(
)
)
;
d
e
f
i
n
e
(
'
R
O
U
T
E
_
C
'
,
$
p
a
r
a
m
-
>
r
o
u
t
e
_
c
(
)
)
;
d
e
f
i
n
e
(
'
R
O
U
T
E
_
A
'
,
$
p
a
r
a
m
-
>
r
o
u
t
e
_
a
(
)
)
;
$
t
h
i
s
-
>
i
n
i
t
(
)
;
}
$
t
h
i
s
-
>
i
n
i
t
2
5
行
/
*
*
*
调
用
件
事
*
/
p
r
i
v
a
t
e
f
u
n
c
t
i
o
n
i
n
i
t
(
)
{
$
c
o
n
t
r
o
l
l
e
r
=
$
t
h
i
s
-
>
l
o
a
d
_
c
o
n
t
r
o
l
l
e
r
(
)
;
i
f
(
m
e
t
h
o
d
_
e
x
i
s
t
s
(
$
c
o
n
t
r
o
l
l
e
r
,
R
O
U
T
E
_
A
)
)
{
i
f
(
p
r
e
g
_
m
a
t
c
h
(
'
/
^
[
_
]
/
i
'
,
R
O
U
T
E
_
A
)
)
{
e
x
i
t
(
'
Y
o
u
a
r
e
v
i
s
i
t
i
n
g
t
h
e
a
c
t
i
o
n
i
s
t
o
p
r
o
t
e
c
t
t
h
e
p
r
i
v
a
t
e
a
c
t
i
o
n
'
)
;
}
e
l
s
e
{
c
a
l
l
_
u
s
e
r
_
f
u
n
c
(
a
r
r
a
y
(
$
c
o
n
t
r
o
l
l
e
r
,
R
O
U
T
E
_
A
)
)
;
}
}
e
l
s
e
{
e
x
i
t
(
'
A
c
t
i
o
n
d
o
e
s
n
o
t
e
x
i
s
t
.
'
)
;
}
}
$
t
h
i
s
-
>
l
o
a
d
_
c
o
n
t
r
o
l
l
e
r
4
4
行
包
含
控
制
器
类
文
件
,
实
例
化
控
制
器
并
返
回
,
具
体
文
件
路
径
:
(
默
认
加
载
)
方
法
调
用
方
法
来
加
载
和
实
例
化
控
制
器
类
,
然
后
调
用
具
体
的
方
法
跟
读
完
,
了
解
到
核
心
类
库
在
模
型
类
库
在
应
用
目
录
配
置
目
录
全
局
变
量
被
转
义
,
除
外
模
块
名
、
控
制
器
名
、
方
法
名
中
的
、
会
被
过
滤
方
法
名
不
允
许
以
开
头
了
解
了
整
体
结
构
后
,
再
来
思
考
下
审
计
的
方
式
方
法
:
方
案
一
:
先
对
核
心
类
库
进
行
审
计
,
如
果
找
到
漏
洞
,
那
么
在
网
站
中
可
能
会
存
在
多
处
相
同
的
漏
洞
,
就
算
找
不
到
漏
洞
,
那
对
核
心
类
库
中
的
方
法
也
多
少
了
解
,
后
面
对
具
体
应
用
功
能
审
计
时
也
会
轻
松
一
些
方
案
二
:
直
接
审
计
功
能
点
,
优
点
:
针
对
性
更
强
;
缺
点
:
某
个
功
能
点
可
能
调
用
了
多
个
核
心
类
库
中
的
方
法
,
由
于
对
核
心
类
库
不
了
解
,
跟
读
时
可
能
会
比
较
累
,
需
要
跟
的
东
西
可
能
会
比
较
多
/
/
无
论
哪
种
方
案
,
没
耐
心
是
不
行
滴
;
如
果
你
审
计
时
正
好
心
烦
躁
的
很
,
那
你
可
以
在
安
装
好
应
用
后
,
随
便
点
点
,
开
着
b
p
,
抓
抓
改
改
,
发
现
觉
得
可
能
存
在
问
题
的
点
再
跟
代
码
,
这
种
方
式
(
有
点
偏
黑
盒
)
能
发
现
一
些
比
较
明
显
的
问
题
,
想
深
入
挖
掘
,
建
议
参
考
前
面
两
种
方
案
漏
洞
分
析
漏
洞
分
析
漏
洞
存
在
于
的
方
法
/
*
*
*
加
载
控
制
器
*
@
p
a
r
a
m
s
t
r
i
n
g
$
f
i
l
e
n
a
m
e
*
@
p
a
r
a
m
s
t
r
i
n
g
$
m
*
@
r
e
t
u
r
n
o
b
j
*
/
p
r
i
v
a
t
e
f
u
n
c
t
i
o
n
l
o
a
d
_
c
o
n
t
r
o
l
l
e
r
(
$
f
i
l
e
n
a
m
e
=
'
'
,
$
m
=
'
'
)
{
i
f
(
e
m
p
t
y
(
$
f
i
l
e
n
a
m
e
)
)
$
f
i
l
e
n
a
m
e
=
R
O
U
T
E
_
C
;
i
f
(
e
m
p
t
y
(
$
m
)
)
$
m
=
R
O
U
T
E
_
M
;
$
f
i
l
e
p
a
t
h
=
P
C
_
P
A
T
H
.
'
m
o
d
u
l
e
s
'
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
$
m
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
$
f
i
l
e
n
a
m
e
.
'
.
p
h
p
'
;
i
f
(
f
i
l
e
_
e
x
i
s
t
s
(
$
f
i
l
e
p
a
t
h
)
)
{
$
c
l
a
s
s
n
a
m
e
=
$
f
i
l
e
n
a
m
e
;
i
n
c
l
u
d
e
$
f
i
l
e
p
a
t
h
;
i
f
(
$
m
y
p
a
t
h
=
p
c
_
b
a
s
e
:
:
m
y
_
p
a
t
h
(
$
f
i
l
e
p
a
t
h
)
)
{
$
c
l
a
s
s
n
a
m
e
=
'
M
Y
_
'
.
$
f
i
l
e
n
a
m
e
;
i
n
c
l
u
d
e
$
m
y
p
a
t
h
;
}
i
f
(
c
l
a
s
s
_
e
x
i
s
t
s
(
$
c
l
a
s
s
n
a
m
e
)
)
{
r
e
t
u
r
n
n
e
w
$
c
l
a
s
s
n
a
m
e
;
}
e
l
s
e
{
e
x
i
t
(
'
C
o
n
t
r
o
l
l
e
r
d
o
e
s
n
o
t
e
x
i
s
t
.
'
)
;
}
}
e
l
s
e
{
e
x
i
t
(
'
C
o
n
t
r
o
l
l
e
r
d
o
e
s
n
o
t
e
x
i
s
t
.
'
)
;
}
}
m
o
d
u
l
e
s
/
模
块
名
/
控
制
器
名
.
p
h
p
m
o
d
u
l
e
s
/
c
o
n
t
e
n
t
/
i
n
d
e
x
.
p
h
p
$
t
h
i
s
-
>
i
n
i
t
$
t
h
i
s
-
>
l
o
a
d
_
c
o
n
t
r
o
l
l
e
r
i
n
d
e
x
.
p
h
p
p
h
p
c
m
s
/
l
i
b
s
/
c
l
a
s
s
e
s
/
p
h
p
c
m
s
/
m
o
d
e
l
/
p
h
p
c
m
s
/
m
o
d
u
l
e
s
/
c
a
c
h
e
s
/
c
o
n
f
i
g
s
/
$
_
S
E
R
V
E
R
/
.
_
p
h
p
c
m
s
/
m
o
d
u
l
e
s
/
b
l
o
c
k
/
b
l
o
c
k
_
a
d
m
i
n
.
p
h
p
b
l
o
c
k
_
u
p
d
a
t
e
1
2
0
行
在
方
法
中
,
先
是
通
过
来
判
断
权
限
(
这
里
可
以
新
建
一
条
记
录
来
获
取
)
然
后
就
是
对
传
入
的
数
据
进
行
处
理
,
关
键
点
在
方
法
,
跟
进
在
方
法
中
,
调
用
了
方
法
对
变
量
进
行
处
理
,
然
后
写
入
文
件
,
最
后
返
回
文
件
路
径
跟
进
方
法
,
p
u
b
l
i
c
f
u
n
c
t
i
o
n
b
l
o
c
k
_
u
p
d
a
t
e
(
)
{
$
i
d
=
i
s
s
e
t
(
$
_
G
E
T
[
'
i
d
'
]
)
&
&
i
n
t
v
a
l
(
$
_
G
E
T
[
'
i
d
'
]
)
?
i
n
t
v
a
l
(
$
_
G
E
T
[
'
i
d
'
]
)
:
s
h
o
w
m
e
s
s
a
g
e
(
L
(
'
i
l
l
e
g
a
l
_
o
p
e
r
a
t
i
o
n
'
)
,
H
T
T
P
_
R
E
F
E
R
E
R
)
;
/
/
进
行
权
限
判
断
i
f
(
$
t
h
i
s
-
>
r
o
l
e
i
d
!
=
1
)
{
i
f
(
!
$
t
h
i
s
-
>
p
r
i
v
_
d
b
-
>
g
e
t
_
o
n
e
(
a
r
r
a
y
(
'
b
l
o
c
k
i
d
'
=
>
$
i
d
,
'
r
o
l
e
i
d
'
=
>
$
t
h
i
s
-
>
r
o
l
e
i
d
,
'
s
i
t
e
i
d
'
=
>
$
t
h
i
s
-
>
s
i
t
e
i
d
)
)
)
{
s
h
o
w
m
e
s
s
a
g
e
(
L
(
'
n
o
t
_
h
a
v
e
_
p
e
r
m
i
s
s
i
o
n
s
'
)
)
;
}
}
i
f
(
!
$
d
a
t
a
=
$
t
h
i
s
-
>
d
b
-
>
g
e
t
_
o
n
e
(
a
r
r
a
y
(
'
i
d
'
=
>
$
i
d
)
)
)
{
s
h
o
w
m
e
s
s
a
g
e
(
L
(
'
n
o
f
o
u
n
d
'
)
)
;
}
i
f
(
i
s
s
e
t
(
$
_
P
O
S
T
[
'
d
o
s
u
b
m
i
t
'
]
)
)
{
$
s
q
l
=
a
r
r
a
y
(
)
;
i
f
(
$
d
a
t
a
[
'
t
y
p
e
'
]
=
=
2
)
{
$
t
i
t
l
e
=
i
s
s
e
t
(
$
_
P
O
S
T
[
'
t
i
t
l
e
'
]
)
?
$
_
P
O
S
T
[
'
t
i
t
l
e
'
]
:
'
'
;
$
u
r
l
=
i
s
s
e
t
(
$
_
P
O
S
T
[
'
u
r
l
'
]
)
?
$
_
P
O
S
T
[
'
u
r
l
'
]
:
'
'
;
$
t
h
u
m
b
=
i
s
s
e
t
(
$
_
P
O
S
T
[
'
t
h
u
m
b
'
]
)
?
$
_
P
O
S
T
[
'
t
h
u
m
b
'
]
:
'
'
;
$
d
e
s
c
=
i
s
s
e
t
(
$
_
P
O
S
T
[
'
d
e
s
c
'
]
)
?
$
_
P
O
S
T
[
'
d
e
s
c
'
]
:
'
'
;
$
t
e
m
p
l
a
t
e
=
i
s
s
e
t
(
$
_
P
O
S
T
[
'
t
e
m
p
l
a
t
e
'
]
)
&
&
t
r
i
m
(
$
_
P
O
S
T
[
'
t
e
m
p
l
a
t
e
'
]
)
?
t
r
i
m
(
$
_
P
O
S
T
[
'
t
e
m
p
l
a
t
e
'
]
)
:
'
'
;
$
d
a
t
a
s
=
a
r
r
a
y
(
)
;
f
o
r
e
a
c
h
(
$
t
i
t
l
e
a
s
$
k
e
y
=
>
$
v
)
{
i
f
(
e
m
p
t
y
(
$
v
)
|
|
!
i
s
s
e
t
(
$
u
r
l
[
$
k
e
y
]
)
|
|
e
m
p
t
y
(
$
u
r
l
[
$
k
e
y
]
)
)
c
o
n
t
i
n
u
e
;
$
d
a
t
a
s
[
$
k
e
y
]
=
a
r
r
a
y
(
'
t
i
t
l
e
'
=
>
$
v
,
'
u
r
l
'
=
>
$
u
r
l
[
$
k
e
y
]
,
'
t
h
u
m
b
'
=
>
$
t
h
u
m
b
[
$
k
e
y
]
,
'
d
e
s
c
'
=
>
s
t
r
_
r
e
p
l
a
c
e
(
a
r
r
a
y
(
c
h
r
(
1
3
)
,
c
h
r
(
4
3
)
)
,
a
r
r
a
y
(
'
'
,
'
'
)
,
$
d
e
s
c
[
$
k
e
y
]
)
)
;
}
i
f
(
$
t
e
m
p
l
a
t
e
)
{
$
b
l
o
c
k
=
p
c
_
b
a
s
e
:
:
l
o
a
d
_
a
p
p
_
c
l
a
s
s
(
'
b
l
o
c
k
_
t
a
g
'
)
;
$
b
l
o
c
k
-
>
t
e
m
p
l
a
t
e
_
u
r
l
(
$
i
d
,
$
t
e
m
p
l
a
t
e
)
;
/
/
代
码
太
长
,
把
关
键
点
放
出
来
就
好
.
.
.
.
.
.
.
.
.
.
.
.
.
.
}
b
l
o
c
k
_
a
d
m
i
n
i
d
i
d
p
o
s
t
$
b
l
o
c
k
-
>
t
e
m
p
l
a
t
e
_
u
r
l
p
h
p
c
m
s
/
m
o
d
u
l
e
s
/
c
l
a
s
s
e
s
/
b
l
o
c
k
_
t
a
g
.
c
l
a
s
s
.
p
h
p
4
6
行
/
*
*
*
生
成
模
板
返
回
路
径
*
@
p
a
r
a
m
i
n
t
e
g
e
r
$
i
d
碎
片
I
D
号
*
@
p
a
r
a
m
s
t
r
i
n
g
$
t
e
m
p
l
a
t
e
风
格
*
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
t
e
m
p
l
a
t
e
_
u
r
l
(
$
i
d
,
$
t
e
m
p
l
a
t
e
=
'
'
)
{
$
f
i
l
e
p
a
t
h
=
C
A
C
H
E
_
P
A
T
H
.
'
c
a
c
h
e
s
_
t
e
m
p
l
a
t
e
'
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
'
b
l
o
c
k
'
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
$
i
d
.
'
.
p
h
p
'
;
$
d
i
r
=
d
i
r
n
a
m
e
(
$
f
i
l
e
p
a
t
h
)
;
i
f
(
$
t
e
m
p
l
a
t
e
)
{
i
f
(
!
i
s
_
d
i
r
(
$
d
i
r
)
)
{
m
k
d
i
r
(
$
d
i
r
,
0
7
7
7
,
t
r
u
e
)
;
}
$
t
p
l
=
p
c
_
b
a
s
e
:
:
l
o
a
d
_
s
y
s
_
c
l
a
s
s
(
'
t
e
m
p
l
a
t
e
_
c
a
c
h
e
'
)
;
$
s
t
r
=
$
t
p
l
-
>
t
e
m
p
l
a
t
e
_
p
a
r
s
e
(
n
e
w
_
s
t
r
i
p
s
l
a
s
h
e
s
(
$
t
e
m
p
l
a
t
e
)
)
;
@
f
i
l
e
_
p
u
t
_
c
o
n
t
e
n
t
s
(
$
f
i
l
e
p
a
t
h
,
$
s
t
r
)
;
}
e
l
s
e
{
i
f
(
!
f
i
l
e
_
e
x
i
s
t
s
(
$
f
i
l
e
p
a
t
h
)
)
{
i
f
(
!
i
s
_
d
i
r
(
$
d
i
r
)
)
{
m
k
d
i
r
(
$
d
i
r
,
0
7
7
7
,
t
r
u
e
)
;
}
$
t
p
l
=
p
c
_
b
a
s
e
:
:
l
o
a
d
_
s
y
s
_
c
l
a
s
s
(
'
t
e
m
p
l
a
t
e
_
c
a
c
h
e
'
)
;
$
s
t
r
=
$
t
h
i
s
-
>
d
b
-
>
g
e
t
_
o
n
e
(
a
r
r
a
y
(
'
i
d
'
=
>
$
i
d
)
,
'
t
e
m
p
l
a
t
e
'
)
;
$
s
t
r
=
$
t
p
l
-
>
t
e
m
p
l
a
t
e
_
p
a
r
s
e
(
$
s
t
r
[
'
t
e
m
p
l
a
t
e
'
]
)
;
@
f
i
l
e
_
p
u
t
_
c
o
n
t
e
n
t
s
(
$
f
i
l
e
p
a
t
h
,
$
s
t
r
)
;
}
}
r
e
t
u
r
n
$
f
i
l
e
p
a
t
h
;
}
$
b
l
o
c
k
-
>
t
e
m
p
l
a
t
e
_
u
r
l
$
t
p
l
-
>
t
e
m
p
l
a
t
e
_
p
a
r
s
e
$
t
e
m
p
l
a
t
e
$
t
p
l
-
>
t
e
m
p
l
a
t
e
_
p
a
r
s
e
p
h
p
c
m
s
/
l
i
b
s
/
c
l
a
s
s
e
s
/
t
e
m
p
l
a
t
e
_
c
a
c
h
e
.
c
l
a
s
s
.
p
h
p
6
9
行
方
法
主
要
负
责
模
板
解
析
,
但
并
没
看
到
有
什
么
限
制
,
回
到
方
法
变
量
由
传
入
,
可
控
;
但
不
能
直
接
访
问
,
因
为
在
处
理
时
在
前
面
拼
接
了
一
段
,
所
以
,
想
要
利
用
还
需
要
找
到
一
处
包
含
点
在
类
中
处
理
方
法
还
有
一
个
/
*
*
*
解
析
模
板
*
*
@
p
a
r
a
m
$
s
t
r
模
板
内
容
*
@
r
e
t
u
r
n
t
u
r
e
*
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
t
e
m
p
l
a
t
e
_
p
a
r
s
e
(
$
s
t
r
)
{
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
t
e
m
p
l
a
t
e
s
+
(
.
+
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
i
n
c
l
u
d
e
s
+
(
.
+
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
p
h
p
s
+
(
.
+
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
i
f
s
+
(
.
+
?
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
e
l
s
e
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
e
l
s
e
i
f
s
+
(
.
+
?
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
/
i
f
}
/
"
,
"
"
,
$
s
t
r
)
;
/
/
f
o
r
循
环
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
f
o
r
s
+
(
.
+
?
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
/
f
o
r
}
/
"
,
"
"
,
$
s
t
r
)
;
/
/
+
+
-
-
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
+
+
(
.
+
?
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
-
-
(
.
+
?
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
(
.
+
?
)
+
+
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
(
.
+
?
)
-
-
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
l
o
o
p
s
+
(
S
+
)
s
+
(
S
+
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
l
o
o
p
s
+
(
S
+
)
s
+
(
S
+
)
s
+
(
S
+
)
}
/
"
,
"
3
)
{
?
>
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
/
l
o
o
p
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
(
[
a
-
z
A
-
Z
_
x
7
f
-
x
f
f
]
[
a
-
z
A
-
Z
0
-
9
_
x
7
f
-
x
f
f
:
]
*
(
(
[
^
{
}
]
*
)
)
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
$
(
[
a
-
z
A
-
Z
_
x
7
f
-
x
f
f
]
[
a
-
z
A
-
Z
0
-
9
_
x
7
f
-
x
f
f
:
]
*
(
(
[
^
{
}
]
*
)
)
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
(
$
[
a
-
z
A
-
Z
_
x
7
f
-
x
f
f
]
[
a
-
z
A
-
Z
0
-
9
_
x
7
f
-
x
f
f
]
*
)
}
/
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
_
c
a
l
l
b
a
c
k
(
"
/
{
(
$
[
a
-
z
A
-
Z
0
-
9
_
[
]
'
"
$
x
7
f
-
x
f
f
]
+
)
}
/
s
"
,
a
r
r
a
y
(
$
t
h
i
s
,
'
a
d
d
q
u
o
t
e
'
)
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
(
"
/
{
(
[
A
-
Z
_
x
7
f
-
x
f
f
]
[
A
-
Z
0
-
9
_
x
7
f
-
x
f
f
]
*
)
}
/
s
"
,
"
"
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
_
c
a
l
l
b
a
c
k
(
"
/
{
p
c
:
(
w
+
)
s
+
(
[
^
}
]
+
)
}
/
i
"
,
a
r
r
a
y
(
$
t
h
i
s
,
'
p
c
_
t
a
g
_
c
a
l
l
b
a
c
k
'
)
,
$
s
t
r
)
;
$
s
t
r
=
p
r
e
g
_
r
e
p
l
a
c
e
_
c
a
l
l
b
a
c
k
(
"
/
{
/
p
c
}
/
i
"
,
a
r
r
a
y
(
$
t
h
i
s
,
'
e
n
d
_
p
c
_
t
a
g
'
)
,
$
s
t
r
)
;
$
s
t
r
=
"
"
.
$
s
t
r
;
r
e
t
u
r
n
$
s
t
r
;
}
$
t
p
l
-
>
t
e
m
p
l
a
t
e
_
p
a
r
s
e
$
b
l
o
c
k
-
>
t
e
m
p
l
a
t
e
_
u
r
l
p
u
b
l
i
c
f
u
n
c
t
i
o
n
t
e
m
p
l
a
t
e
_
u
r
l
(
$
i
d
,
$
t
e
m
p
l
a
t
e
=
'
'
)
{
$
f
i
l
e
p
a
t
h
=
C
A
C
H
E
_
P
A
T
H
.
'
c
a
c
h
e
s
_
t
e
m
p
l
a
t
e
'
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
'
b
l
o
c
k
'
.
D
I
R
E
C
T
O
R
Y
_
S
E
P
A
R
A
T
O
R
.
$
i
d
.
'
.
p
h
p
'
;
$
d
i
r
=
d
i
r
n
a
m
e
(
$
f
i
l
e
p
a
t
h
)
;
i
f
(
$
t
e
m
p
l
a
t
e
)
{
i
f
(
!
i
s
_
d
i
r
(
$
d
i
r
)
)
{
m
k
d
i
r
(
$
d
i
r
,
0
7
7
7
,
t
r
u
e
)
;
}
$
t
p
l
=
p
c
_
b
a
s
e
:
:
l
o
a
d
_
s
y
s
_
c
l
a
s
s
(
'
t
e
m
p
l
a
t
e
_
c
a
c
h
e
'
)
;
$
s
t
r
=
$
t
p
l
-
>
t
e
m
p
l
a
t
e
_
p
a
r
s
e
(
n
e
w
_
s
t
r
i
p
s
l
a
s
h
e
s
(
$
t
e
m
p
l
a
t
e
)
)
;
@
f
i
l
e
_
p
u
t
_
c
o
n
t
e
n
t
s
(
$
f
i
l
e
p
a
t
h
,
$
s
t
r
)
;
.
.
.
.
.
.
}
$
t
e
m
p
l
a
t
e
p
o
s
t
$
f
i
l
e
p
a
t
h
$
t
p
l
-
>
t
e
m
p
l
a
t
e
_
p
a
r
s
e
$
t
e
m
p
l
a
t
e
<
?
p
h
p
d
e
f
i
n
e
d
(
'
I
N
_
P
H
P
C
M
S
'
)
o
r
e
x
i
t
(
'
N
o
p
e
r
m
i
s
s
i
o
n
r
e
s
o
u
r
c
e
s
.
'
)
;
?
>
b
l
o
c
k
_
t
a
g
t
e
m
p
l
a
t
e
_
u
r
l
p
c
_
t
a
g
注
意
那
句
,
妥
妥
的
包
含
点
啊
接
下
来
再
找
找
哪
里
调
用
了
该
方
法
就
好
了
全
局
搜
索
发
现
在
文
件
中
调
用
了
该
方
法
,
但
这
个
文
件
也
不
能
直
接
访
问
,
看
路
径
感
觉
像
缓
存
文
件
,
尝
试
跟
进
到
模
块
的
方
法
可
算
找
到
了
,
返
回
的
结
果
就
是
漏
洞
复
现
漏
洞
复
现
复
现
条
件
:
登
录
后
台
调
用
需
要
传
入
,
所
以
先
插
入
一
条
数
据
来
获
取
,
构
造
数
据
包
如
下
插
入
成
功
如
下
图
:
/
*
*
*
P
C
标
签
中
调
用
数
据
*
@
p
a
r
a
m
a
r
r
a
y
$
d
a
t
a
配
置
数
据
*
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
p
c
_
t
a
g
(
$
d
a
t
a
)
{
$
s
i
t
e
i
d
=
i
s
s
e
t
(
$
d
a
t
a
[
'
s
i
t
e
i
d
'
]
)
&
&
i
n
t
v
a
l
(
$
d
a
t
a
[
'
s
i
t
e
i
d
'
]
)
?
i
n
t
v
a
l
(
$
d
a
t
a
[
'
s
i
t
e
i
d
'
]
)
:
g
e
t
_
s
i
t
e
i
d
(
)
;
$
r
=
$
t
h
i
s
-
>
d
b
-
>
s
e
l
e
c
t
(
a
r
r
a
y
(
'
p
o
s
'
=
>
$
d
a
t
a
[
'
p
o
s
'
]
,
'
s
i
t
e
i
d
'
=
>
$
s
i
t
e
i
d
)
)
;
$
s
t
r
=
'
'
;
i
f
(
!
e
m
p
t
y
(
$
r
)
&
&
i
s
_
a
r
r
a
y
(
$
r
)
)
f
o
r
e
a
c
h
(
$
r
a
s
$
v
)
{
i
f
(
d
e
f
i
n
e
d
(
'
I
N
_
A
D
M
I
N
'
)
&
&
!
d
e
f
i
n
e
d
(
'
H
T
M
L
'
)
)
$
s
t
r
.
=
'
'
;
i
f
(
$
v
[
'
t
y
p
e
'
]
=
=
'
2
'
)
{
e
x
t
r
a
c
t
(
$
v
,
E
X
T
R
_
O
V
E
R
W
R
I
T
E
)
;
$
d
a
t
a
=
s
t
r
i
n
g
2
a
r
r
a
y
(
$
d
a
t
a
)
;
i
f
(
!
d
e
f
i
n
e
d
(
'
H
T
M
L
'
)
)
{
o
b
_
s
t
a
r
t
(
)
;
i
n
c
l
u
d
e
$
t
h
i
s
-
>
t
e
m
p
l
a
t
e
_
u
r
l
(
$
i
d
)
;
$
s
t
r
.
=
o
b
_
g
e
t
_
c
o
n
t
e
n
t
s
(
)
;
o
b
_
c
l
e
a
n
(
)
;
}
e
l
s
e
{
i
n
c
l
u
d
e
$
t
h
i
s
-
>
t
e
m
p
l
a
t
e
_
u
r
l
(
$
i
d
)
;
}
}
e
l
s
e
{
$
s
t
r
.
=
$
v
[
'
d
a
t
a
'
]
;
}
i
f
(
d
e
f
i
n
e
d
(
'
I
N
_
A
D
M
I
N
'
)
&
&
!
d
e
f
i
n
e
d
(
'
H
T
M
L
'
)
)
$
s
t
r
.
=
'
'
;
}
r
e
t
u
r
n
$
s
t
r
;
}
i
n
c
l
u
d
e
$
t
h
i
s
-
>
t
e
m
p
l
a
t
e
_
u
r
l
(
$
i
d
)
;
-
>
p
c
_
t
a
g
(
c
a
c
h
e
s
/
c
a
c
h
e
_
t
e
m
p
l
a
t
e
/
d
e
f
a
u
l
t
/
l
i
n
k
/
r
e
g
i
s
t
e
r
.
p
h
p
l
i
n
k
r
e
g
i
s
t
e
r
/
*
*
*
申
请
友
情
链
接
*
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
r
e
g
i
s
t
e
r
(
)
{
.
.
.
.
.
.
.
.
.
i
n
c
l
u
d
e
t
e
m
p
l
a
t
e
(
'
l
i
n
k
'
,
'
r
e
g
i
s
t
e
r
'
)
;
}
}
t
e
m
p
l
a
t
e
(
'
l
i
n
k
'
,
'
r
e
g
i
s
t
e
r
'
)
c
a
c
h
e
s
/
c
a
c
h
e
_
t
e
m
p
l
a
t
e
/
d
e
f
a
u
l
t
/
l
i
n
k
/
r
e
g
i
s
t
e
r
.
p
h
p
b
l
o
c
k
_
u
p
d
a
t
e
i
d
i
d
U
R
L
:
h
t
t
p
:
/
/
1
9
2
.
1
6
8
.
0
.
1
/
p
h
p
c
m
s
/
i
n
d
e
x
.
p
h
p
?
m
=
b
l
o
c
k
&
c
=
b
l
o
c
k
_
a
d
m
i
n
&
a
=
a
d
d
&
p
o
s
=
1
&
p
c
_
h
a
s
h
=
g
h
4
3
r
D
P
O
S
T
:
d
o
s
u
b
m
i
t
=
&
n
a
m
e
=
b
b
&
t
y
p
e
=
2
回复
举报
上一个主题
下一个主题
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
!disable!!post_parseurl!
使用Markdown编辑器编辑
使用富文本编辑器编辑
回帖后跳转到最后一页