PHP代码语法逻辑
- if(11)绕过后台验证
通过修改源代码的登录逻辑if判断语句登录后台的时候,可以直接设置if(11),这样就直接登录到了后台
2.PHP中,===三个等号的意思是完全相等,不仅数值,类型也得相同
3.PHP中的-> 和=>
PHP中的 ->的含义相当于汉字中的“的”
PHP中的 =>,简单来说就是=>符号来分隔键和值,左侧表示键,右侧表示值。
4.PHP数据查询操作源码解读
$goip=Request::ip();
$map = ['u.is_deleted' => '0', 'u.username' => $data['username'],'a.bip'=>$goip];
$user = Db::name('SystemUser')->alias('u')->field('u.*,a.bip')
->join('system_address a','u.id=a.uid')
->where($map)
->order('u.id desc')
->find();
以上代码是一段PHP程序,主要用于从数据库中查询系统用户信息和地址信息,并将结果存储在
u
s
e
r
变量中。具体解读如下:■首先,使用
R
e
q
u
e
s
t
:
:
i
p
(
)
函数获取当前请求的
I
P
地址,并将其存储在
user变量中。具体解读如下: ■首先,使用Request::ip()函数获取当前请求的IP地址,并将其存储在
user变量中。具体解读如下:■首先,使用Request::ip()函数获取当前请求的IP地址,并将其存储在goip变量中。
■使用
m
a
p
数组指定查询条件,其
中
′
u
.
i
s
d
e
l
e
t
e
d
′
=
>
′
0
′
表示查询未删除的用户
,
′
u
.
u
s
e
r
n
a
m
e
′
=
>
d
a
t
a
[
′
u
s
e
r
n
a
m
e
′
]
表示查询用户名为
d
a
t
a
[
′
u
s
e
r
n
a
m
e
′
]
的用户
,
′
a
.
b
i
p
′
=
>
g
o
i
p
表示查询地址信息中的
b
服务器托管
i
服务器托管
p
字段等于
g
o
i
p
的记录。■使用
D
b
:
:
n
a
m
e
(
′
S
y
s
t
e
m
U
s
e
r
′
)
函数指定要查询的数据表为
S
y
s
t
e
m
U
s
e
r
,并使用
a
l
i
a
s
(
′
u
′
)
函数给数据表起一个别名
u
。■使用
f
i
e
l
d
(
′
u
.
∗
,
a
.
b
i
p
′
)
函数指定要查询的字段,其中
u
.
∗
表示查询
S
y
s
t
e
m
U
s
e
r
表中的所有字段,
a
.
b
i
p
表示查询
s
y
s
t
e
m
a
d
d
r
e
s
s
表中的
b
i
p
字段。■使用
j
o
i
n
(
′
s
y
s
t
e
m
a
d
d
r
e
s
s
a
′
,
′
u
.
i
d
=
a
.
u
i
d
′
)
函数将
S
y
s
t
e
m
U
s
e
r
表和
s
y
s
t
e
m
a
d
d
r
e
s
s
表进行连接,其中
a
是
s
y
s
t
e
m
a
d
d
r
e
s
s
表的别名,
u
.
i
d
=
a
.
u
i
d
表示连接条件为
S
y
s
t
e
m
U
s
e
r
表的
i
d
字段等于
s
y
s
t
e
m
a
d
d
r
e
s
s
表的
u
i
d
字段。■使用
w
h
e
r
e
(
m
a
p
)
函数指定查询条件,其中
m
a
p
是一个数组,包含了查询条件的键值对。■使用
o
r
d
e
r
(
′
u
.
i
d
d
e
s
c
′
)
函数指定查询结果按照
S
y
s
t
e
m
U
s
e
r
表的
i
d
字段降序排列。■最后,使用
f
i
n
d
(
)
函数执行查询操作,并将结果存储在
map数组指定查询条件,其中 ‘u.is_deleted’ => ‘0’表示查询未删除的用户, ‘u.username’ => data[‘username’]表示查询用户名为data[‘username’]的用户, ‘a.bip’=>goip表示查询地址信息中的bip字段等于goip的记录。 ■使用Db::name(‘SystemUser’)函数指定要查询的数据表为SystemUser,并使用alias(‘u’)函数给数据表起一个别名u。 ■使用field(‘u.*,a.bip’)函数指定要查询的字段,其中u.*表示查询SystemUser表中的所有字段,a.bip表示查询system_address表中的bip字段。 ■使用join(‘system_address a’,’u.id=a.uid’)函数将SystemUser表和system_address表进行连接,其中a是system_address表的别名,u.id=a.uid表示连接条件为SystemUser表的id字段等于system_address表的uid字段。 ■使用where(map)函数指定查询条件,其中map是一个数组,包含了查询条件的键值对。 ■使用order(‘u.id desc’)函数指定查询结果按照SystemUser表的id字段降序排列。 ■最后,使用find()函数执行查询操作,并将结果存储在
map数组指定查询条件,其中′u.isdeleted′=>′0′表示查询未删除的用户,′u.username′=>data[′username′]表示查询用户名为data[′username′]的用户,′a.bip′=>goip表示查询地址信息中的bip字段等于goip的记录。■使用Db::name(′SystemUser′)函数指定要查询的数据表为SystemUser,并使用alias(′u′)函数给数据表起一个别名u。■使用field(′u.∗,a.bip′)函数指定要查询的字段,其中u.∗表示查询SystemUser表中的所有字段,a.bip表示查询systemaddress表中的bip字段。■使用join(′systemaddressa′,′u.id=a.uid′)函数将SystemUser表和systemaddress表进行连接,其中a是systemaddress表的别名,u.id=a.uid表示连接条件为SystemUser表的id字段等于systemaddress表的uid字段。■使用where(map)函数指定查询条件,其中map是一个数组,包含了查询条件的键值对。■使用order(′u.iddesc′)函数指定查询结果按照SystemUser表的id字段降序排列。■最后,使用find()函数执行查询操作,并将结果存储在user变量中。find()函数返回的是一个关联数组,包含了查询结果的所有字段和对应的值。
该段代码指定了登录的IP,IP不正确,则弹出登录账号或密码错误,请重新输入!
修改system_address表中相应的IP地址,则可以绕过IP验证
5.PHP代码中搜索函数的技巧
在PHP代码中通过搜索定位某函数定义的位置时,可以通过function + 函数名的方式直接定位,比如我要搜索函数md5WithSalt的定位位置,可以直接搜索“function md5WithSalt”,这样就直接定位到了函数定义的位置,如下:
20.关于PHP中变量插值的说明
问:以上PHP代码,请解释一下{KaTeX parse error: Expected ‘EOF’, got ‘}’ at position 17: …ser[‘password’]}{data[‘uniqid’]}这句话什么意思
答:这句话是PHP语言中的字符串拼接语句,它的意思是将user数组中的password元素和data数组中的uniqid元素拼接在一起,形成一个新的字符串。在PHP中,使用花括号{}来包含变量名可以将变量的值插入到字符串中,这种语法称为变量插值。因此,这句话的实际效果是将user数组中的password和data数组中的uniqid拼接在一起,形成一个新的字符串。
问:解释PHP语句md5(“{KaTeX parse error: Expected ‘EOF’, got ‘}’ at position 17: …ser[‘password’]}{data[‘uniqid’]}”)
答:这句PHP语句使用了md5哈希算法对字符串 “{user[‘password’]}{data[‘uniqid’]}” 进行加密。在这个字符串中,使用了变量插值的语法,将user数组中的password元素和data数组中的uniqid元素拼接在一起。然后,使用md5函数对这个字符串进行哈希加密,生成一个32位的十六进制字符串作为加密结果。
问:PHP中字符串拼接不是需要用点.吗,为什么这里没用
答:在PHP中,字符串拼接可以使用点.操作符,也可以使用花括号{}来包含变量名进行变量插值。在这个例子中,使用了花括号{}来包含变量名进行变量插值,而不是使用点.操作符进行字符串拼接。这是因为使用花括号{}进行变量插值可以使代码更加简洁和易读,特别是在需要拼接多个变量时。同时,使用花括号{}进行变量插值还可以避免一些语法错误,例如在字符串中包含特殊字符时需要使用转义符号进行转义,而使用花括号{}进行变量插值则不需要进行转义。因此,在PHP中,使用花括号{}进行变量插值是一种常见的字符串拼接方式。
让我们逐步分解这段代码:
t
h
i
s
是一个指向当前对象的伪变量,通常用于在类的方法中访问类的属性和方法。
−
>
是用于访问对象属性和方法的操作符。
m
e
s
s
a
g
e
是一个对象属性或数组,其中包含了一些消息或信息。
[
′
p
a
s
s
w
o
r
d
.
p
a
s
s
w
o
r
d
′
]
是用于访问
m
e
s
s
a
g
e
属性或数组中的
p
a
s
s
w
o
r
d
.
p
a
s
s
w
o
r
d
元素。
.
=
是字符串连接运算符,用于将右侧的字符串追加到左侧的字符串上
。
′
:
多次输入错
误
′
是要追加到
this 是一个指向当前对象的伪变量,通常用于在类的方法中访问类的属性和方法。 -> 是用于访问对象属性和方法的操作符。 message 是一个对象属性或数组,其中包含了一些消息或信息。 [‘password.password’] 是用于访问message属性或数组中的password.password元素。 .= 是字符串连接运算符,用于将右侧的字符串追加到左侧的字符串上。 ‘:多次输入错误’ 是要追加到
this是一个指向当前对象的伪变量,通常用于在类的方法中访问类的属性和方法。−>是用于访问对象属性和方法的操作符。message是一个对象属性或数组,其中包含了一些消息或信息。[′password.password′]是用于访问message属性或数组中的password.password元素。.=是字符串连接运算符,用于将右侧的字符串追加到左侧的字符串上。′:多次输入错误′是要追加到this->message[‘password.password’]的字符串。
综合起来,这段代码的作用是将”:多次输入错误”这个字符串追加到$this->message[‘password.password’]变量所代表的消息文本中。可能是在某个验证过程中,当密码多次输入错误时,将错误信息添加到特定的消息变量中以供后续使用。
类似的用法有 += -= *=
例如
function create_password($plaintext, $salt)
{
$salt = md5('y' . $salt . 'x');
$salt .= '2020';
return md5($plaintext . $salt);
}
其中
s
a
l
t
.
=
′
202
0
′
;
语句,将
s
a
l
t
变量原始的值和
2020
进行拼接,然后再把结果保存会
salt .= ‘2020’;语句,将salt变量原始的值和2020进行拼接,然后再把结果保存会
salt.=′2020′;语句,将salt变量原始的值和2020进行拼接,然后再把结果保存会salt变量中
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 《Linux》day3–docker——docker镜像与容器
文章目录 1.将当前用户添加到docker用户组 2.docker鏡像(images) 3.docker容器(container) 4.实战 1.将当前用户添加到docker用户组 因为使用docker必须要有sudo权限,为了避免我们每次都要输入sudo,我…