开发者

validating a string in php if only substring is true

How to validate a substring is true in PHP for example if user1 is in the string it should be true?

textfile:

user1 : pass1

user2 : pass2

user3 : 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");开发者_高级运维
}


I would advice against this kind of authentication system as is prone to errors or abuse. Use other system like ACL or database user/password hash check.


As those above have said, this is not a good approach as far as user authentication goes. If you want something basic, look at using HTTP Authentication or something at least.

That said, you can do what you have asked using PHP's file function, e.g.

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';
}

Note that this assumes each line is of the form "username:password" with nothing else; you may need to adjust exactly how you match your lines depending on your format. An example file which would be validated by this would have a line such as

foo:bar


If you are using this for authentication; for the sake of your users consider a different (more secure) approach. By the way the reply to the OP is correct that just about nothing in that PHP code would work as appears to be intended.

However, if the idea is to use the value of an array by key $arr['key'] to look up configuration settings that need not be protected (for the world to see, basically) you can use the parse_ini_file() and friends. Again: this is not a good idea for truly sensitive data.

EDIT: Also, it is probably a good idea to use the PHP_EOL constant for end-of-line characters rather than assuming "\r\n".

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜