Anti spam in formpje wil niet werken
Maar met anti-spam heb ik nog problemen. Ik heb een GDlib plaatje dinges uit een ander script gehaald maar het wil niet echt werken (test maar eens maar niet overdreven vaak ;-)).
http://dsorganize.com/preview/index.php?location=suggestions
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
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
$cSpam = 3; // Anti Spam, X amount of minutes
$r<?
$randcode = mt_rand(100000, 999999);
$randcodesec = base64_encode($randcode);
if(!empty($_POST['send']))
{ // Er is op de knop 'verstuur e-mail' gedrukt...
$pError = ''; // Een begin met de errors als die er zijn
$pI = 0; // Deze telt het aantal errors.
if(strlen($_POST['name']) < 2)
{ $pError .= '- Please fill in your name<br />'; $pI++; }
if(strlen($_POST['email']) < 6 || !ereg('@',$_POST['email']) || !ereg('.',$_POST['email']))
{ $pError .= '- Please fill in your Email address<br />'; $pI++; }
if(strlen($_POST['suggestion']) < 3)
{ $pError .= '- Please fill in a suggestion<br />'; $pI++; }
if(strlen($_POST['explanation']) < 10)
{ $pError .= '- Please enter a explanation<br />'; $pI++; }
if($_POST['userSecurityCode'] != base64_decode($_POST['SecurityCode']) && $notcomplete != "1")
{ $pError .= '- Wrong security code<br />'; $pI++;; }
if(!empty($pError))
{ // Als er dan toch errors zijn..
echo ($pI == 1) ? '<p class=\"red\">SUGGESTION NOT SUBMITTED</p>' : '<p class=\"red\">SUGGESTION NOT SUBMITTED</p>'; // even kijken of het meervoud of enkelvoud is.
echo $pError; // echoën van de error(s)
}
else
{
$date = date("Y-m-d");
$time = date("H:i:s");
$insert = "INSERT INTO DSO_suggestions (id, name, email, suggestion, explanation, status, date) VALUES ('', '".$_POST['name']."', '".$_POST['email']."', '".$_POST['suggestion']."', '".$_POST['explanation']."', 'new', '".$date."')";
mysql_query($insert)or die(mysql_error());
echo "<p class=\"red\">SUGGESTION SUCCESFULLY SUBMITTED!</p>";
setcookie('suggestions',1,time()+3*60);
$tijd = time();
$insert2 = "INSERT INTO DSO_suggestions_flood (id, ip, time) VALUES ('', '".$ip."', '".$time."')";
mysql_query($insert2)or die(mysql_error());
$pShow = true; // formulier wordt niet weer getoond
}
}
// Kijken of er een waarde moet worden gegeven aan velden...
$pName = (isset($_POST['name'])) ? $_POST['name'] : '';
$pEmail = (isset($_POST['email'])) ? $_POST['email'] : '';
$pSuggestion = (isset($_POST['suggestion'])) ? $_POST['suggestion'] : '';
$pExplanation = (isset($_POST['explanation'])) ? $_POST['explanation'] : '';
// kijken of het cookie bestaat, zoja dan wordt het formulier niet getoond.
if(isset($_COOKIE['suggestions']))
{ $pShow = true; echo '<p>You can only submit a suggestion once per 3 minutes.</p>'; }
if(!isset($pShow))
{ // het formulier als $pShow niet bestaat.
?>
<form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
<div class="contact_item">Name</div>
<input class="contact_input" type="text" name="name" size="20" value="<?= $pName; ?>" />
<div class="contact_item">Email</div>
<input class="contact_input" type="text" name="email" size="20" value="<?= $pEmail; ?>" />
<div class="contact_item">Suggestion</div>
<input class="contact_input" type="text" name="suggestion" size="20" value="<?= $pSuggestion; ?>" />
<div class="contact_item">Explanation</div>
<textarea class="contact_input" name="explanation" cols="40" rows="10"><?= $pExplanation; ?></textarea>
<div class="contact_item">Security code (Anti-spam)</div>
<img src="locations/gd.php?randcode=<?php echo $randcodesec; ?>" alt="Security Code" /> <input type="text" name="userSecurityCode" /><input type="hidden" name="SecurityCode" value="<?php echo $randcodesec; ?>" />
<div class="contact_item"> </div>
<input class="contact_input" type="submit" value="Submit suggestion" name="send" /> <input class="contact_input" type="reset" value="Reset fields" />
</form>
$r<?
$randcode = mt_rand(100000, 999999);
$randcodesec = base64_encode($randcode);
if(!empty($_POST['send']))
{ // Er is op de knop 'verstuur e-mail' gedrukt...
$pError = ''; // Een begin met de errors als die er zijn
$pI = 0; // Deze telt het aantal errors.
if(strlen($_POST['name']) < 2)
{ $pError .= '- Please fill in your name<br />'; $pI++; }
if(strlen($_POST['email']) < 6 || !ereg('@',$_POST['email']) || !ereg('.',$_POST['email']))
{ $pError .= '- Please fill in your Email address<br />'; $pI++; }
if(strlen($_POST['suggestion']) < 3)
{ $pError .= '- Please fill in a suggestion<br />'; $pI++; }
if(strlen($_POST['explanation']) < 10)
{ $pError .= '- Please enter a explanation<br />'; $pI++; }
if($_POST['userSecurityCode'] != base64_decode($_POST['SecurityCode']) && $notcomplete != "1")
{ $pError .= '- Wrong security code<br />'; $pI++;; }
if(!empty($pError))
{ // Als er dan toch errors zijn..
echo ($pI == 1) ? '<p class=\"red\">SUGGESTION NOT SUBMITTED</p>' : '<p class=\"red\">SUGGESTION NOT SUBMITTED</p>'; // even kijken of het meervoud of enkelvoud is.
echo $pError; // echoën van de error(s)
}
else
{
$date = date("Y-m-d");
$time = date("H:i:s");
$insert = "INSERT INTO DSO_suggestions (id, name, email, suggestion, explanation, status, date) VALUES ('', '".$_POST['name']."', '".$_POST['email']."', '".$_POST['suggestion']."', '".$_POST['explanation']."', 'new', '".$date."')";
mysql_query($insert)or die(mysql_error());
echo "<p class=\"red\">SUGGESTION SUCCESFULLY SUBMITTED!</p>";
setcookie('suggestions',1,time()+3*60);
$tijd = time();
$insert2 = "INSERT INTO DSO_suggestions_flood (id, ip, time) VALUES ('', '".$ip."', '".$time."')";
mysql_query($insert2)or die(mysql_error());
$pShow = true; // formulier wordt niet weer getoond
}
}
// Kijken of er een waarde moet worden gegeven aan velden...
$pName = (isset($_POST['name'])) ? $_POST['name'] : '';
$pEmail = (isset($_POST['email'])) ? $_POST['email'] : '';
$pSuggestion = (isset($_POST['suggestion'])) ? $_POST['suggestion'] : '';
$pExplanation = (isset($_POST['explanation'])) ? $_POST['explanation'] : '';
// kijken of het cookie bestaat, zoja dan wordt het formulier niet getoond.
if(isset($_COOKIE['suggestions']))
{ $pShow = true; echo '<p>You can only submit a suggestion once per 3 minutes.</p>'; }
if(!isset($pShow))
{ // het formulier als $pShow niet bestaat.
?>
<form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
<div class="contact_item">Name</div>
<input class="contact_input" type="text" name="name" size="20" value="<?= $pName; ?>" />
<div class="contact_item">Email</div>
<input class="contact_input" type="text" name="email" size="20" value="<?= $pEmail; ?>" />
<div class="contact_item">Suggestion</div>
<input class="contact_input" type="text" name="suggestion" size="20" value="<?= $pSuggestion; ?>" />
<div class="contact_item">Explanation</div>
<textarea class="contact_input" name="explanation" cols="40" rows="10"><?= $pExplanation; ?></textarea>
<div class="contact_item">Security code (Anti-spam)</div>
<img src="locations/gd.php?randcode=<?php echo $randcodesec; ?>" alt="Security Code" /> <input type="text" name="userSecurityCode" /><input type="hidden" name="SecurityCode" value="<?php echo $randcodesec; ?>" />
<div class="contact_item"> </div>
<input class="contact_input" type="submit" value="Submit suggestion" name="send" /> <input class="contact_input" type="reset" value="Reset fields" />
</form>
Gewijzigd op 01/01/1970 01:00:00 door Richard
voeg even code tags toe, en kijk is naar mijn anti-spam script ;-)
Code text toegevoegd, misschien eerst even kijken of we dit kunnen oplossen? :) (probeer daarna jouw anti-flood script)
Wat is het probleem nu precies? Ik kan wel berichten toevoegen, ik moet alles invullen en alleen met de juiste securitycode wordt mijn item toegevoegd (alleen zit daar geen logische volgorde in ofzo)
als hij is toegevoegd en je drukt op f5 (of honderd x op f5) wordt hij gewoon weer toegevoegd
dus gebruik mijn anti-flooid script
ANti flood dus en niet je captcha?
idd
Die antiflood wil niet werken in een formulier van mij.. je kan nog steeds op f5 drukken en ik krijg dan tig emails :/
Maak een veld of een combinatie van velden in je DB UNIQUE. Dan regelt MySQL het voor je.