Ik ben net begonnen met PHP, en heb een inlogscript geschreven. Nu zit ik met het probleem dat de cookie niet aan wordt gemaakt, en weet nog steeds niet waar dit aan kan liggen. Iemand enig idee? Ik heb 4 bestanden:
functions.php
login.php
logout.php
toevoegen.php
functions.php
code:
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
| <?
function connectdb()
{
//inloggegevens van de database
$sHost='bla';
$sUser='bla';
$sPass='bla';
$sDb='bla';
if(!$rDbConn=mysql_connect($sHost,$sUser,$sPass))
{
echo 'Kon niet verbinden met de databaseserver';
return FALSE;
}
else
{
if(!mysql_select_db($sDb,$rDbConn))
{
echo 'Kon de database niet selecteren';
return FALSE;
}
}
return $rDbConn;
}
?>
<?
function check_login($rDbConn)
{
$bLogin=FALSE;
if(empty($_SESSION['ingelogd']))
{
//niet aangemeld volgens sessie, wel volgens db?
if(isset($_COOKIE['user_id']) && isset($_COOKIE['validate']) &&
strlen($_COOKIE['validate'])==32 && preg_match('/^[0-9]{1,8}$/',$_COOKIE['user_id']))
{
//de cookies bestaan en zijn geldig, kijken in de db
$sQuery='SELECT COUNT(*) FROM logins
WHERE user_id='.$_COOKIE['user_id'].' AND validate="'.$_COOKIE['validate'].'"
AND client_ip="'.$_SERVER['REMOTE_ADDR'].'"
AND tijdstip>DATE_SUB(NOW(),INTERVAL 7 DAY)';
if(!$rResult=mysql_query($sQuery,$rDbConn))
{
echo 'Hey een foutmelding: '.mysql_error($rDbConn).'<BR>'.$sQuery;
}
else
{
if(mysql_num_rows($rResult)==1)
{
//volgens db al geldig ingelogd
$bLogin=TRUE;
//de sessie gegevens schrijven
$_SESSION['ingelogd']=TRUE;
$_SESSION['client_ip']=$_SERVER['REMOTE_ADDR'];
$_SESSION['user_id']=$_COOKIE['user_id'];
//willekeurige string maken
$sValidate=md5(rand(0,99999));
//cookies setten voor 7dagen
setcookie('validate',$sValidate,time()+60*60*24*7,'/','www.frozen-land.com');
setcookie('user_id',$_SESSION['user_id'],time()+60*60*24*7,'/','www.frozen-land.com');
//de gegevens in de tabel zetten
$sQuery='REPLACE INTO logins (tijdstip, validate, user_id, client_ip)
VALUES (NOW(), "'.$sValidate.'", '.$_SESSION['user_id'].', "'.$_SERVER['REMOTE_ADDR'].'")';
if(!mysql_query($sQuery,$rDbConn))
{
echo 'Hey een foutmelding: '.mysql_error($rDbConn).'<BR>'.$sQuery;
}
//deze functie behandel ik straks
clean_up($rDbConn);
return $bLogin;
}
}
}
}
elseif(isset($_SESSION['client_ip']) && $_SESSION['client_ip']==$_SERVER['REMOTE_ADDR']
&& isset($_SESSION['user_id']) && preg_match('/^[0-9]{1,8}$/',$_SESSION['user_id'])
&& isset($_SESSION['ingelogd']) && $_SESSION['ingelogd']===TRUE)
{
return TRUE;
}
return FALSE;
}
?>
<?
strlen($_COOKIE['validate'])==32 && preg_match('/^[0-9]{1,8}$/',$_COOKIE['user_id'])
?>
<?
//willekeurige string maken
$sValidate=md5(rand(0,99999));
//cookies setten voor 7dagen
$iUserId=mysql_result($rResult,0,'id');
setcookie('validate',$sValidate,time()+60*60*24*7,'/','www.frozen-land.com');
setcookie('user_id',$iUserId,time()+60*60*24*7,'/','www.frozen-land.com');
//de gegevens in de tabel zetten
$sQuery='REPLACE INTO logins (tijdstip, validate, user_id, client_ip)
VALUES (NOW(), "'.$sValidate.'", '.$iUserId.', "'.$_SERVER['REMOTE_ADDR'].'")';
if(!mysql_query($sQuery,$rDbConn))
{
echo 'Hey een foutmelding: '.mysql_error($rDbConn).'<BR>'.$sQuery;
}
//de sessie gegevens schrijven
$_SESSION['user_id']=$iUserId;
$_SESSION['ingelogd']=TRUE;
$_SESSION['client_ip']=$_SERVER['REMOTE_ADDR'];
//doorsturen naar de volgende pagina
header('location: secure.php');
?> |
login.php
code:
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
| <?
session_start();
require('functions.php');
if($_SERVER['REQUEST_METHOD']=='POST')
{
if(FALSE!==($rDbConn=connectdb()))
{
$sQuery='SELECT id FROM users WHERE username="'.$_POST['username'].'" AND password="'.md5($_POST['password']).'"';
if(!$rResult=mysql_query($sQuery,$rDbConn))
{
echo 'Hey een foutmelding: '.mysql_error($rDbConn).'<BR>'.$sQuery;
}
else
{
if(mysql_num_rows($rResult)==0)
{
echo 'Gebruikersnaam en wachtwoord horen niet bij elkaar.';
}
else
{
//En dan komt hier het loginverhaal
}
}
mysql_close($rDbConn);
}
}
else
{
//het formulier (zonder te letten op HTML-standaarden):
echo '<FORM NAME="inlogform" METHOD="post" ACTION="'.$_SERVER['PHP_SELF'].'">
Gebruikersnaam: <INPUT TYPE="text" NAME="username" SIZE="10"><BR>
Wachtwoord: <INPUT TYPE="password" NAME="password" SIZE="10"><BR>
<INPUT TYPE="submit" VALUE="Inloggen"></FORM>';
}
?> |
logout.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <?
session_start();
require('functions.php');
if(FALSE!==($rDbConn=connectdb()))
{
if(!check_login($rDbConn))
{
header('location: login.php');
exit;
}
//wordt hieronder behandeld
clean_up($rDbConn,$_SESSION['user_id']);
mysql_close($rDbConn);
}
setcookie('validate','',time(),'/','www.frozen-land.com');
setcookie('user_id',0,time(),'/','www.frozen-land.com');
$_SESSION['ingelogd']=FALSE;
echo 'Uitgelogd';
?> |
toevoegen.php
code:
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
| <?php
if (isset($_POST["username"]) || isset($_POST["password"])) { // kijken of de variable zijn opgegeven in het formulier
$md5password = md5($_POST["password"]);//md5 van maken
include ("functions.php"); // de functie verbind() is nodig
connectdb(); //verbinden
// controle of de gebruikers naam al bestaat
$sql = "SELECT * FROM users WHERE username LIKE '".$username."' ORDER BY id DESC";
$resultaat = mysql_query($sql) or die(mysql_error());
if ($row = mysql_fetch_object($resultaat)) {
echo "sorry deze gebruikers naam bestaat al";
}
else {
/*Maak SQL-query */
$sql = "INSERT INTO users (username, password)
VALUES ('".$username."', '".$md5password."')";
mysql_query($sql) or die ("fout in query");
// bericht weergeven
echo "succesvol toegevoegd<br><br>";
echo "<a href=\"login.php\">inloggen</a>";
}
}
else { // ander formulier weergeven
?>
<form action="toevoegen.php" method="post">
username:<input type="Text" name="username"><br>
password:<input type="Password" name="password"><br>
<input type="Submit" name="Submit" value="Toevoegen">
</form>
<?php } // else einde
?> |
[ Voor 15% gewijzigd door Verwijderd op 03-04-2004 23:56 ]