i think the problem isn't only your 'return false' but also your 'return true' in your first loop through your foreach will definetly a 'return' be passed. and return means return a value AND stop the function. not?
try it this way: foreach ($groups as $value) { if(!isset($this->user['groups'][$value]) || !$this->user['groups'][$value]) { return false; } } return true; ciao SVEN SævË Ölêöyp wrote: > I'm making an authentication script with groups and roles. This > function checks if the groups the user belongs to specified groups > and compares them to the groups required. However, since this is a > loop, the function doesn't return true or false as expected. If I > call the function and require 3 groups, and the user belongs to only > one of them, he is still accepted. Is this method right thinking? > Should I make the function stop somehow when it returns false for the > first time? All suggestions and comments are appreciated. Thanks. > > This is the function: > > function require_groups() { > if (!isset($this->user['groups'])) { > $this->user['groups'] = > $this->get_user_groups($this->id); > } > $groups = func_get_args(); > foreach ($groups as $value) { > if > (!isset($this->user['groups'][$value]) || > !$this->user['groups'][$value]) { > return false; > } > else{ > return true; > } > } > } > > And I call it like this: require_groups("admins", > "moderators","members"); > This returns true. > > Kveðja, > Sævar Öfjörð > [EMAIL PROTECTED] > þetta reddast - hönnunarlausnir > > <file:///C:\Documents%20and%20Settings\S%E6var\Application%20Data\Micros > oft\Signatures\www.reddast.is> www.reddast.is -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php