Probleem
Ik zit momenteel met een klein php probleempje, waar ik niet helemaal uit kom. Ik heb een simpel inlogscript gemaakt gebaseerd op een list.txt lijst met naam/wachtwoord en cookies.
Het inloggen gebeurt met een simpel formulier, waarna deze 'action.php' wordt aangeroepen. Deze zoekt in list.txt een naam/wachtwoord, wanneer deze is gevonden wordt er een cookie aangemaakt en kun je naar de secure pagina's komen.
Wanneer je een foute naam/wachtwoord combinatie invult, krijg je een echo met 'Log-in failed!'. Echter wil ik dit stukje vervangen door een nieuwe pagina. ( header("Location: login.php?=failed"); ) Wanneer ik dat op deze plek zet, gaat hij altijd naar de login.php?=failed pagina. Ook wanneer je een correct wachtwooord invult, wel wordt er een cookie aangemaakt en kun je op de secure pagina komen. Hij slaat de eerste 'header location' over en gaat dus niet automatisch naar de goede secure pagina.
Ik zit dus te worstelen hoe ik een 'else' kan inbouwen zodat hij alleen met een foute combinatie naar de login.php?=failed pagina gaat. En niet zoals nu... altijd. Ook al is je wachtwoord goed of fout.
Dit is deels gelukt, maar dan werkt het alleen met een gebruikersnaam/wachtwoord die onderin in de list.txt staat. Gebruikersnaam/wachtwoord combinaties bovenin de list.txt maken wel een cookie aan, maar zorgen ervoor dat je altijd naar de login.php?=failed pagina gaat.
list.txt
Foute/niet werkende oplossing (uitleg hieronder)
^^ Werkt alleen user2 met inloggen/redirecten naar de secure page. User1 maakt wel een cookie aan, maar redirect niet goed naar de secure pagina, en gaat naar de 'failed' pagina.
Ik hoop dat jullie mijn probleem een beetje begrijpen, anders leg ik het graag nog eens uit.
Ik zit momenteel met een klein php probleempje, waar ik niet helemaal uit kom. Ik heb een simpel inlogscript gemaakt gebaseerd op een list.txt lijst met naam/wachtwoord en cookies.
Het inloggen gebeurt met een simpel formulier, waarna deze 'action.php' wordt aangeroepen. Deze zoekt in list.txt een naam/wachtwoord, wanneer deze is gevonden wordt er een cookie aangemaakt en kun je naar de secure pagina's komen.
Wanneer je een foute naam/wachtwoord combinatie invult, krijg je een echo met 'Log-in failed!'. Echter wil ik dit stukje vervangen door een nieuwe pagina. ( header("Location: login.php?=failed"); ) Wanneer ik dat op deze plek zet, gaat hij altijd naar de login.php?=failed pagina. Ook wanneer je een correct wachtwooord invult, wel wordt er een cookie aangemaakt en kun je op de secure pagina komen. Hij slaat de eerste 'header location' over en gaat dus niet automatisch naar de goede secure pagina.
Ik zit dus te worstelen hoe ik een 'else' kan inbouwen zodat hij alleen met een foute combinatie naar de login.php?=failed pagina gaat. En niet zoals nu... altijd. Ook al is je wachtwoord goed of fout.
Dit is deels gelukt, maar dan werkt het alleen met een gebruikersnaam/wachtwoord die onderin in de list.txt staat. Gebruikersnaam/wachtwoord combinaties bovenin de list.txt maken wel een cookie aan, maar zorgen ervoor dat je altijd naar de login.php?=failed pagina gaat.
list.txt
code:
1
2
3
| user1||pass1|| user2||pass2|| enz... |
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <?php if ($_SERVER['REQUEST_METHOD']=="POST"){ $Logi = file("users/list.txt"); co $size = sizeof($Logi); foreach($Logi as $Key => $Val) { $Data[$Key] = explode("||", $Val); } for($K = 0; $K<$size; $K++) { $user = $Data[$K][0]; $pass = $Data[$K][1]; if ($user == trim(addslashes($_POST["user"])) && $pass == trim(addslashes($_POST["pass"])) ) { setcookie("id", 1, time()+3600); header("Location: welcome_secure.php"); } } echo "Log-in failed!"; } ?> |
Foute/niet werkende oplossing (uitleg hieronder)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <?php if ($_SERVER['REQUEST_METHOD']=="POST"){ $Logi = file("users/list.txt"); $size = sizeof($Logi); foreach($Logi as $Key => $Val) { $Data[$Key] = explode("||", $Val); } for($K = 0; $K<$size; $K++) { $user = $Data[$K][0]; $pass = $Data[$K][1]; if ($user == trim(addslashes($_POST["user"])) && $pass == trim(addslashes($_POST["pass"])) ) { setcookie("id", 1, time()+3600); header("Location: welcome_secure.php"); }else{ header("Location: login.php?=failed"); } } } ?> |
^^ Werkt alleen user2 met inloggen/redirecten naar de secure page. User1 maakt wel een cookie aan, maar redirect niet goed naar de secure pagina, en gaat naar de 'failed' pagina.
Ik hoop dat jullie mijn probleem een beetje begrijpen, anders leg ik het graag nog eens uit.