Make sense, I haven't ever realizad how old the code appears like when it haves a break. Fell like C. Livin' n' learnin'. Thanks! Enviado por Samsung Mobile Bálint Horváth <hbalint@xxxxxxxxx> escreveu: "As a Oo developer, a run away from using switch" - I don't understand this: OOP and switch could be good together and I also prefer switch eg. at action or page selection... break is an old stuff and not a nice solution (like "goto")... killing a procedure!? -means wrong planning of an app! (and jumping in the code with goto also like this) On Tue, Oct 2, 2012 at 12:11 PM, Rodrigo Silva dos Santos <rodrigos.santos01@xxxxxxxxx> wrote: Better solution than mine (that don't even make a code) As a Oo developer, a run away from using switch, so I should never use break too... Good to know. By the way, what's the problem with it? Enviado por Samsung Mobile Bálint Horváth <hbalint@xxxxxxxxx> escreveu: The problem was already solved. I forgot to send a copy to the list... Rodrigo, break!? Ohh man, it's a crazy idea... A developer DOES NOT use break at all (in a loop)... (switch is an exception) In the other hand Thomas, you should use while and count the lines and u need to test if username found... Yeah, this script is near to the good solution: <?php session_start(); $users = file("users.inc.php"); if (!empty($_POST['username']) && !empty($_POST['password'])) { if (filter_var($_POST['username'], FILTER_VALIDATE_EMAIL)) { $ui = 0; while ($ui < count($users) && $error != "0") { $user = explode(' ', trim($users[$ui])); if ($_POST['username'] == $user[1]) { $_SESSION['logged_in'] = 1; $_SESSION['username'] = $user[1]; $error = "0"; } else{ $error = "2"; } $ui++; } } else { $error = "4"; } } else { $error = "3"; } if ($error == "0") { print("redirecting"); } else { print("error: " . $error); } ?> On Tue, Oct 2, 2012 at 8:52 AM, Thomas Conrad <koopasforever@xxxxxxxxx>wrote: > I'm currently learning php and as a challenge, I'm creating a login > script using text files to store the information (until I learn how to > handle databases with php). > The problem I'm having is the if statement in my while loop is only > evaluated on the last iteration of the while loop, so its only > comparing the last username in the file and no others. > > Heres the code: > > <?php > session_start(); > > $users = file("../inc/users.inc.php"); > > if($_POST['username'] && $_POST['password']){ > > if(ereg("^[^@ ]+@[^@ ]+\.[^@ \.]+$", > $_POST['username'])){ > > > while(list($id ,$username) = each($users)){ > if($_POST['username'] == > $username){ > $_SESSION['logged_in'] = 1; > $_SESSION['username'] = > $username; > > } > } > if($_SESSION['logged_in'] != 1){ > $error = "2"; > } > }else{ > $error = "4"; > } > }else{ > $error = "3"; > } > > if($error){ > header("Location: > http://koopasforever.com/scripts/login.php?error=$error"); > }else{ > header("Location: http://koopasforever.com/"); > } > > > ?> > > I have checked all my variables and they all contain the proper information > > Some help would be greatly appriciated, Thanks > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > >