reCaptcha
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
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
<?php
if (!isset($_SESSION)) { session_start(); }
if (isset($_SESSION['login']) && $_SESSION['login'] === true && isset($_SESSION['userid']) && $_SESSION['userid'] != "") {
header('location: loggedin.php');
exit();
}
include "connect.php";
include "functions.php";
$error = "";
if (isset($_POST['login']) || isset($_POST['username']) || isset($_POST['password']) || isset($_POST['g-recaptcha-response'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$captcha= $_POST['g-recaptcha-response'];
if (checkUsername($username) === false) {
$error = "Onjuiste inlogpoging";
}
if (checkPassword($password) === false) {
$error = "Onjuiste inlogpoging";
}
if(!$captcha){
$error = "Please check the the captcha form.";
}
$secure_username = bin2hex(htmlspecialchars($username));
$secure_password = bin2hex(htmlspecialchars($password));
$q_checklogin = mysqli_query($conn, "SELECT id FROM users WHERE username = UNHEX('$secure_username') AND password = UNHEX('$secure_password')");
if (mysqli_num_rows($q_checklogin) === 1) {
$r_checklogin = mysqli_fetch_assoc($q_checklogin);
$_SESSION['userid'] = $r_checklogin['id'];
$_SESSION['login'] = true;
header('location: loggedin.php');
} else {
$error = "Onjuiste inlogpoging";
}
}
?>
if (!isset($_SESSION)) { session_start(); }
if (isset($_SESSION['login']) && $_SESSION['login'] === true && isset($_SESSION['userid']) && $_SESSION['userid'] != "") {
header('location: loggedin.php');
exit();
}
include "connect.php";
include "functions.php";
$error = "";
if (isset($_POST['login']) || isset($_POST['username']) || isset($_POST['password']) || isset($_POST['g-recaptcha-response'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$captcha= $_POST['g-recaptcha-response'];
if (checkUsername($username) === false) {
$error = "Onjuiste inlogpoging";
}
if (checkPassword($password) === false) {
$error = "Onjuiste inlogpoging";
}
if(!$captcha){
$error = "Please check the the captcha form.";
}
$secure_username = bin2hex(htmlspecialchars($username));
$secure_password = bin2hex(htmlspecialchars($password));
$q_checklogin = mysqli_query($conn, "SELECT id FROM users WHERE username = UNHEX('$secure_username') AND password = UNHEX('$secure_password')");
if (mysqli_num_rows($q_checklogin) === 1) {
$r_checklogin = mysqli_fetch_assoc($q_checklogin);
$_SESSION['userid'] = $r_checklogin['id'];
$_SESSION['login'] = true;
header('location: loggedin.php');
} else {
$error = "Onjuiste inlogpoging";
}
}
?>
Ik heb deze code geschreven maar iedere keer als ik wil inloggen logt de website in zonder dat de captcha geverifieerd is, dit niet mij bedoeling. De gebruikersnaam en het wachtwoord moeten kloppen hierna moet de captcha geverifieerd worden en dan pas mag er ingelogd zijn. Hoe krijg ik het voor mekaar om dit te doen?
En de query is niet beveiligd.
b) als het formulier verstuurd is dan vergelijk je de captcha uit de sessie met de captcha in de $_POST array.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
session_start();
if(!isset($_SESSION['captcha']) || trim(strtolower($_SESSION['captcha'])) != trim(strtolower($_POST['captcha'])))
$error = 'Captcha is niet juist';
?>
session_start();
if(!isset($_SESSION['captcha']) || trim(strtolower($_SESSION['captcha'])) != trim(strtolower($_POST['captcha'])))
$error = 'Captcha is niet juist';
?>
Ik raad je sterk aan de wachtwoorden te versleutelen met bcrypt (bij example #2). Je moet hiervoor wel PHP versie 5.5 of hoger hebben draaien.
Gewijzigd op 13/03/2016 15:00:17 door Frank Nietbelangrijk
Waar zouden deze 2 voorbeelden dan in de code komen te staan. Ben een beginner met PHP net een maandje bezig & snap nog niet helemaal hoe & waar alles moet staan
voorbeeld a zet je boven de html van je form
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
session_start();
$capthca = 'AB123';
$_SESSION['captcha'] = $captcha;
?>
<form>
Hier je formfields
</form>
session_start();
$capthca = 'AB123';
$_SESSION['captcha'] = $captcha;
?>
<form>
Hier je formfields
</form>
het tweede voorbeeld zet je in de code die je boven toont
Gewijzigd op 13/03/2016 15:17:45 door Frank Nietbelangrijk
Jaa maar hoe ziet mijn code er dan uit waar moet ik dat deel van jou in mijn code vragen (dat is de vraag nu)
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
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
<?php
// een functie die een willekeurige reeks letters en cijfers maakt
function generateRandomString($length = 10) {
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
session_start();
$error = '';
// als het formulier verstuurd wordt dan is de request in de POST methode.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// validatie van de captcha
if(!isset($_SESSION['captcha']) || trim(strtolower($_SESSION['captcha'])) != trim(strtolower($_POST['captcha']))) {
$error = 'Captcha is niet juist';
}
// HIER KAN NOG MEER VALIDATIE PLAATSVINDEN
// als de validatie geslaagd is sturen we de gebuiker door naar een andere pagina
if($error == '') {
header('Location: homepage.php');
exit;
}
}
// maak een nieuwe captcha code
$_SESSION['captcha'] = generateRandomString(5);
// PAS HIERONDER STARTEN WE MET DE OUTPUT. session_start() en header() zouden anders niet werken!
// DISCLAIMER: GEBRUIK GEEN SVG OF TEXT OM DE CAPTCHA WEER TE GEVEN MAAR GENEREER EEN AFBEELDING.
// HIER IS DE CAPTCHA WEL GEWOON TEKST MAAR DIT IS SLECHTS EEN KORT VOORBEELD!
?>
<!DOCTYPE html>
<html>
<head>
<title>Captcha!</title>
<meta charset="UTF-8">
</head>
<body>
<?php
if(strlen($error))
echo '<p>' . $error . '</p>';
?>
<svg height="30" width="200">
<text x="0" y="15" fill="red"><?php echo $_SESSION['captcha']; ?></text>
</svg>
<form action method="post">
<input type="text" name="captcha" placeholder="vul de captcha code in">
<button>Test!</button>
</form>
</body>
</html>
// een functie die een willekeurige reeks letters en cijfers maakt
function generateRandomString($length = 10) {
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
session_start();
$error = '';
// als het formulier verstuurd wordt dan is de request in de POST methode.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// validatie van de captcha
if(!isset($_SESSION['captcha']) || trim(strtolower($_SESSION['captcha'])) != trim(strtolower($_POST['captcha']))) {
$error = 'Captcha is niet juist';
}
// HIER KAN NOG MEER VALIDATIE PLAATSVINDEN
// als de validatie geslaagd is sturen we de gebuiker door naar een andere pagina
if($error == '') {
header('Location: homepage.php');
exit;
}
}
// maak een nieuwe captcha code
$_SESSION['captcha'] = generateRandomString(5);
// PAS HIERONDER STARTEN WE MET DE OUTPUT. session_start() en header() zouden anders niet werken!
// DISCLAIMER: GEBRUIK GEEN SVG OF TEXT OM DE CAPTCHA WEER TE GEVEN MAAR GENEREER EEN AFBEELDING.
// HIER IS DE CAPTCHA WEL GEWOON TEKST MAAR DIT IS SLECHTS EEN KORT VOORBEELD!
?>
<!DOCTYPE html>
<html>
<head>
<title>Captcha!</title>
<meta charset="UTF-8">
</head>
<body>
<?php
if(strlen($error))
echo '<p>' . $error . '</p>';
?>
<svg height="30" width="200">
<text x="0" y="15" fill="red"><?php echo $_SESSION['captcha']; ?></text>
</svg>
<form action method="post">
<input type="text" name="captcha" placeholder="vul de captcha code in">
<button>Test!</button>
</form>
</body>
</html>
Wat jij me nu geeft is een zelf gemaakte captcha maar ik wil die van google gebruiken zoals die in mijn code boven in het topic ????
Waar? geef eens een linkje?
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
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
<?php
if (!isset($_SESSION)) { session_start(); }
if (isset($_SESSION['login']) && $_SESSION['login'] === true && isset($_SESSION['userid']) && $_SESSION['userid'] != "") {
header('location: loggedin.php');
exit();
}
include "connect.php";
include "functions.php";
$error = "";
if (isset($_POST['login']) || isset($_POST['username']) || isset($_POST['password']) || isset($_POST['g-recaptcha-response'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$captcha= $_POST['g-recaptcha-response'];
if (checkUsername($username) === false) {
$error = "Onjuiste inlogpoging";
}
if (checkPassword($password) === false) {
$error = "Onjuiste inlogpoging";
}
if(!$captcha){
$error = "Please check the the captcha form.";
}
$secure_username = bin2hex(htmlspecialchars($username));
$secure_password = bin2hex(htmlspecialchars($password));
$q_checklogin = mysqli_query($conn, "SELECT id FROM users WHERE username = UNHEX('$secure_username') AND password = UNHEX('$secure_password')");
if (mysqli_num_rows($q_checklogin) === 1) {
$r_checklogin = mysqli_fetch_assoc($q_checklogin);
$_SESSION['userid'] = $r_checklogin['id'];
$_SESSION['login'] = true;
header('location: loggedin.php');
} else {
$error = "Onjuiste inlogpoging";
}
}
?>
if (!isset($_SESSION)) { session_start(); }
if (isset($_SESSION['login']) && $_SESSION['login'] === true && isset($_SESSION['userid']) && $_SESSION['userid'] != "") {
header('location: loggedin.php');
exit();
}
include "connect.php";
include "functions.php";
$error = "";
if (isset($_POST['login']) || isset($_POST['username']) || isset($_POST['password']) || isset($_POST['g-recaptcha-response'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$captcha= $_POST['g-recaptcha-response'];
if (checkUsername($username) === false) {
$error = "Onjuiste inlogpoging";
}
if (checkPassword($password) === false) {
$error = "Onjuiste inlogpoging";
}
if(!$captcha){
$error = "Please check the the captcha form.";
}
$secure_username = bin2hex(htmlspecialchars($username));
$secure_password = bin2hex(htmlspecialchars($password));
$q_checklogin = mysqli_query($conn, "SELECT id FROM users WHERE username = UNHEX('$secure_username') AND password = UNHEX('$secure_password')");
if (mysqli_num_rows($q_checklogin) === 1) {
$r_checklogin = mysqli_fetch_assoc($q_checklogin);
$_SESSION['userid'] = $r_checklogin['id'];
$_SESSION['login'] = true;
header('location: loggedin.php');
} else {
$error = "Onjuiste inlogpoging";
}
}
?>
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="css/stylesheet.css" type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src='https://www.google.com/recaptcha/api.js'></script>
<script src="js/java.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Login</title>
<style>
.error {
color: darkred;
font-weight: bold;
}
</style>
</head>
<body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php">SBRM National Bank</a>
</div>
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav">
<li><a href="index.php">Home</a></li>
<li><a href="#">Particulier</a></li>
<li><a href="#">Persoonlijk</a></li>
<li><a href="#">Priv</a></li>
<li><a href="#">Zakelijk</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="register.php"><span class="glyphicon glyphicon-user"></span> Registeren</a></li>
<li class="active"><a href="login.php"><span class="glyphicon glyphicon-log-in"></span> Inloggen</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid hero-slide">
<div class="row">
<div id="myCarousel" class="carousel slide " data-ride="carousel">
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="images/login.jpg" alt="Ad">
<div class="carousel-caption">
<h3 class="caption">Inloggen</h3>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container padding-top-10">
<div class="panel col-md-6">
<div class="panel-heading "><h5>Inloggen</h5></div>
<div class="panel-body">
<form action="login.php" method="post">
<label for="username" class="control-label">Gebruikersnaam:</label>
<div class="row ">
<div class="col-md-12">
<input type="text" class="form-control" id="username" placeholder="Gebruikersnaam" name="username" value="<?php if (isset($_POST['username'])) { echo $_POST['username']; } ?>" required/>
</div>
</div>
<label for="password" class="control-label">Wachtwoord:</label>
<div class="row ">
<div class="col-md-12">
<input type="password" class="form-control" id="password" placeholder="Wachtwoord" name="password" value="<?php if (isset($_POST['password'])) { echo $_POST['password']; } ?>" required/>
</div>
<!-- Alleen nodig bij registratie, maar je kan hier wel een pincode als extra beveiliging van maken gezien het normaal om geld gaat
<div class="col-md-6">
<input type="password" class="form-control" id="password" placeholder="Herhaal Wachtwoord" name="rpassword" required/>
</div>
-->
<div class="row">
<div class="col-md-8 padding-top-10 ">
<div class="g-recaptcha" data-sitekey="6LcCsBoTAAAAAK72uzyJSrgWwD8xuF6jFIfgFaHX"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-2 padding-top-10">
<input type="submit" name="login" class="btn btn-succes" value="Login">
</div>
</div>
<?php if ($error !== "") { ?>
<div class="row ">
<div class="col-md-12 error">
<?php echo $error; ?>
</div>
</div>
<?php } ?>
<div class="row">
<div class="col-md-12 padding-top-10">
<p class="pleft">Door op <b>login</b> te klikken, gaat u akkoord met de <a class="algemeen" href="#" data-toggle="modal" data-target="#t_and_c_m">Algemene Voorwaarden</a> opgesteld door deze site.</p>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="t_and_c_m" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
<h4 class="modal-title" id="myModalLabel">Algemene Voorwaarden</h4>
</div>
<div class="modal-body">
<p>Deze algemene voorwaarden zijn tot stand gekomen in overleg
tussen de Nederlandse Vereniging van Banken en de Consumentenbond
in het kader van de Cordinatiegroep Zelfreguleringsoverleg
van de Sociaal-Economische Raad en treden in werking
per 1 november 2009. Over overige (product)voorwaarden die
van toepassing kunnen zijn heeft geen overleg plaatsgevonden.
De Consumentenbond behoudt zich het recht tot collectieve
actie voor met betrekking tot dergelijke voorwaarden.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Ik ga akkoord</button>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-sm-3">
<h6>Copyright © 2016</h6>
<ul class="list-unstyled">
<li class="boss">Sander Bakker</li>
<li class="unstyled">Bob Lansbergen</li>
<li class="unstyled">Ronald van den Heuvel</li>
<li class="unstyled">Max Donck</li>
</ul>
</div>
<div class="col-sm-3">
<h6>Over Ons</h6>
<p id="pfont">Dit is een website ontworpen om een banksysteem te simuleren met PHP en mySQL</p>
</div>
<div class="col-sm-2">
<h6>Navigatie</h6>
<ul class="list-unstyled">
<li class="unstyled"><a href="#">Home</a></li>
<li class="unstyled"><a href="#">Particulier</a></li>
<li class="unstyled"><a href="#">Persoonlijk</a></li>
<li class="unstyled"><a href="#">Priv</a></li>
<li class="unstyled"><a href="#">Zakelijk</a></li>
</uL>
</div>
<div class="col-sm-2">
<h6>Contact</h6>
<ul class="list-unstyled">
<li class="unstyled"><a href="#">Google +</a></li>
<li class="unstyled"><a href="#">Facebook</a></li>
<li class="unstyled"><a href="#">Twitter</a></li>
<li class="unstyled"><a href="#">YouTube</a></li>
</uL>
</div>
</div>
</div>
</footer>
</body>
</head>
</html>
<html lang="en">
<head>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="css/stylesheet.css" type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src='https://www.google.com/recaptcha/api.js'></script>
<script src="js/java.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Login</title>
<style>
.error {
color: darkred;
font-weight: bold;
}
</style>
</head>
<body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php">SBRM National Bank</a>
</div>
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav">
<li><a href="index.php">Home</a></li>
<li><a href="#">Particulier</a></li>
<li><a href="#">Persoonlijk</a></li>
<li><a href="#">Priv</a></li>
<li><a href="#">Zakelijk</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="register.php"><span class="glyphicon glyphicon-user"></span> Registeren</a></li>
<li class="active"><a href="login.php"><span class="glyphicon glyphicon-log-in"></span> Inloggen</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid hero-slide">
<div class="row">
<div id="myCarousel" class="carousel slide " data-ride="carousel">
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="images/login.jpg" alt="Ad">
<div class="carousel-caption">
<h3 class="caption">Inloggen</h3>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container padding-top-10">
<div class="panel col-md-6">
<div class="panel-heading "><h5>Inloggen</h5></div>
<div class="panel-body">
<form action="login.php" method="post">
<label for="username" class="control-label">Gebruikersnaam:</label>
<div class="row ">
<div class="col-md-12">
<input type="text" class="form-control" id="username" placeholder="Gebruikersnaam" name="username" value="<?php if (isset($_POST['username'])) { echo $_POST['username']; } ?>" required/>
</div>
</div>
<label for="password" class="control-label">Wachtwoord:</label>
<div class="row ">
<div class="col-md-12">
<input type="password" class="form-control" id="password" placeholder="Wachtwoord" name="password" value="<?php if (isset($_POST['password'])) { echo $_POST['password']; } ?>" required/>
</div>
<!-- Alleen nodig bij registratie, maar je kan hier wel een pincode als extra beveiliging van maken gezien het normaal om geld gaat
<div class="col-md-6">
<input type="password" class="form-control" id="password" placeholder="Herhaal Wachtwoord" name="rpassword" required/>
</div>
-->
<div class="row">
<div class="col-md-8 padding-top-10 ">
<div class="g-recaptcha" data-sitekey="6LcCsBoTAAAAAK72uzyJSrgWwD8xuF6jFIfgFaHX"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-2 padding-top-10">
<input type="submit" name="login" class="btn btn-succes" value="Login">
</div>
</div>
<?php if ($error !== "") { ?>
<div class="row ">
<div class="col-md-12 error">
<?php echo $error; ?>
</div>
</div>
<?php } ?>
<div class="row">
<div class="col-md-12 padding-top-10">
<p class="pleft">Door op <b>login</b> te klikken, gaat u akkoord met de <a class="algemeen" href="#" data-toggle="modal" data-target="#t_and_c_m">Algemene Voorwaarden</a> opgesteld door deze site.</p>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="t_and_c_m" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
<h4 class="modal-title" id="myModalLabel">Algemene Voorwaarden</h4>
</div>
<div class="modal-body">
<p>Deze algemene voorwaarden zijn tot stand gekomen in overleg
tussen de Nederlandse Vereniging van Banken en de Consumentenbond
in het kader van de Cordinatiegroep Zelfreguleringsoverleg
van de Sociaal-Economische Raad en treden in werking
per 1 november 2009. Over overige (product)voorwaarden die
van toepassing kunnen zijn heeft geen overleg plaatsgevonden.
De Consumentenbond behoudt zich het recht tot collectieve
actie voor met betrekking tot dergelijke voorwaarden.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Ik ga akkoord</button>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-sm-3">
<h6>Copyright © 2016</h6>
<ul class="list-unstyled">
<li class="boss">Sander Bakker</li>
<li class="unstyled">Bob Lansbergen</li>
<li class="unstyled">Ronald van den Heuvel</li>
<li class="unstyled">Max Donck</li>
</ul>
</div>
<div class="col-sm-3">
<h6>Over Ons</h6>
<p id="pfont">Dit is een website ontworpen om een banksysteem te simuleren met PHP en mySQL</p>
</div>
<div class="col-sm-2">
<h6>Navigatie</h6>
<ul class="list-unstyled">
<li class="unstyled"><a href="#">Home</a></li>
<li class="unstyled"><a href="#">Particulier</a></li>
<li class="unstyled"><a href="#">Persoonlijk</a></li>
<li class="unstyled"><a href="#">Priv</a></li>
<li class="unstyled"><a href="#">Zakelijk</a></li>
</uL>
</div>
<div class="col-sm-2">
<h6>Contact</h6>
<ul class="list-unstyled">
<li class="unstyled"><a href="#">Google +</a></li>
<li class="unstyled"><a href="#">Facebook</a></li>
<li class="unstyled"><a href="#">Twitter</a></li>
<li class="unstyled"><a href="#">YouTube</a></li>
</uL>
</div>
</div>
</div>
</footer>
</body>
</head>
</html>
Dit is de volledige code die ik gebruik. Hierin is de google reCaptcha terug te vinden binnen een div onder de form class :)
Gewijzigd op 13/03/2016 16:09:08 door Sander Bakker
zet het even tussen [ c o d e ] en [ / c o d e ] maar dan zonder al die spaties. Dan kunnen we het beter lezen.
Gedaan
Toevoeging op 13/03/2016 16:42:39:
Oke voorbeeld aangepast met Recaptcha van google.
- zelf even je eigen site-key en secret-key er in zetten
- werkt alleen met gebruik van een domeinnaam dus niet met 127.0.0.1 of localhost.
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
function checkCaptcha($secret, $captcha) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
'secret=' . $secret . '&response=' . $captcha);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close ($ch);
$response = json_decode($response, TRUE);
if(isset($response['success']) && $response['success'] == 'true')
return true;
return false;
}
session_start();
$key = 'jouw eigen site-key';
$secret = 'jouw eigen secret-key';
$error = '';
// als het formulier verstuurd wordt dan is de request in de POST methode.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(!checkCaptcha($secret, $_POST['g-recaptcha-response']))
$error = 'Ongeldige captcha';
// HIER KAN NOG MEER VALIDATIE PLAATSVINDEN
// als de validatie geslaagd is sturen we de gebuiker door naar een andere pagina
if($error == '') {
// DOE HIER WAT JE MOET DOEN VOOR DE AFHANDELING VAN JE FORMULIER
header('Location: homepage.php');
exit;
}
}
// PAS HIERONDER STARTEN WE MET DE OUTPUT. session_start() en header() zouden anders niet werken!
?>
<!DOCTYPE html>
<html>
<head>
<title>Captcha!</title>
<meta charset="UTF-8">
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
<body>
<?php
if(strlen($error))
echo '<p>' . $error . '</p>';
?>
<form action method="post">
<div class="g-recaptcha" data-sitekey="<?php echo $key; ?>"></div>
<button>Test!</button>
</form>
</body>
</html>
function checkCaptcha($secret, $captcha) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
'secret=' . $secret . '&response=' . $captcha);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close ($ch);
$response = json_decode($response, TRUE);
if(isset($response['success']) && $response['success'] == 'true')
return true;
return false;
}
session_start();
$key = 'jouw eigen site-key';
$secret = 'jouw eigen secret-key';
$error = '';
// als het formulier verstuurd wordt dan is de request in de POST methode.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(!checkCaptcha($secret, $_POST['g-recaptcha-response']))
$error = 'Ongeldige captcha';
// HIER KAN NOG MEER VALIDATIE PLAATSVINDEN
// als de validatie geslaagd is sturen we de gebuiker door naar een andere pagina
if($error == '') {
// DOE HIER WAT JE MOET DOEN VOOR DE AFHANDELING VAN JE FORMULIER
header('Location: homepage.php');
exit;
}
}
// PAS HIERONDER STARTEN WE MET DE OUTPUT. session_start() en header() zouden anders niet werken!
?>
<!DOCTYPE html>
<html>
<head>
<title>Captcha!</title>
<meta charset="UTF-8">
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
<body>
<?php
if(strlen($error))
echo '<p>' . $error . '</p>';
?>
<form action method="post">
<div class="g-recaptcha" data-sitekey="<?php echo $key; ?>"></div>
<button>Test!</button>
</form>
</body>
</html>
Gewijzigd op 13/03/2016 16:58:08 door Frank Nietbelangrijk
Sander Bakker op 13/03/2016 15:04:30:
Ben een beginner met PHP net een maandje bezig & snap nog niet helemaal hoe & waar alles moet staan
Wellicht is een loginsysteem waarbij je communiceert met een externe dienst ter verificatie niet de beste plaats om te starten met PHP. Da's toch een beetje binnenkomen via de zijdeur.
@Thomas, maar het kan geen kwaad om te profiteren van een goed algoritme van Google.
Indien je je eigen loginmechanisme schrijft -zelfs, en mogelijk te meer, wanneer je gebruik maakt van hulpstukken- is het zaak dat je snapt wat je doet.