captcha
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.
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
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
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..
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?
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