Re: problem with my login script
| From: | Bálint Horváth | Date: | Tue, 02 Oct 2012 10:23:25 +0000 |
| Subject: | Re: problem with my login script | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-319327@lists.php.net to get a copy of this message | ||
"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@gmail.com> 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@gmail.com> 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@gmail.com
> >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
> >
> >
>