classes en functies
Ik heb een login systeem van iemand, met een class en functies. Nu weet ik alleen niet hoe ik dit moet toepassen.
Dit is het script:
class.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
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
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
<?php
class login
{
var $userid;
var $tabel;
var $cookiepath;
function login($userid)
{
$this -> user_id = $userid;
$this -> tabel = 'logins';
$this -> cookiepath = 'http://www.nn-tutorials.nl';
}
function logincheck()
{
$query = mysql_query("SELECT * FROM ". $this -> tabel ." WHERE uid = '". $_COOKIE['uid'] ."' AND tijd > DATE_SUB(NOW(), INTERVAL 7 DAY) AND ip = '". $_COOKIE['ip'] ."'") or die (mysql_error());
if (mysql_num_rows($query) == false)
{
return false;
}
else
{
$rij = mysql_fetch_assoc($query);
if ($_COOKIE['code'] != $rij['code'] OR $_COOKIE['ip'] != $rij['ip'] OR $_COOKIE['uid'] != $rij['uid'])
{
$this -> clean_login($_COOKIE['uid']);
}
else
{
return true;
}
}
}
function user_login($username, $password)
{
$query = mysql_query("SELECT * FROM users WHERE gebruikersnaam = '". $username ."' AND wachtwoord = '". md5($password) ."'");
if (mysql_num_rows($query) == false)
{
return 0;
}
else
{
$rij = mysql_fetch_assoc($query);
if ($rij['active'] == true)
{
$this -> user_id = $rij['id'];
$this -> create_login();
$_SESSION['username'] = $rij['gebruikersnaam'];
return 1;
}
else
{
return 3;
}
}
}
function clean_login($userid)
{
setcookie('code', '', time(), '/', $this -> cookiepath);
setcookie('uid', 0, time(), '/', $this -> cookiepath);
setcookie('ip', '', time(), '/', $this -> cookiepath);
if (!empty($userid))
{
mysql_query("DELETE FROM ". $this -> tabel ." WHERE uid = '". $userid ."'");
}
}
function create_login()
{
$code = md5(rand(0, 99999));
setcookie('code', $code, time()+60*60*24*7, '/', $this -> cookiepath);
setcookie('uid', $this -> user_id, time()+60*60*24*7, '/', $this -> cookiepath);
setcookie('ip', $_SERVER['REMOTE_ADDR'], time()+60*60*24*7, '/', $this -> cookiepath);
mysql_query("REPLACE INTO ". $this -> tabel ." (tijd, code, uid, ip) VALUES (NOW(), '". $code ."', '". $this -> user_id ."', '". $_SERVER['REMOTE_ADDR'] ."' )") or die (mysql_error());
}
}
?>
class login
{
var $userid;
var $tabel;
var $cookiepath;
function login($userid)
{
$this -> user_id = $userid;
$this -> tabel = 'logins';
$this -> cookiepath = 'http://www.nn-tutorials.nl';
}
function logincheck()
{
$query = mysql_query("SELECT * FROM ". $this -> tabel ." WHERE uid = '". $_COOKIE['uid'] ."' AND tijd > DATE_SUB(NOW(), INTERVAL 7 DAY) AND ip = '". $_COOKIE['ip'] ."'") or die (mysql_error());
if (mysql_num_rows($query) == false)
{
return false;
}
else
{
$rij = mysql_fetch_assoc($query);
if ($_COOKIE['code'] != $rij['code'] OR $_COOKIE['ip'] != $rij['ip'] OR $_COOKIE['uid'] != $rij['uid'])
{
$this -> clean_login($_COOKIE['uid']);
}
else
{
return true;
}
}
}
function user_login($username, $password)
{
$query = mysql_query("SELECT * FROM users WHERE gebruikersnaam = '". $username ."' AND wachtwoord = '". md5($password) ."'");
if (mysql_num_rows($query) == false)
{
return 0;
}
else
{
$rij = mysql_fetch_assoc($query);
if ($rij['active'] == true)
{
$this -> user_id = $rij['id'];
$this -> create_login();
$_SESSION['username'] = $rij['gebruikersnaam'];
return 1;
}
else
{
return 3;
}
}
}
function clean_login($userid)
{
setcookie('code', '', time(), '/', $this -> cookiepath);
setcookie('uid', 0, time(), '/', $this -> cookiepath);
setcookie('ip', '', time(), '/', $this -> cookiepath);
if (!empty($userid))
{
mysql_query("DELETE FROM ". $this -> tabel ." WHERE uid = '". $userid ."'");
}
}
function create_login()
{
$code = md5(rand(0, 99999));
setcookie('code', $code, time()+60*60*24*7, '/', $this -> cookiepath);
setcookie('uid', $this -> user_id, time()+60*60*24*7, '/', $this -> cookiepath);
setcookie('ip', $_SERVER['REMOTE_ADDR'], time()+60*60*24*7, '/', $this -> cookiepath);
mysql_query("REPLACE INTO ". $this -> tabel ." (tijd, code, uid, ip) VALUES (NOW(), '". $code ."', '". $this -> user_id ."', '". $_SERVER['REMOTE_ADDR'] ."' )") or die (mysql_error());
}
}
?>
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
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
<?php
session_start();
include ('db_connect.php');
include_once ('class.login.php');
$login = new login($_COOKIE['uid']);
$loginstatus = $login -> user_login($_POST['username'], $_POST['password']);
switch ($loginstatus)
{
case 0:
echo "gebruikersnaam of wachtwoord fout";
break;
case 1:
header ('location: http://www.nn-tutorials.nl');
break;
case 2:
break;
case 3:
echo "account nog niet geactiveerd";
break;
}
/*
0 = gebruikersnaam/wachtwoord fout
1 = succesvol ingelogd
2 = NIETS
3 = account nog niet geactiveerd
*/
?>
session_start();
include ('db_connect.php');
include_once ('class.login.php');
$login = new login($_COOKIE['uid']);
$loginstatus = $login -> user_login($_POST['username'], $_POST['password']);
switch ($loginstatus)
{
case 0:
echo "gebruikersnaam of wachtwoord fout";
break;
case 1:
header ('location: http://www.nn-tutorials.nl');
break;
case 2:
break;
case 3:
echo "account nog niet geactiveerd";
break;
}
/*
0 = gebruikersnaam/wachtwoord fout
1 = succesvol ingelogd
2 = NIETS
3 = account nog niet geactiveerd
*/
?>
De vragen
1) Hoe controleer ik of iemand is inglogd met function logincheck()
2) Hoe kan iemand uitloggen met function clean_login($userid)
--------------------------
Ik ben nog niet echt ervaren met het gebruik van classes en functies.
Ik hoop dat iemand me kan helpen, want de gene waarvan ik het kreeg is op het moment heel druk, en ik wil mn site erg graag functioneel hebben.
Ik probeer dit:
Hij geeft ten alle tijden de waarde 0 aan. Ook als ik mezelf inlog. In de MySQL database staan wel gegevens, en tevens wordt er een cookie aangemaakt.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
CREATE TABLE `logins` (
`uid` varchar(255) NOT NULL default '',
`tijd` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`ip` varchar(255) NOT NULL default '',
`code` varchar(255) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
`uid` varchar(255) NOT NULL default '',
`tijd` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`ip` varchar(255) NOT NULL default '',
`code` varchar(255) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Ik kom er echt niet uit.... Ik heb al van alles geprobeerd
bumpe pas na 24 uur - edit knop