controle ingelogd
ter controle of een gebruiker ingelogd is laat ik bij het inloggen een coocky aanmaken met volgende code:
Code (php)
1
2
2
setcookie('gebruikersnaam', $gebruikersnaam, time() + 60*60);
setcookie('wachtwoord', $wachtwoord, time() + 60*60);
setcookie('wachtwoord', $wachtwoord, time() + 60*60);
Kan ik dit coocky ook laten lopen tot de speler uitlogt ipv een tijd te geven?
Hoe breek ik het coocky af bij het uitloggen?
Hoe controleer ik of het coocky er is en haal ik de gegevens uit het coocky?
Kan ik de tijd van het coocky verlengen als een speler een pagina bezoekt terwijl hij ingelogd is?
Kristof, ik zie je de afgelopen dagen diverse vragen stellen op het forum.
Daar is een forum ook voor, maar ik krijg een beetje het idee dat je zelf weinig moeite doet om antwoorden te vinden. Over cookies is (met bv Google) heel veel te vinden.
Kristof Hendrickx op 31/08/2013 13:17:18:
Een wachtwoord sla je nooit op in een cookie. Ook een gebruikersnaam lijkt me beter van niet. De informatie van een cookie is vrij eenvoudig op te vragen.
Kristof Hendrickx op 31/08/2013 13:17:18:
Kan ik dit coocky ook laten lopen tot de speler uitlogt ipv een tijd te geven?
En hoe controleer je dan of iemand de browser afsluit ipv netjes uitlogt?
Kristof Hendrickx op 31/08/2013 13:17:18:
Hoe breek ik het coocky af bij het uitloggen?
Afbreken? Als iemand netjes uitlogt, kun je de cookie verwijderen. Zoek eens met Google, hoe dat moet.
Kristof Hendrickx op 31/08/2013 13:17:18:
Hoe controleer ik of het coocky er is en haal ik de gegevens uit het coocky?
Zoek eens met Google.
Kristof Hendrickx op 31/08/2013 13:17:18:
Kan ik de tijd van het coocky verlengen als een speler een pagina bezoekt terwijl hij ingelogd is?
Als je een cookie kunt plaatsen, kun je de informatie daarin toch ook aanpassen?
Gewijzigd op 31/08/2013 13:30:45 door Obelix Idefix
En never nooit username en passwords in cookies zetten.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
session_start();
$_SESSION['gebruikersnaam']=$gebruikersnaam; // maakt een session aan met de waarde gebruikersnaam
$_SESSION['wachtwoord']=$wachtwoord; // maakt een session aan met de waarde wachtwoord
?>
session_start();
$_SESSION['gebruikersnaam']=$gebruikersnaam; // maakt een session aan met de waarde gebruikersnaam
$_SESSION['wachtwoord']=$wachtwoord; // maakt een session aan met de waarde wachtwoord
?>
Stel je gebruikersnaam is JAN en je wachtwoord is 123. Dan heeft de waarde als JAN en de waarde als 123.
Als het goed is blijft een session een half uur bestaan als er geen activiteit meer is.
Toevoeging op 31/08/2013 13:59:37:
En om de session weer te verwijderen gebruik je
om ALLE sessies te verwijderen. En als je een bepaalde sessie wil verwijderen gebruik je:
Gewijzigd op 31/08/2013 13:55:51 door Michael R
Voor sessie geldt zelfde als voor cookie: sla nooit gebruikersnaam en/of wachtwoord op, al is een sessie weliswaar wat minder makkelijk toegankelijk voor de gemiddelde gebruiker.
dan gebruik je crypt of md5 om het te coderen.
En zelfs beveiligd/gecodeerd sla je geen wachtwoorden op.
Maak een id aan en sla die op in een sessie en in een database i.c.m. met gebruikers-id.
Controleer bij het opvragen van een pagina of de gegevens in de sessie overeenkomen met hetgeen in de database staat. Wil je het goed doen, vervang je de gegevens met enige regelmaat.
Lekker, straks heb je een veelbezochte website en sla je al die sessies in een database op. Wordt hij daar niet sloom van?
Michael R op 31/08/2013 15:52:03:
Lekker, straks heb je een veelbezochte website en sla je al die sessies in een database op. Wordt hij daar niet sloom van?
Nee, want je hoeft alleen de actieve sessies op te slaan. Als dat er enkele tienduizenden zijn, zul je er weinig van merken. De verlopen sessies gooi je gewoon weg.
Jullie zeggen geen wachtwoord op te slaan in een sessie of in een coocky, maar hoe kan ik dan wel controleren of iemand degelijk ingelogd is, en niet zelf even een coocky heeft nagemaakt, of een sessie heeft nagemaakt, of kunnen deze niet nagemaakt worden?
btw: het wachtwoord is gecrypteerd in het coocky dat ik momenteel maak ;)
Indien een sessie of coocky niet nagemaakt kan worden kan ik inderdaad een coocky of een sessie met een id invullen, ik heb namelijk bij elke gebruikersnaam een auto-increment id.
Kristof Hendrickx op 31/08/2013 19:56:41:
Jullie zeggen geen wachtwoord op te slaan in een sessie of in een coocky, maar hoe kan ik dan wel controleren of iemand degelijk ingelogd is
Jullie zeggen geen wachtwoord op te slaan in een sessie of in een coocky, maar hoe kan ik dan wel controleren of iemand degelijk ingelogd is
Obelix en Idefix op 31/08/2013 15:17:50:
Maak een id aan en sla die op in een sessie en in een database i.c.m. met gebruikers-id.
Controleer bij het opvragen van een pagina of de gegevens in de sessie overeenkomen met hetgeen in de database staat. Wil je het goed doen, vervang je de gegevens met enige regelmaat.
Controleer bij het opvragen van een pagina of de gegevens in de sessie overeenkomen met hetgeen in de database staat. Wil je het goed doen, vervang je de gegevens met enige regelmaat.
Obelix en Idefix op 31/08/2013 20:17:50:
Wat is een coocky ;-)
Kristof Hendrickx op 31/08/2013 19:56:41:
Jullie zeggen geen wachtwoord op te slaan in een sessie of in een coocky, maar hoe kan ik dan wel controleren of iemand degelijk ingelogd is
Jullie zeggen geen wachtwoord op te slaan in een sessie of in een coocky, maar hoe kan ik dan wel controleren of iemand degelijk ingelogd is
Obelix en Idefix op 31/08/2013 15:17:50:
Maak een id aan en sla die op in een sessie en in een database i.c.m. met gebruikers-id.
Controleer bij het opvragen van een pagina of de gegevens in de sessie overeenkomen met hetgeen in de database staat. Wil je het goed doen, vervang je de gegevens met enige regelmaat.
Controleer bij het opvragen van een pagina of de gegevens in de sessie overeenkomen met hetgeen in de database staat. Wil je het goed doen, vervang je de gegevens met enige regelmaat.
Dan zijn de gegevens in de sessie toch enkel het id?
Dit is toch simpel nagemaakt?
Quote:
Jullie zeggen geen wachtwoord op te slaan in een sessie of in een coocky, maar hoe kan ik dan wel controleren of iemand degelijk ingelogd is, en niet zelf even een coocky heeft nagemaakt, of een sessie heeft nagemaakt, of kunnen deze niet nagemaakt worden?
index.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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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
<?php
session_start();
$hostname = "localhost";
$username = "root";
$password = "root";
$database = "jouwdatabase";
$connect = mysql_connect($hostname, $username, $password);
$select = mysql_select_db($database);
if(isset($_SESSION['loggedin'])) { // Kijk of bezoeker is ingelogd, zo ja, verwijs ze naar de ingelogde pagina's.
header("Location: /ingelogd/index.php");
die();
}
if(isset($_POST['inloggen'])) {
$_POST['gebruikersnaam'] = mysql_real_escape_string($_POST['gebruikersnaam']);
$_POST['wachtwoord'] = mysql_real_escape_string($_POST['wachtwoord']);
// Kijken of de geposte gebruikersnaam en wachtwoord kloppen in de database
$selectUser = mysql_query("SELECT * FROM users WHERE gebruikersnaam = '".sha1($_POST['gebruikersnaam'])."' AND wachtwoord = '".sha1($_POST['wachtwoord'])."'");
$fetchUser = mysql_fetch_array($selectUser);
if($fetchUser['gebruikersnaam'] == sha1($_POST['gebruikersnaam']) && $fetchUser['wachtwoord'] == sha1($_POST['wachtwoord'])) {
$message = "U bent ingelogd.";
$_SESSION['loggedin'] = 1;
} else {
$message = "Foute login gegevens";
}
}
?>
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<form method='post' action='index.php'>
<table>
<tr><td>Gebruikersnaam</td></tr>
<tr><td><input type='text' name='gebruikersnaam' placeholder='Gebruikers naam...' /></td></tr>
<tr><td>Wachtwoord</td></tr>
<tr><td><input type='password' name='wachtwoord' placeholder='Wachtwoord...' />
<tr><td></td></tr>
<tr><td><input type="submit" name="inloggen" value="Inloggen!" /></td></tr>
</table>
</form>
<?php
if(isset($message)) {
echo $message;
}
?>
</body>
</html>
session_start();
$hostname = "localhost";
$username = "root";
$password = "root";
$database = "jouwdatabase";
$connect = mysql_connect($hostname, $username, $password);
$select = mysql_select_db($database);
if(isset($_SESSION['loggedin'])) { // Kijk of bezoeker is ingelogd, zo ja, verwijs ze naar de ingelogde pagina's.
header("Location: /ingelogd/index.php");
die();
}
if(isset($_POST['inloggen'])) {
$_POST['gebruikersnaam'] = mysql_real_escape_string($_POST['gebruikersnaam']);
$_POST['wachtwoord'] = mysql_real_escape_string($_POST['wachtwoord']);
// Kijken of de geposte gebruikersnaam en wachtwoord kloppen in de database
$selectUser = mysql_query("SELECT * FROM users WHERE gebruikersnaam = '".sha1($_POST['gebruikersnaam'])."' AND wachtwoord = '".sha1($_POST['wachtwoord'])."'");
$fetchUser = mysql_fetch_array($selectUser);
if($fetchUser['gebruikersnaam'] == sha1($_POST['gebruikersnaam']) && $fetchUser['wachtwoord'] == sha1($_POST['wachtwoord'])) {
$message = "U bent ingelogd.";
$_SESSION['loggedin'] = 1;
} else {
$message = "Foute login gegevens";
}
}
?>
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<form method='post' action='index.php'>
<table>
<tr><td>Gebruikersnaam</td></tr>
<tr><td><input type='text' name='gebruikersnaam' placeholder='Gebruikers naam...' /></td></tr>
<tr><td>Wachtwoord</td></tr>
<tr><td><input type='password' name='wachtwoord' placeholder='Wachtwoord...' />
<tr><td></td></tr>
<tr><td><input type="submit" name="inloggen" value="Inloggen!" /></td></tr>
</table>
</form>
<?php
if(isset($message)) {
echo $message;
}
?>
</body>
</html>
/ingelogd/index.php
Code (php)
Klein voorbeeldje (nog in mysql omdat ik mysqli en PDO aan het leren ben).
Gewijzigd op 31/08/2013 20:26:47 door RobertJan Doeternietoe
Dit kan dus niet handmatig door een gebruiker gemaakt worden als ik het goed begrijp, hoeveel kennis hij hier ook van heeft?
Zodra de inlog gelukt is, maak je een een random string aan. Die sla je, samen met het id van degene die heeft ingelogd, op in een database en in een sessie. Zodra iemand een pagina opvraagt, controleer je of de gegevens in de sessie gelijk zijn aan die in de database. Als ze er al in slagen om de gegevens in de sessie uit te lezen/te veranderen, dan klopt die informatie niet met hetgeen in de database staat.
Kristof Hendrickx op 31/08/2013 20:37:08:
Dit kan dus niet handmatig door een gebruiker gemaakt worden als ik het goed begrijp, hoeveel kennis hij hier ook van heeft?
Dat klopt. Sessies staan op de server en in een SESSID-cookie met een 'hash' als identifier.