检查用户名登录中的域前缀


Check for domain prefix in username login

如何在字符串中检查"AD'" ?如果有人试图使用域前缀"AD'"登录-我希望应用程序忽略"AD'"并检查前3个字符之后的用户名。

I have try:

if (strpos($username, "AD''") !== false) {
    $username = substr($username, 3);
}

if (strpos($username, "AD''") !== false) {

检查AD'任意字符串中的出现情况。因此,AD'ABC为真,ABC'AD'ABC也为真。

你可能需要的是使用

if (strpos($username, "AD''") === 0) {

要知道用户名AD'开始。请注意,我们使用===运算符来测试strpos的返回值,因为如果没有找到AD',则返回false

编辑:但是请注意与

if (strpos($username, "AD''") === 0) {
   $username = substr($username, 3);
}

用户也可以输入AD'AD'ABC,最终结果将是AD'ABC。您可能想这样做:

while(strpos($username, "AD''") === 0) {
    $username = substr($username, 3);
}

确保用户名不能以AD'

开头

http://codepad.viper - 7. - com/uwc8or

你需要仔细检查你得到的是字符串的一部分,它必须在字符串的开头。

if (strpos($a,"AD''") !== false)
    if (strpos($a,"AD''") == 0)  
              echo substr($a,3);

另一个解决方案是使用正则表达式

问题是'被认为是转义序列。因此,对于字符串使用'而不是'。

此外,将strpos的返回值与false进行比较是有效的,因为false被定义为0,但strpos实际上返回的是一个数值(出现的字符/字符串的位置)。我强烈建议在这里使用数值比较,而不是布尔值。

:

$username = 'AD'testuser';
if (strpos($username, "AD") <= 0) {
    $username = substr($username, strpos($username, "AD")+3);
    print $username;
}
else {
    print $username;
}

您可以通过将其p到http://phptester.net/

进行测试

有关反斜杠的更多信息,请参见:如何在PHP中创建带有反斜杠的字符串?