如何验证子字符串在PHP中是真实的,例如,如果user1在字符串中,它应该是true?验证在PHP中的字符串,如果只有子字符串为真
文本文件:
USER1:PASS1
用户2:PASS2
用户3:PASS3
if(in_array($_SERVER['user1'] . "\r\n", $textfile)){ //not the way want this to be true
printf("Ok user1 is in this row somewhere");
}
如何验证子字符串在PHP中是真实的,例如,如果user1在字符串中,它应该是true?验证在PHP中的字符串,如果只有子字符串为真
文本文件:
USER1:PASS1
用户2:PASS2
用户3:PASS3
if(in_array($_SERVER['user1'] . "\r\n", $textfile)){ //not the way want this to be true
printf("Ok user1 is in this row somewhere");
}
我会建议对这种认证系统作为容易出现错误或滥用。使用其他系统,如ACL或数据库用户/密码散列检查。
如果您使用此进行身份验证;为了您的用户考虑采用不同(更安全)的方法。顺便说一下,对OP的回复是正确的,该PHP代码中的任何内容都不会像预期的那样工作。但是,如果想通过键$ arr ['key']使用数组的值来查找不需要保护的配置设置(基本上让世界看到),那么可以使用parse_ini_file () 和朋友。再次说明:对于真正敏感的数据来说这不是一个好主意。
编辑:此外,它可能是一个好主意,使用PHP_EOL常量为结束行字符,而不是假设“\ r \ n”。
正如上面所说的,就用户身份验证而言,这不是一个好方法。如果你想要一些基本的东西,至少使用HTTP Authentication或其他东西。
也就是说,您可以使用PHP's file function进行询问,例如,
function validUser($file, $user, $pass) {
// Check file exists
if (!is_file($file)) {
return FALSE;
}
// Read file
$lines = file($file);
if ($lines === FALSE) {
return FALSE;
}
// Go over the lines and check each one
foreach ($lines as $line) {
list($fuser, $fpass) = explode(':', trim($line));
if ($user == $fuser && $pass == $fpass) {
return TRUE;
}
}
// No user found
return FALSE;
}
if (validUser('passwords.txt', 'foo', 'bar')) {
echo 'The user was found';
}
请注意,这假定每行都是“username:password”形式,没有其他任何内容;您可能需要根据您的格式准确调整您的线条。一个示例文件将通过此验证将有一条线如
foo:bar
认真看看手册。我不介意初学者的问题,但这段代码是* so * wrong我不相信你会付出任何努力。 – 2010-04-06 14:42:19
@coronatus任何编程问题都是有效的,并且没有用于身份验证方法的php手动条目。 – 2010-04-06 14:50:00
为什么在用户名后面加入换行符?我没有在文本文件中看到它们。你可以做一个print_r($ textfile)吗?另外,用户名是$ _SERVER ['user1']的键或值吗? – webbiedave 2010-04-06 14:54:16