problemen met cookies
ik heb problemen met een login scriptje, wat ik als opdracht moet maken voor school.
ik heb een login gemaakt met een functie die kijkt of je ingelogd bent of niet
op de ene manier werkt het niet en is het mogelijk oneigenlijk in te loggen bv. door de pagina aan te roepen zonder via de login pagina te gaan ,dus door bv je browswer geschiedenis te gebruiken of door directe aanroep.
Ik heb al op alle denkbare manieren gekeken of de functies onderling de juiste waardes doorgeven ,dit is het geval.
de cookies bestaan gewoon.
Kan iemand de onderstaande code bekijken en kijken of er fouten in zitten
en zo ja welke en/of waarom de ene expresie wel werkt en de andere niet .
Ik zal proberen duidelijk commentaar in te voegen.
*****LOGIN PHP***************
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
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
27
28
29
30
31
32
33
34
35
36
37
38
<?php
//voegt de htmlfunctie libary toe
include_once ("../libarys/html_functions.inc.php");
//voegt libary toe
include_once ("../libarys/login_functions.inc.php");
if (isSet($_POST['login_submit'])&& isSet($_POST['naam'])&&($_POST['naam']!="")&& isSet($_POST['password'])&& ($_POST['password']!=""))
{
setcookie("login",$_POST['naam'],0,"/");
setcookie("pass",$_POST['password'],0,"/");
}
//stelt html header samen
htmlheader("login");
//steldt simpele navigatie samen
navigatie("login","login:cookies","week4","html_functions","login_functions");
echo "<div class=\"oefening\">\n";
if (!isSet($_POST['login_submit']))
{
ShowLoginForm();
}else
{
HandleLoginForm($_POST['naam']);
}
echo "</div>";
//sluit html
htmlfooter();
?>
//voegt de htmlfunctie libary toe
include_once ("../libarys/html_functions.inc.php");
//voegt libary toe
include_once ("../libarys/login_functions.inc.php");
if (isSet($_POST['login_submit'])&& isSet($_POST['naam'])&&($_POST['naam']!="")&& isSet($_POST['password'])&& ($_POST['password']!=""))
{
setcookie("login",$_POST['naam'],0,"/");
setcookie("pass",$_POST['password'],0,"/");
}
//stelt html header samen
htmlheader("login");
//steldt simpele navigatie samen
navigatie("login","login:cookies","week4","html_functions","login_functions");
echo "<div class=\"oefening\">\n";
if (!isSet($_POST['login_submit']))
{
ShowLoginForm();
}else
{
HandleLoginForm($_POST['naam']);
}
echo "</div>";
//sluit html
htmlfooter();
?>
*************BEDANKT.PHP**********************
Code (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
27
28
29
30
31
32
33
34
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
27
28
29
30
31
32
33
34
<?php
//voegt de htmlfunctie libary toe
include_once ("../libarys/html_functions.inc.php");
//voegt de login libary toe
include_once ("../libarys/login_functions.inc.php");
//voegt de shop libary toe
include_once ("../libarys/shop_functions.inc.php");
//stelt html header samen
htmlheader("bedankt");
//steldt simpele navigatie samen
navigatie("bedankt","bedankt","week4","html_functions","login_functions");
echo "<div class=\"oefening\">\n";
$login=check_logged_in();
if ($login)
{
bedankt();
}else
{
echo "binnen";
Error();
}
echo "</div>";
//sluit html
htmlfooter();
?>
//voegt de htmlfunctie libary toe
include_once ("../libarys/html_functions.inc.php");
//voegt de login libary toe
include_once ("../libarys/login_functions.inc.php");
//voegt de shop libary toe
include_once ("../libarys/shop_functions.inc.php");
//stelt html header samen
htmlheader("bedankt");
//steldt simpele navigatie samen
navigatie("bedankt","bedankt","week4","html_functions","login_functions");
echo "<div class=\"oefening\">\n";
$login=check_logged_in();
if ($login)
{
bedankt();
}else
{
echo "binnen";
Error();
}
echo "</div>";
//sluit html
htmlfooter();
?>
*************DE FUNCTIES***************************
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?
//kijkt in de databasefile of de gebruiker bestaat en geeft het bijhorende wachtwoord terug
function getPassword($username)
{
$pass="";
//passwordfile in array zetten
$users=file("login.dat");
for($i=0;$i<count($users);$i++)
{
$gegevens=explode(";",$users[$i]);
if ($username==$gegevens[0])
{
//als usename bestaat wachtwoord terug geven
$pass=$gegevens[1];
return $pass;
}
}
}
function check_logged_in()
{
$correct_pass=getPassword($_COOKIE['login']);
//if (($_COOKIE['pass'])==trim($correct_pass))
//als ik bovenstaande expressie gebruik dan werkt het niet
//een combinatie van ook niet.
//VRAAG:waarom werkt het niet de functie check_logged_in
//werkt corect anders zou het met onderstaande de expressie ook niet werken de functie getPassword werkt ook, anders konden we niet inloggen toch??
if (isSet($_COOKIE['login'])&& (isSet($_COOKIE['pass'])))
{
$login=TRUE;
return $login;
} else
{
$login=FALSE;
return $login;
}
}
?>
//kijkt in de databasefile of de gebruiker bestaat en geeft het bijhorende wachtwoord terug
function getPassword($username)
{
$pass="";
//passwordfile in array zetten
$users=file("login.dat");
for($i=0;$i<count($users);$i++)
{
$gegevens=explode(";",$users[$i]);
if ($username==$gegevens[0])
{
//als usename bestaat wachtwoord terug geven
$pass=$gegevens[1];
return $pass;
}
}
}
function check_logged_in()
{
$correct_pass=getPassword($_COOKIE['login']);
//if (($_COOKIE['pass'])==trim($correct_pass))
//als ik bovenstaande expressie gebruik dan werkt het niet
//een combinatie van ook niet.
//VRAAG:waarom werkt het niet de functie check_logged_in
//werkt corect anders zou het met onderstaande de expressie ook niet werken de functie getPassword werkt ook, anders konden we niet inloggen toch??
if (isSet($_COOKIE['login'])&& (isSet($_COOKIE['pass'])))
{
$login=TRUE;
return $login;
} else
{
$login=FALSE;
return $login;
}
}
?>
ik hoop dat iemand een antwoord heeft .
En oh ja het is simpele code ben nog aan het leren he het .
alvast bedankt
Gewijzigd op 01/01/1970 01:00:00 door Cygio
Er zijn niet veel mensen die zin hebben om een hele strook code door te
spitten om te kijken of er een foutje in zit. Kun je ons vertellen wat er precies fout gaat?
Het is ook niet erg veilig om met cookies te werken. Ten eerste zijn er veel mensen die cookies automatisch blokkeren (zelf ingesteld of standaard optie in firewall / virusscanner). Daarnaast is het ook nog eens makkelijk te traceren en veranderen omdat het opgeslagen wordt op de computer van de gebruiker. Een login systeem kun je daarom het beste maken met sessions.
en waarom gebruik je geen database ??
dat sommige geen zin hebben om zo'n lap telezen begrijp ik eigenlijk wel, maar ik lees hier best wel vaak opmerkingen dat er geen of te weinig code is bijgevoegd, dus vandaar.
over de cookies ben ik het gelijk helemaal met je eens, maar het is een opdracht voor school en we zijn nog niet bij sessies geariveerd, dus vandaar .
Dit geldt trouwens ook voor het niet gebruiken van een database rvw.
Maar goed wat gaat er mis ik zal het ff inkorten:
het gaat om dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
function check_logged_in()
{
$correct_pass=getPassword($_COOKIE['login']);
//if (($_COOKIE['pass'])==trim($correct_pass))
//als ik bovenstaande expressie gebruik dan werkt het niet
//een combinatie van ook niet.
//VRAAG:waarom werkt het niet de functie check_logged_in
//werkt corect anders zou het met onderstaande de expressie ook niet werken de functie getPassword werkt ook, anders konden we niet inloggen toch??
if (isSet($_COOKIE['login'])&& (isSet($_COOKIE['pass'])))
{
$login=TRUE;
return $login;
} else
{
$login=FALSE;
return $login;
}
}
?>
function check_logged_in()
{
$correct_pass=getPassword($_COOKIE['login']);
//if (($_COOKIE['pass'])==trim($correct_pass))
//als ik bovenstaande expressie gebruik dan werkt het niet
//een combinatie van ook niet.
//VRAAG:waarom werkt het niet de functie check_logged_in
//werkt corect anders zou het met onderstaande de expressie ook niet werken de functie getPassword werkt ook, anders konden we niet inloggen toch??
if (isSet($_COOKIE['login'])&& (isSet($_COOKIE['pass'])))
{
$login=TRUE;
return $login;
} else
{
$login=FALSE;
return $login;
}
}
?>
als ik deze functie aanroep moet die true or false geven.
dat werkt als ik deze expressie gebruik.
nu wordt er gekeken of de cookies login & pass bestaan, als ze bestaan dan is het true en anders false.
maar als ik dit gebruik
Code (php)
Dan geeft dat niet het gewenste resultaat, terwijl de cookies bestaan
en de output van getPassword de juiste is(heb ik getest namelijk met test echoos etc)
echo trim(getPassword($_COOKIE['login']));
is exact hetzelfde als
echo $_COOKIE['pass'];
die zijn exact hetzelfde ja ,daarom snap ik er niets meer van .
wat zou het kunnen zijn .