script werkt niet voor bruteforce
Pagina: « vorige 1 2 3 volgende »
Ik snap niet wat je bedoeld.
Wat mijn en Ben zijn voorbeeld doet, is een connectie maken met de database.
Daarin kan je van alles doen:
Je maakt een connectie met new database in de variabele $db.
Met die $db ga je verder met wat je wenst te doen.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
// init je database classs
$db = new database('localhost', 'my_user', 'my_password', 'my_db');
// voer iets uit
$result = $db->query("SELECT * FROM users");
// sluit de database
$db->close();
?>
// init je database classs
$db = new database('localhost', 'my_user', 'my_password', 'my_db');
// voer iets uit
$result = $db->query("SELECT * FROM users");
// sluit de database
$db->close();
?>
Gewijzigd op 18/03/2017 07:40:00 door Bart V B
class Bans extends Database
{
// hoe kan ik hier dan bv. een query uitvoeren
}
De Database is geen onderdeel van Bans.
Als je in classes schrijft moet je natuurlijk wel het logisch aanpakken.
De database GEBRUIK je in je Bans class. Dat is een heel andere denkwijze.
Dus Zou je zoiets kunnen doen:
Code (php)
Het is maar even een ranzig voorbeeld, maar zoals je ziet, de opties die je in je Database extends mysqli doet worden beschikbaar VANUIT de mysqli class. Maar de Database class weet op zijn beurt niet wat hij met de bans moet doen. En dat is goed. Immers die zelfde Database class kan ook opgezet worden in bijvoorbeeld een Register class o.i.d. Dus je moet wel goed nadenken hoe je je classes wil indelen.
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
86
87
88
89
90
91
92
93
94
95
96
97
98
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
<?php
class Database
{
private $_port = '3306';
private $_hostname = 'localhost';
private $_username = 'novaraba';
private $_password = '2QOOpcxTeZvL';
private $_database = 'novaraba_website';
protected $connection;
public function __construct()
{
$this->connection = mysqli_connect(
$this->_hostname,
$this->_username,
$this->_password,
$this->_database,
$this->_port
);
if (mysqli_connect_errno($this->connection))
{
?>
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<meta name="robots" content="index, follow, all">
<meta name="googlebot" content="noodp">
<title>Novara Bank - Onderhoud</title>
<link rel="shortcut icon" type="image/png" href="https://static.afbeeldinguploaden.nl/1703/236459/ujg281Ct.png" />
<link rel="stylesheet" type="text/css" href="/paneel/assets/css/index.css" />
<link rel="stylesheet" type="text/css" href="/paneel/assets/css/overwrite.css" />
</head>
<body class="hold-transition login-page">
<div class="login-box">
<div class="login-logo">
<h3><a><b>Onderhoud</b></a></h3>
</div>
<div class="login-box-body">
We voeren een korte onderhoud uit.<br>
Kom later op de dag terug.
</div>
</div>
</body>
</html>
<?php
exit();
}
}
public function __destruct()
{
return mysqli_close($this->connection);
}
public function query($query)
{
return $this->connection->query($query);
}
public function num_rows($result)
{
return mysqli_num_rows($result);
}
public function fetch_row($result)
{
return mysqli_fetch_row($result);
}
public function fetch_array($result)
{
return mysqli_fetch_array($result);
}
public function fetch_assoc($result)
{
return mysqli_fetch_assoc($result);
}
public function fetch_object($result)
{
return mysqli_fetch_object($result);
}
public function last_id()
{
return mysqli_insert_id($this->connection);
}
public function escape($data)
{
return mysqli_real_escape_string($this->connection,$data);
}
}
?>
class Database
{
private $_port = '3306';
private $_hostname = 'localhost';
private $_username = 'novaraba';
private $_password = '2QOOpcxTeZvL';
private $_database = 'novaraba_website';
protected $connection;
public function __construct()
{
$this->connection = mysqli_connect(
$this->_hostname,
$this->_username,
$this->_password,
$this->_database,
$this->_port
);
if (mysqli_connect_errno($this->connection))
{
?>
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<meta name="robots" content="index, follow, all">
<meta name="googlebot" content="noodp">
<title>Novara Bank - Onderhoud</title>
<link rel="shortcut icon" type="image/png" href="https://static.afbeeldinguploaden.nl/1703/236459/ujg281Ct.png" />
<link rel="stylesheet" type="text/css" href="/paneel/assets/css/index.css" />
<link rel="stylesheet" type="text/css" href="/paneel/assets/css/overwrite.css" />
</head>
<body class="hold-transition login-page">
<div class="login-box">
<div class="login-logo">
<h3><a><b>Onderhoud</b></a></h3>
</div>
<div class="login-box-body">
We voeren een korte onderhoud uit.<br>
Kom later op de dag terug.
</div>
</div>
</body>
</html>
<?php
exit();
}
}
public function __destruct()
{
return mysqli_close($this->connection);
}
public function query($query)
{
return $this->connection->query($query);
}
public function num_rows($result)
{
return mysqli_num_rows($result);
}
public function fetch_row($result)
{
return mysqli_fetch_row($result);
}
public function fetch_array($result)
{
return mysqli_fetch_array($result);
}
public function fetch_assoc($result)
{
return mysqli_fetch_assoc($result);
}
public function fetch_object($result)
{
return mysqli_fetch_object($result);
}
public function last_id()
{
return mysqli_insert_id($this->connection);
}
public function escape($data)
{
return mysqli_real_escape_string($this->connection,$data);
}
}
?>
Maar bedankt voor de tip!
Bij de bans class ben ik eerst maar begonnen om te kijken of je hostnaam wel toegestaan is met de volgende code:
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
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
<?php
class Bans
{
public function canAccess($ip)
{
$whitelistHostnames = array(
"ziggo",
"telenet",
"kpn",
"onsbrabantnet",
"tele2",
"xs4all",
"zeelandnet",
"telfort",
"planet",
"caiway",
"prioritytelecom",
"upc",
"chello",
"belgacom",
"direct-adsl",
"online.nl",
"hetnet.nl",
"92.110", // IP reeks Ziggo
"145.133", // IP reeks Ziggo
"145.100", // IP reeks Ziggo
"verixi.net",
"mxposure", // xs4all
"versatel",
"introweb.nl",
"belgacom.be",
"schedom-europe.net",
"open.net",
"glasoperator.nl",
"62.72.", // IP reeks Vodafone
"62.140.", // IP reeks Vodafone
"scarlet.be",
"145.132.", // IP reeks Telfort (KPN)
"143.177.", // IP reeks Tele2
"62.205.", // IP reeks Telenet
"stipte.nl",
"proximus.be",
"egcs.nl",
"81.4.104.129", // RA4WVPN Alblasserdam IP
"de-falkenstein.ra4wvpn.com",
"62.235.", // IP reeks Scarlet (BE)
"onenet.cw", // Curacao
"netvisit.nl",
"hotelschoolhasselt.be",
"143.176.232", // Tele2
"143.176.214", // Tele2
"143.176.233", // Tele2
"ddfr.nl",
"dsl.cambrium.nl",
"lombox",
"solcon.nl",
);
$accessAllowed = false;
foreach ($whitelistHostnames as $key => $value)
{
if (strpos(gethostbyaddr($ip), $value) !== false)
{
$accessAllowed = true;
break;
}
}
if ($accessAllowed === false)
{
die("Je hostnaam is niet toegestaan voor toegang tot het paneel. Indien je denkt dat dit een fout is, geef onderstaande door aan het de I.C.T.:<br />" . gethostbyaddr($ip));
}
}
}
?>
class Bans
{
public function canAccess($ip)
{
$whitelistHostnames = array(
"ziggo",
"telenet",
"kpn",
"onsbrabantnet",
"tele2",
"xs4all",
"zeelandnet",
"telfort",
"planet",
"caiway",
"prioritytelecom",
"upc",
"chello",
"belgacom",
"direct-adsl",
"online.nl",
"hetnet.nl",
"92.110", // IP reeks Ziggo
"145.133", // IP reeks Ziggo
"145.100", // IP reeks Ziggo
"verixi.net",
"mxposure", // xs4all
"versatel",
"introweb.nl",
"belgacom.be",
"schedom-europe.net",
"open.net",
"glasoperator.nl",
"62.72.", // IP reeks Vodafone
"62.140.", // IP reeks Vodafone
"scarlet.be",
"145.132.", // IP reeks Telfort (KPN)
"143.177.", // IP reeks Tele2
"62.205.", // IP reeks Telenet
"stipte.nl",
"proximus.be",
"egcs.nl",
"81.4.104.129", // RA4WVPN Alblasserdam IP
"de-falkenstein.ra4wvpn.com",
"62.235.", // IP reeks Scarlet (BE)
"onenet.cw", // Curacao
"netvisit.nl",
"hotelschoolhasselt.be",
"143.176.232", // Tele2
"143.176.214", // Tele2
"143.176.233", // Tele2
"ddfr.nl",
"dsl.cambrium.nl",
"lombox",
"solcon.nl",
);
$accessAllowed = false;
foreach ($whitelistHostnames as $key => $value)
{
if (strpos(gethostbyaddr($ip), $value) !== false)
{
$accessAllowed = true;
break;
}
}
if ($accessAllowed === false)
{
die("Je hostnaam is niet toegestaan voor toegang tot het paneel. Indien je denkt dat dit een fout is, geef onderstaande door aan het de I.C.T.:<br />" . gethostbyaddr($ip));
}
}
}
?>
Heb ik dit dan wel goed opgebouwd?
Uhm, hoe ga ik dit in een positieve brengen.
Een woord: Spaghetti. :)
Leuk om te zien dat je zo enthousiast bezig bent, maar je moet denk ik even een stapje of 6 terug doen op de tekentafel.
Nogmaals ik bedoel dit om je te helpen en niet om je hele werk af te kraken he. Want dat is oprecht niet de bedoeling.
Laat ik beginnen met die database class:
Je mikt nu een berg html code in de class zelf.
Dat is heeel fout. De class zelf moet alleen php bevatten.
Dus die html moet daar uit, en zoals met de database moet je ergens een optie maken waarin je die html code gaat gebruiken. ik noem maar even wat:
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
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
<?php
$db = new database();
if( $db->mysqli_connect_errno() ) :
?>
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<meta name="robots" content="index, follow, all">
<meta name="googlebot" content="noodp">
<title>Novara Bank - Onderhoud</title>
<link rel="shortcut icon" type="image/png" href="https://static.afbeeldinguploaden.nl/1703/236459/ujg281Ct.png" />
<link rel="stylesheet" type="text/css" href="/paneel/assets/css/index.css" />
<link rel="stylesheet" type="text/css" href="/paneel/assets/css/overwrite.css" />
</head>
<body class="hold-transition login-page">
<div class="login-box">
<div class="login-logo">
<h3><a><b>Onderhoud</b></a></h3>
</div>
<div class="login-box-body">
We voeren een korte onderhoud uit.<br>
Kom later op de dag terug.
</div>
</div>
</body>
</html>
<?php endif; ?>
$db = new database();
if( $db->mysqli_connect_errno() ) :
?>
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<meta name="robots" content="index, follow, all">
<meta name="googlebot" content="noodp">
<title>Novara Bank - Onderhoud</title>
<link rel="shortcut icon" type="image/png" href="https://static.afbeeldinguploaden.nl/1703/236459/ujg281Ct.png" />
<link rel="stylesheet" type="text/css" href="/paneel/assets/css/index.css" />
<link rel="stylesheet" type="text/css" href="/paneel/assets/css/overwrite.css" />
</head>
<body class="hold-transition login-page">
<div class="login-box">
<div class="login-logo">
<h3><a><b>Onderhoud</b></a></h3>
</div>
<div class="login-box-body">
We voeren een korte onderhoud uit.<br>
Kom later op de dag terug.
</div>
</div>
</body>
</html>
<?php endif; ?>
De bans, dat is geen class, maar een ingepakte function met een array er in wat iets moet checken.
Daar kan je zoveel meer mee doen.
Dus denk eens even verder na of je die in zo'n zelfde opzet kunt maken zoals ik net in mijn voorbeeld aangeef. Overigens, is pseudo code, dus heb niet gekeken of de werking meteen goed is he.
Eigenlijk simpeler gezegd: je classes doen de dingen, en de html (VIEW) poept de dingen op het scherm.
Daar mag je wel wat code inzetten, maar nooit de hele functionaliteit van wat de classes kunnen doen.
Gewijzigd op 18/03/2017 08:53:10 door Bart V B
Toevoeging op 18/03/2017 09:07:50:
En bij bans moet ik nog checkBanned() maken, daar ben ik atm. mee bezig.
Code (php)
Als je in een child class de gelijknamige methode gewoon weglaat, wordt automatisch de methode gebruikt van de parent die je extendt. Gewoon weglaten dus als je de oorspronkelijke methode niet wilt overschrijven.
Bovendien gebruik je nog steeds de procedurele vorm van MySQLi, niet de objectgeoriënteerde.
- Rob - op 18/03/2017 09:06:40:
En als ik een apart html bestand aanmaak, met daarin de HTML code. En vervolgens die include, zou dit dan beter zijn?
Nee, het beste is een exception gooien, zodat het script dat de databaseverbinding gebruikt kan bepalen hoe er op een fout moet worden gereageerd.
Het één na beste is een HTTP-serverfout genereren, bijvoorbeeld 503 Service Unavailable, zodat de client kan bepalen hoe er op de serverfout wordt gereageerd. Dat is bijvoorbeeld handig voor web apps, Ajax en API's voor web services.
Ik zal het aanpassen ;-)
Dan kan je het makkelijk bijwerken. Ook die() moet je echt voorkomen in je scripts, en output hoort zeker niet in classes te worden gemaakt. Ikzelf zou daar een exception voor maken.
Gewijzigd op 18/03/2017 11:19:54 door - Ariën -
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
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
<?php
session_start();
date_default_timezone_set('Europe/Amsterdam');
error_reporting(E_ALL);
ob_start();
include($_SERVER['DOCUMENT_ROOT'].'/paneel/includes/classes/database.class.php');
include($_SERVER['DOCUMENT_ROOT'].'/paneel/includes/classes/user.class.php');
if (isset($_POST['gebruikersnaam'], $_POST['wachtwoord']))
{
$user = new User();
if ($user->loggedIn() === false)
{
$user->login($_POST['gebruikersnaam'], $_POST['wachtwoord']);
}
else
{
echo '0+Je bent al ingelogd, laad de pagina opnieuw.';
}
}
else
{
header('Location: /');
}
?>
session_start();
date_default_timezone_set('Europe/Amsterdam');
error_reporting(E_ALL);
ob_start();
include($_SERVER['DOCUMENT_ROOT'].'/paneel/includes/classes/database.class.php');
include($_SERVER['DOCUMENT_ROOT'].'/paneel/includes/classes/user.class.php');
if (isset($_POST['gebruikersnaam'], $_POST['wachtwoord']))
{
$user = new User();
if ($user->loggedIn() === false)
{
$user->login($_POST['gebruikersnaam'], $_POST['wachtwoord']);
}
else
{
echo '0+Je bent al ingelogd, laad de pagina opnieuw.';
}
}
else
{
header('Location: /');
}
?>
user class
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
<?php
class User
{
protected $_mysqli;
public function __construct()
{
$this->_mysqli = new Database();
}
public function loggedIn()
{
if (empty($_SESSION['id']))
{
return false;
}
else
{
return true;
}
}
public function login($username, $password)
{
$mysqli = $this->_mysqli;
$searchUserSql = $mysqli->query("SELECT `id`, `wachtwoord` FROM `leden` WHERE `gebruikersnaam`='".$mysqli->real_escape_string($username)."'");
if ($searchUserSql && isset($searchUserSql->num_rows))
{
$userDetails = $searchUserSql->fetch_assoc();
if (password_verify($password, $userDetails['wachtwoord']))
{
$updateUserAccount = $mysqli->query("UPDATE `leden` SET `laatst_online`='".time()."' WHERE `gebruikersnaam`='".$mysqli->real_escape_string($username)."'");
$_SESSION['id'] = $userDetails['id'];
echo '1+De ingevulde gegevens zijn goed.';
}
else
{
echo '0+De ingevulde gegevens zijn niet goed.';
}
}
else
{
echo '0+De ingevulde gegevens zijn niet goed.';
}
}
}
?>
class User
{
protected $_mysqli;
public function __construct()
{
$this->_mysqli = new Database();
}
public function loggedIn()
{
if (empty($_SESSION['id']))
{
return false;
}
else
{
return true;
}
}
public function login($username, $password)
{
$mysqli = $this->_mysqli;
$searchUserSql = $mysqli->query("SELECT `id`, `wachtwoord` FROM `leden` WHERE `gebruikersnaam`='".$mysqli->real_escape_string($username)."'");
if ($searchUserSql && isset($searchUserSql->num_rows))
{
$userDetails = $searchUserSql->fetch_assoc();
if (password_verify($password, $userDetails['wachtwoord']))
{
$updateUserAccount = $mysqli->query("UPDATE `leden` SET `laatst_online`='".time()."' WHERE `gebruikersnaam`='".$mysqli->real_escape_string($username)."'");
$_SESSION['id'] = $userDetails['id'];
echo '1+De ingevulde gegevens zijn goed.';
}
else
{
echo '0+De ingevulde gegevens zijn niet goed.';
}
}
else
{
echo '0+De ingevulde gegevens zijn niet goed.';
}
}
}
?>
database class
Code (php)
Ben ik zo al beter opweg?
Toevoeging op 18/03/2017 14:56:09:
empty is veranderd naar isset bij loggedIn() functie
Gewijzigd op 18/03/2017 14:52:25 door - Rob -
- En die() is niet netjes.
Moet ik dan mysqli->real_escape_string() etc. gebruiken?
" En die() is niet netjes."
Zal het even aanpassen
Code (php)
1
2
3
4
2
3
4
$ip = $_SERVER['REMOTE_ADDR'];
$ipLocation= json_decode(file_get_contents("http://ipinfo.io/{$ip}"));
echo $ipLocation->country;
//Dit geeft landcide terug, o.a. NL BE DE FR enz.
$ipLocation= json_decode(file_get_contents("http://ipinfo.io/{$ip}"));
echo $ipLocation->country;
//Dit geeft landcide terug, o.a. NL BE DE FR enz.
Dit zou je kunnen gebruiken om hele landen te 'whitelisten' of 'blacklisten'
Het is wel heel moeilijk om ALLE ipranges en ISP's te whitelisten, vandaar ;-)
Dennis, bedankt! Dit had ik eerder ook, maar ben het helemaal vergeten! Even aanpassen
- Rob - op 18/03/2017 15:47:26:
"Waarom gebruik je nog steeds de procedurele functies van mysqli?"
Moet ik dan mysqli->real_escape_string() etc. gebruiken?
Moet ik dan mysqli->real_escape_string() etc. gebruiken?
Jep, alles in objecten, als je het netjes wilt doen.
Toevoeging op 18/03/2017 15:59:24:
Dennis WhoCares op 18/03/2017 15:48:36:
Wellicht als je interesse heb om landen toe te staan:
Dit zou je kunnen gebruiken om hele landen te 'whitelisten' of 'blacklisten'
Het is wel heel moeilijk om ALLE ipranges en ISP's te whitelisten, vandaar ;-)
Code (php)
1
2
3
4
2
3
4
$ip = $_SERVER['REMOTE_ADDR'];
$ipLocation= json_decode(file_get_contents("http://ipinfo.io/{$ip}"));
echo $ipLocation->country;
//Dit geeft landcode terug, o.a. NL BE DE FR enz.
$ipLocation= json_decode(file_get_contents("http://ipinfo.io/{$ip}"));
echo $ipLocation->country;
//Dit geeft landcode terug, o.a. NL BE DE FR enz.
Dit zou je kunnen gebruiken om hele landen te 'whitelisten' of 'blacklisten'
Het is wel heel moeilijk om ALLE ipranges en ISP's te whitelisten, vandaar ;-)
http://ipinfo.io/{$ip}
Die URL geeft geen JSON terug?
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
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
<?php
class User
{
protected $_mysqli;
public function __construct()
{
$this->_mysqli = new Database();
}
public function login($username, $password)
{
$mysqli = $this->_mysqli;
$ip = $_SERVER['REMOTE_ADDR'];
$ipInfo = json_decode(file_get_contents("http://ipinfo.io/$ip"));
$country = $ipInfo->country;
if ($country === "NL" || $country === "BE")
{
$searchUserSql = mysqli_query($mysqli, "SELECT `id`, `wachtwoord` FROM `leden` WHERE `gebruikersnaam`='".mysqli_real_escape_string($username)."'");
if ($searchUserSql && isset(mysqli_num_rows($searchUserSql))) // Hier komt dus een error
{
$userDetails = mysqli_fetch_assoc($searchUserSql);
if (password_verify($password, $userDetails['wachtwoord']))
{
$updateUserAccount = mysqli_query($mysqli, "UPDATE `leden` SET `laatst_online`='".time()."' WHERE `gebruikersnaam`='".mysqli_real_escape_string($username)."'");
$_SESSION['id'] = $userDetails['id'];
echo '1+De ingevulde gegevens zijn goed.';
}
else
{
echo '0+De ingevulde gegevens zijn niet goed.';
}
}
else
{
echo '0+De ingevulde gegevens zijn niet goed.';
}
}
else
{
echo '0+Alleen de landen Nederland en Belgie zijn toegestaan tot het paneel.';
}
}
}
?>
class User
{
protected $_mysqli;
public function __construct()
{
$this->_mysqli = new Database();
}
public function login($username, $password)
{
$mysqli = $this->_mysqli;
$ip = $_SERVER['REMOTE_ADDR'];
$ipInfo = json_decode(file_get_contents("http://ipinfo.io/$ip"));
$country = $ipInfo->country;
if ($country === "NL" || $country === "BE")
{
$searchUserSql = mysqli_query($mysqli, "SELECT `id`, `wachtwoord` FROM `leden` WHERE `gebruikersnaam`='".mysqli_real_escape_string($username)."'");
if ($searchUserSql && isset(mysqli_num_rows($searchUserSql))) // Hier komt dus een error
{
$userDetails = mysqli_fetch_assoc($searchUserSql);
if (password_verify($password, $userDetails['wachtwoord']))
{
$updateUserAccount = mysqli_query($mysqli, "UPDATE `leden` SET `laatst_online`='".time()."' WHERE `gebruikersnaam`='".mysqli_real_escape_string($username)."'");
$_SESSION['id'] = $userDetails['id'];
echo '1+De ingevulde gegevens zijn goed.';
}
else
{
echo '0+De ingevulde gegevens zijn niet goed.';
}
}
else
{
echo '0+De ingevulde gegevens zijn niet goed.';
}
}
else
{
echo '0+Alleen de landen Nederland en Belgie zijn toegestaan tot het paneel.';
}
}
}
?>
Ik heb alles even aangepast, maar bij mysqli_num_rows($searchForUser); krijg ik een error. Deze error kan ik helaas niet zien, er komt alleen 500 Internal Server Error te staan. Wat is het probleem?
Je weet het verschil tussen beiden inmiddels?
Gewijzigd op 18/03/2017 16:22:49 door - Ariën -
Je weet het verschil tussen beiden inmiddels?"
O oops heb 't door elkaar gehaald ;S
Maar dan wat ik had, was al goed toch?
Gewijzigd op 18/03/2017 16:25:27 door - Rob -
Dennis WhoCares op 18/03/2017 16:21:16:
oops sorry iets teveel weg gelaten :)
http://ipinfo.io/IPADRESHIER/json
http://ipinfo.io/IPADRESHIER/json
Much better!
Houdt wel rekening dat dit geen garantie geeft voor de juiste locaties.
Toevoeging op 18/03/2017 16:25:59:
- Rob - op 18/03/2017 16:23:11:
O oops heb 't door elkaar gehaald ;S
Maar dan wat ik had, was al goed toch?
Maar dan wat ik had, was al goed toch?
Waarom gebruik je niet de OO-variant?
$db->query(.....)
Gewijzigd op 18/03/2017 16:36:15 door - Ariën -