captcha
kan iemand mij bertellen/laten zien hoe ik een captcha toepas in dit script?
Quote:
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
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
<?php
include('config.inc.php');
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
$formulier = true;
} else {
$formulier = false;
//controles uitvoeren
if(!ereg("^[A-Za-z0-9]+$",$_POST["username"]) || strlen($_POST["username"]) < 3) {
echo '<b style="color:#FDB839">• De door u gekozen gebruikersnaam is ongeldig.</b><p />';
$_POST["Gebruikersnaam"] = ""; $formulier = true;
}
$result = $mysqli->query("SELECT ID FROM ".$settings['db_gebruikers_table']." WHERE gebruikersnaam LIKE '".$mysqli->real_escape_string($_POST['username'])."'");
if(!empty($_POST["username"]) && $result->num_rows > 0) {
echo '<b style="color:#FDB839">• De door u gekozen gebruikersnaam is al in gebruik.</b><p />';
$_POST["Gebruikersnaam"] = ""; $formulier = true;
}
if(empty($_POST["pass"])) {
echo '<b style="color:#FDB839">• Het door u gekozen password is ongeldig.</b><p />';
$_POST["pass"] = ""; $formulier = true;
}
if(empty($_POST["email"]) || !preg_match('#^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$#i', $_POST["email"])) {
echo '<b style="color:#FDB839">• Uw emailadres is ongeldig.</b>';
$_POST["email"] = ""; $formulier = true;
}
if($formulier) { // Wel of niet verzenden
echo '<br>';
$_POST["pass"] = "";
} else { // Verzenden
$sql = "
INSERT INTO ".$settings['db_gebruikers_table']." (
gebruikersnaam,
wachtwoord,
voornaam,
tussenvoegsel,
achternaam,
emailadres,
ip,
startdatum )
VALUES (
'".$mysqli->real_escape_string(htmlspecialchars($_POST['username']))."',
'".$mysqli->real_escape_string(sha1(htmlspecialchars($_POST['username']).$_POST['pass']))."',
'".$mysqli->real_escape_string(htmlspecialchars($_POST['fname']))."',
'".$mysqli->real_escape_string(htmlspecialchars($_POST['iname']))."',
'".$mysqli->real_escape_string(htmlspecialchars($_POST['lname']))."',
'".$mysqli->real_escape_string(htmlspecialchars($_POST['email']))."',
'".$mysqli->real_escape_string($_SERVER['REMOTE_ADDR'])."',
NOW()
)";
if(!$result = $mysqli->query($sql)) {
trigger_error('Fout in query: '.$mysqli->error);
echo '<br />Er is een fout opgetreden, u bent niet toegevoegd.';
} else {
echo 'U bent succesvol toegevoegd.';
}
}
}
if($formulier) {
echo ' <form method="post" action="'.end(explode('/', $_SERVER["REQUEST_URI"])).'">
<label style="color:#38610B">Username:</label><input type="text" name="username" value="" /><p />
<label style="color:#4B8A08">Password:</label><input type="password" name="pass" value="" /><p />
<label style="color:#38610B">First Name:</label><input type="text" name="fname" value="" /><p />
<label style="color:#38610B">Tussenvoegsel:</label><input type="text" name="iname" value="" /><p />
<label style="color:#4B8A08">Last Name:</label><input type="text" name="lname" value="" /><p />
<label style="color:#38610B">E-mail Address:</label><input type="text" name="email" value="" /><p />
<p><input type="submit" value="Send form" /></p>
</form>
';
}
?>
include('config.inc.php');
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
$formulier = true;
} else {
$formulier = false;
//controles uitvoeren
if(!ereg("^[A-Za-z0-9]+$",$_POST["username"]) || strlen($_POST["username"]) < 3) {
echo '<b style="color:#FDB839">• De door u gekozen gebruikersnaam is ongeldig.</b><p />';
$_POST["Gebruikersnaam"] = ""; $formulier = true;
}
$result = $mysqli->query("SELECT ID FROM ".$settings['db_gebruikers_table']." WHERE gebruikersnaam LIKE '".$mysqli->real_escape_string($_POST['username'])."'");
if(!empty($_POST["username"]) && $result->num_rows > 0) {
echo '<b style="color:#FDB839">• De door u gekozen gebruikersnaam is al in gebruik.</b><p />';
$_POST["Gebruikersnaam"] = ""; $formulier = true;
}
if(empty($_POST["pass"])) {
echo '<b style="color:#FDB839">• Het door u gekozen password is ongeldig.</b><p />';
$_POST["pass"] = ""; $formulier = true;
}
if(empty($_POST["email"]) || !preg_match('#^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$#i', $_POST["email"])) {
echo '<b style="color:#FDB839">• Uw emailadres is ongeldig.</b>';
$_POST["email"] = ""; $formulier = true;
}
if($formulier) { // Wel of niet verzenden
echo '<br>';
$_POST["pass"] = "";
} else { // Verzenden
$sql = "
INSERT INTO ".$settings['db_gebruikers_table']." (
gebruikersnaam,
wachtwoord,
voornaam,
tussenvoegsel,
achternaam,
emailadres,
ip,
startdatum )
VALUES (
'".$mysqli->real_escape_string(htmlspecialchars($_POST['username']))."',
'".$mysqli->real_escape_string(sha1(htmlspecialchars($_POST['username']).$_POST['pass']))."',
'".$mysqli->real_escape_string(htmlspecialchars($_POST['fname']))."',
'".$mysqli->real_escape_string(htmlspecialchars($_POST['iname']))."',
'".$mysqli->real_escape_string(htmlspecialchars($_POST['lname']))."',
'".$mysqli->real_escape_string(htmlspecialchars($_POST['email']))."',
'".$mysqli->real_escape_string($_SERVER['REMOTE_ADDR'])."',
NOW()
)";
if(!$result = $mysqli->query($sql)) {
trigger_error('Fout in query: '.$mysqli->error);
echo '<br />Er is een fout opgetreden, u bent niet toegevoegd.';
} else {
echo 'U bent succesvol toegevoegd.';
}
}
}
if($formulier) {
echo ' <form method="post" action="'.end(explode('/', $_SERVER["REQUEST_URI"])).'">
<label style="color:#38610B">Username:</label><input type="text" name="username" value="" /><p />
<label style="color:#4B8A08">Password:</label><input type="password" name="pass" value="" /><p />
<label style="color:#38610B">First Name:</label><input type="text" name="fname" value="" /><p />
<label style="color:#38610B">Tussenvoegsel:</label><input type="text" name="iname" value="" /><p />
<label style="color:#4B8A08">Last Name:</label><input type="text" name="lname" value="" /><p />
<label style="color:#38610B">E-mail Address:</label><input type="text" name="email" value="" /><p />
<p><input type="submit" value="Send form" /></p>
</form>
';
}
?>
Code (php)
1
2
3
4
5
2
3
4
5
if request-method != post
-> genereer nieuwe captcha code
-> zet code in $_SESSION
else
-> controleer of ingevulde code overeen komt met code in $_SESSION
-> genereer nieuwe captcha code
-> zet code in $_SESSION
else
-> controleer of ingevulde code overeen komt met code in $_SESSION
In je formulier (de html ervan) maak je een extra veld om de captcha in te vullen erbij, en een verwijzing naar een plaatje, dat wordt gegenereerd door captcha.php: <img src="captcha.php">.
In captcha.php dan genereer je met gd een plaatje met de code uit je $_SESSION.
ja maar ik heb geen html formulier. maar een formulier geintegreerd in php (($formulier))
Dat is gewoon html. Dus dan zet je daar de verwijzing naar het plaatje in.
ik heb zelf nu wat gemaakt alleen krijg ik nu en foutmelding die ik niet opgelosd krijg.
fout melding:
Dit heb ik al zelf kunnen doen:
fout melding:
Quote:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at H:\test\basis\registreer.php:203) in H:\test\registration.php on line 68
Dit heb ik al zelf kunnen doen:
Quote:
session_start();
if( isset($_POST['submit'])) {
if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
// Plaats code voor het verwerken van het formulier, bijvoorbeeld de indiening e-mailen, die binnenkomen in een database.
echo 'Bedankt."'.$_POST['message'].'"';
unset($_SESSION['security_code']);
} else {
// als sessie niet lukt
echo 'Sorrie, maar de het door u ingevoerde komt niet overeen met het voorbeeld!';
}
} else {
if($formulier) {
echo ' <form method="post" action="'.end(explode('/', $_SERVER["REQUEST_URI"])).'">
<label style="color:#38610B">Username:</label><input type="text" name="username" value="" /><p />
<label style="color:#4B8A08">Password:</label><input type="password" name="pass" value="" /><p />
<label style="color:#38610B">First Name:</label><input type="text" name="fname" value="" /><p />
<label style="color:#38610B">Tussenvoegsel:</label><input type="text" name="iname" value="" /><p />
<label style="color:#4B8A08">Last Name:</label><input type="text" name="lname" value="" /><p />
<label style="color:#38610B">E-mail Address:</label><input type="text" name="email" value="" /><p />
<img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /><br />
<label for="security_code">Security Code: </label><input id="security_code" name="security_code" type="text" /><br />
<p><input type="submit" value="Send form" /></p>
</form>
';
}
}
?>
if( isset($_POST['submit'])) {
if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
// Plaats code voor het verwerken van het formulier, bijvoorbeeld de indiening e-mailen, die binnenkomen in een database.
echo 'Bedankt."'.$_POST['message'].'"';
unset($_SESSION['security_code']);
} else {
// als sessie niet lukt
echo 'Sorrie, maar de het door u ingevoerde komt niet overeen met het voorbeeld!';
}
} else {
if($formulier) {
echo ' <form method="post" action="'.end(explode('/', $_SERVER["REQUEST_URI"])).'">
<label style="color:#38610B">Username:</label><input type="text" name="username" value="" /><p />
<label style="color:#4B8A08">Password:</label><input type="password" name="pass" value="" /><p />
<label style="color:#38610B">First Name:</label><input type="text" name="fname" value="" /><p />
<label style="color:#38610B">Tussenvoegsel:</label><input type="text" name="iname" value="" /><p />
<label style="color:#4B8A08">Last Name:</label><input type="text" name="lname" value="" /><p />
<label style="color:#38610B">E-mail Address:</label><input type="text" name="email" value="" /><p />
<img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /><br />
<label for="security_code">Security Code: </label><input id="security_code" name="security_code" type="text" /><br />
<p><input type="submit" value="Send form" /></p>
</form>
';
}
}
?>
Gewijzigd op 31/08/2010 14:14:54 door raymond van Os
ik denk dat je ervoor moet zorgen dat er echt niks voor je session_start(); staat,
zet dus
helemaal vanboven in je bestand
zet dus
helemaal vanboven in je bestand
GEPROBEERD MAAR DAN GAAT HET NOG MIS MET DEZELFDE MELDINF ALLEEN NU BOVENAAN IN HET SCRIPT. HEB OOK AL GEPROBEERD SESSION_UNSET; SESSION_DESTROY; OM DE VORIGE SESSIE EERST OPEN TE ZETTEN EN DAARNA TE VERWIJDEREN MAAR HET BLEEF BIJ DEZE FOUTMELDING.
Quote:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at H:\test\basis\registreer.php:203) in H:\test\registration.php on line 68
Blijkbaar heb je in registreer.php op regel 203 een echo statement oid staan dat eerder aangeroepen wordt dan session_start(). Het maakt niet zoveel uit waar session_start() staat, zolang je het maar aanroept voordat je andere output genereert.
Andere output kan een aanroep naar echo, maar ook een spaties of utf8 BOM stukjes e.d. buiten PHP tags zijn.
Andere output kan een aanroep naar echo, maar ook een spaties of utf8 BOM stukjes e.d. buiten PHP tags zijn.
Raymond reniers op 31/08/2010 15:33:41:
GEPROBEERD MAAR DAN GAAT HET NOG MIS MET DEZELFDE MELDINF ALLEEN NU BOVENAAN IN HET SCRIPT. HEB OOK AL GEPROBEERD SESSION_UNSET; SESSION_DESTROY; OM DE VORIGE SESSIE EERST OPEN TE ZETTEN EN DAARNA TE VERWIJDEREN MAAR HET BLEEF BIJ DEZE FOUTMELDING.
Quote:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at H:\test\basis\registreer.php:203) in H:\test\registration.php on line 68
Licht het nu aan mij, of is zij kwaat op PHP en afkeert op de mensen die haar willen helpen??
Maar wat de persoon voor mij zij; haal session_start() weg in de file registration.php en zet hem helemaal bovenaan (er mag zelfs geen spatie voor de < ?php komen te staan) in het bestand registreer.php. Dan zal het lukken
Gewijzigd op 31/08/2010 17:38:49 door Carlo boy
dat bedoelde ik, mss een beetje verkeerd verwoord..
heb even gekeken maar ik heb geen session_start() in mijn registreer.php, in dit bestand include ik alleen registration.php of heeft het te maken met het includen?
Toevoeging op 01/09/2010 08:22:54:
opgelost het lag aan registration.php daar had ik een spatie gedaan wat niet moest.
maar bedankt iedereen.
maar kan iemand mij misschien vertellen het kleine captcha scriptje werkend krijg in het script dat ik nu heb(bovenstaande)en deze: session_start();
Toevoeging op 01/09/2010 08:22:54:
opgelost het lag aan registration.php daar had ik een spatie gedaan wat niet moest.
maar bedankt iedereen.
maar kan iemand mij misschien vertellen het kleine captcha scriptje werkend krijg in het script dat ik nu heb(bovenstaande)en deze: session_start();
Quote:
if( isset($_POST['submit'])) {
if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
// Plaats code voor het verwerken van het formulier, bijvoorbeeld de indiening e-mailen, die binnenkomen in een database.
echo 'Bedankt."'.$_POST['message'].'"';
unset($_SESSION['security_code']);
} else {
// als sessie niet lukt
echo 'Sorrie, maar de het door u ingevoerde komt niet overeen met het voorbeeld!';
}
} else {
if($formulier) {
echo ' <form method="post" action="'.end(explode('/', $_SERVER["REQUEST_URI"])).'">
<label style="color:#38610B">Username:</label><input type="text" name="username" value="" /><p />
<label style="color:#4B8A08">Password:</label><input type="password" name="pass" value="" /><p />
<label style="color:#38610B">First Name:</label><input type="text" name="fname" value="" /><p />
<label style="color:#38610B">Tussenvoegsel:</label><input type="text" name="iname" value="" /><p />
<label style="color:#4B8A08">Last Name:</label><input type="text" name="lname" value="" /><p />
<label style="color:#38610B">E-mail Address:</label><input type="text" name="email" value="" /><p />
<img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /><br />
<label for="security_code">Security Code: </label><input id="security_code" name="security_code" type="text" /><br />
<p><input type="submit" value="Send form" /></p>
</form>
';
}
}
?>
if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
// Plaats code voor het verwerken van het formulier, bijvoorbeeld de indiening e-mailen, die binnenkomen in een database.
echo 'Bedankt."'.$_POST['message'].'"';
unset($_SESSION['security_code']);
} else {
// als sessie niet lukt
echo 'Sorrie, maar de het door u ingevoerde komt niet overeen met het voorbeeld!';
}
} else {
if($formulier) {
echo ' <form method="post" action="'.end(explode('/', $_SERVER["REQUEST_URI"])).'">
<label style="color:#38610B">Username:</label><input type="text" name="username" value="" /><p />
<label style="color:#4B8A08">Password:</label><input type="password" name="pass" value="" /><p />
<label style="color:#38610B">First Name:</label><input type="text" name="fname" value="" /><p />
<label style="color:#38610B">Tussenvoegsel:</label><input type="text" name="iname" value="" /><p />
<label style="color:#4B8A08">Last Name:</label><input type="text" name="lname" value="" /><p />
<label style="color:#38610B">E-mail Address:</label><input type="text" name="email" value="" /><p />
<img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /><br />
<label for="security_code">Security Code: </label><input id="security_code" name="security_code" type="text" /><br />
<p><input type="submit" value="Send form" /></p>
</form>
';
}
}
?>
Krijg je een foutmelding?
nee maar hij geeft niets weer als ik niet dezelfde leters/cijfers intyp uit het captha boxje, ik kan gewoon registreren ook al typ je wat anders dan dat daar staat.
Toevoeging op 01/09/2010 13:53:09:
kan iemand mij hier alstu meehelpen want heb het nodug en zou graag willen dat het werkt
Toevoeging op 01/09/2010 13:53:09:
kan iemand mij hier alstu meehelpen want heb het nodug en zou graag willen dat het werkt




