Session werkt niet?
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
if(isset($_SESSION["login"]))
{
echo "<h3>Welkom op deze beveiligde pagina!</h3>
Je bent aangemeld als: " .$_SESSION["email"]."<br />
Je wachtwoord is: " .$_SESSION["wachtwoord"]."
<p>
Een link naar een <a href=beveiligd2.php>andere</a> beveligde pagina
</p>
<a href=logout.php>Uitloggen</a>";
}
else
{
echo "<h3>Je bent nog niet ingelogd.</h3>
Je kunt <a href=login.html>hier</a> inloggen, <br/>
of <a href=register.php>hier</a> registreren.";
}
En hier maakt hij eerst de session aan:
[code]<?php
session_start();
if(isset($_POST["inloggen"]))
{
$email = $_POST["email"];
$wachtwoord = $_POST["wachtwoord"];
include "dbconfig.php";
$query = "SELECT * FROM gebruikers
WHERE email='$email'
AND wachtwoord='$wachtwoord'";
$result = mysql_query($query, $connect)
or die(mysql_error());
if (mysql_num_rows($result) > 0)
{
$_SESSION["login"] = true;
$_SESSION["email"] = $email;
$_SESSION["wachtwoord"] = $wachtwoord;
header ("location: beveiligd.php");
}
else
{
die("Je hebt geen geldige combinatien van email en wachtwoord gebruikt.
Maak een keuze: <br />
<a href=login.html>Opnieuw inloggen</a><br />
<a href=register.php>Hier registreren</a>");
}
}
else
{
header ("location: login.html");
}
?>
if(isset($_SESSION["login"]))
{
echo "<h3>Welkom op deze beveiligde pagina!</h3>
Je bent aangemeld als: " .$_SESSION["email"]."<br />
Je wachtwoord is: " .$_SESSION["wachtwoord"]."
<p>
Een link naar een <a href=beveiligd2.php>andere</a> beveligde pagina
</p>
<a href=logout.php>Uitloggen</a>";
}
else
{
echo "<h3>Je bent nog niet ingelogd.</h3>
Je kunt <a href=login.html>hier</a> inloggen, <br/>
of <a href=register.php>hier</a> registreren.";
}
En hier maakt hij eerst de session aan:
[code]<?php
session_start();
if(isset($_POST["inloggen"]))
{
$email = $_POST["email"];
$wachtwoord = $_POST["wachtwoord"];
include "dbconfig.php";
$query = "SELECT * FROM gebruikers
WHERE email='$email'
AND wachtwoord='$wachtwoord'";
$result = mysql_query($query, $connect)
or die(mysql_error());
if (mysql_num_rows($result) > 0)
{
$_SESSION["login"] = true;
$_SESSION["email"] = $email;
$_SESSION["wachtwoord"] = $wachtwoord;
header ("location: beveiligd.php");
}
else
{
die("Je hebt geen geldige combinatien van email en wachtwoord gebruikt.
Maak een keuze: <br />
<a href=login.html>Opnieuw inloggen</a><br />
<a href=register.php>Hier registreren</a>");
}
}
else
{
header ("location: login.html");
}
?>
Dit zul je dus ook boven je if(isset($_SESSION['login'])) moeten plaatsen, het is verder maar 1 keer per pagina nodig en het makkelijkste is om dit bovenin je script te plaatsen.
Verder nog een paar tips:
-plain text wachtwoord is niet veilig, gebruik hier voor een manier van hashing (http://www.openwall.com/phpass/)
-variabelen buiten quotes halen:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
//FOUT:
$var = "tralala $variabele";
//GOED:
$var = "tralalal " . $variabele;
?>
//FOUT:
$var = "tralala $variabele";
//GOED:
$var = "tralalal " . $variabele;
?>
-die() is niet erg netjes en stopt je script, wat je wilt is dat het script netjes afloopt
Gewijzigd op 03/11/2011 11:01:59 door Jelle -
Dat was ik inderdaad vergeten.
Ja die plain text heb je gelijk in, maar ik weet niet zo goed hoe ik dat moet doen. (en die site die u me gaf is een beetje onduidelijk)
En de variabelen buiten de quotes halen snap ik niet zo goed, waar heb ik dat gedaan?
De die moet inderdaad anders, misschien alle meldingen in een array zetten en later uitlezen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Natuurlijk verder ook wel rekenen houden met dingen die niet getoond zouden moeten worden als er fouten zijn.
De variabelen binnen quotes zag ik in dit stukje:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$query = "SELECT * FROM gebruikers
WHERE email='$email'
AND wachtwoord='$wachtwoord'";
?>
$query = "SELECT * FROM gebruikers
WHERE email='$email'
AND wachtwoord='$wachtwoord'";
?>
Dat zal dus een stuk leesbaarder zijn op deze manier:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$query = "SELECT * FROM gebruikers
WHERE email='" . $email . "'
AND wachtwoord='" . $wachtwoord . "'";
?>
$query = "SELECT * FROM gebruikers
WHERE email='" . $email . "'
AND wachtwoord='" . $wachtwoord . "'";
?>
Om te testen zou je voor hashing md5() kunnen gebruiken, maar ik raad wel aan om dit te vervangen door betere methodes zoals die op de site die ik je linkte.
Wat md5() doet is een hash generen voor een bepaalde invoer, deze is altijd hetzelfde maar niet terug te draaien. Het controleren van inloggen gaat dan ook door het ingevoerde wachtwoord te hashen op dezelfde manier als degene in de database.
Het probleem is dat md5 onzettend lang gebruikt is (en veel) waardoor er ondertussen complete tabellen met vertalingen staan waardoor het effect er van steeds minder wordt, vandaar dat ik je aanraad om het alleen voor een test te gebruiken.
Dit artikel kan je denkik ook wat meer duidelijk maken hierover: http://sunnyis.me/blog/secure-passwords/
Dankje smurf! Duidelijk antwoord