任务是确定必须满足条件strpos( $key, 'R_4r3@')!== FALSE
并同时满足正则表达式条件/^-?[a-z0-9]+$/m
并输出成功作为输出的键字符串。
问题源代码:
<?php
$key=$_POST['key'];
if (strpos( $key, 'R_4r3@')!== FALSE){
if (!preg_match('/^-?[a-z0-9]+$/m', $key)) {
die('ILLEGAL CHARACTERS');
}
echo 'success';
} else {
echo 'Wrong Password';
} ?>
尝试解决方案:
-?
表示密钥在密钥开头可以包含-
0或1次。
[a-z0-9]+
所有小写字母和数字出现1次或多次。
在前一种情况下确定的$
元素应该是最后一个元素。
可能需要逃避条件,但不知道如何进行。
答案 0 :(得分:2)
键-a2c\nR_4r3@
解决了您的问题。
strpos
返回TRUE,因为密钥中存在R_4r3@
preg_match
返回TRUE,因为第一行仅包含字母数字$key = "-a2c\nR_4r3@";
if (strpos( $key, 'R_4r3@')!== FALSE){
if (!preg_match('/^-?[a-z0-9]+$/m', $key)) {
die('ILLEGAL CHARACTERS');
}
echo 'success';
} else {
echo 'Wrong Password';
}
输出:
success