Hallo,
ich verwende gerade das PHP-Formular von 4Webmaster.net.
Ich würde nun gerne das Absenden verhindern, wenn jemand http dort eingibt, um spam zu vermeiden.
Beispiel Formular:
(langer Code ich weiß, aber ich dachte ich poste ihn lieber komplett)
Ich habe es nun mit dem Script von wir prfen auf: bse, bse Wrter (the Badwords) versucht.
dh. ich habe diese Funktion oben eingefügt:
und dann habe ich versucht, die Funktion für das Feld "Text" anzuwenden:
Leider ohne Erfolg, das Formular geht trotzdem raus. Liegt es irgendwie an den Variablen $fieldname, $formmethod, also "check_badwords('text', 'POST')" ?
Oder lassen sich die beiden Scripte gar nicht vereinen?
Was mich irritiert hat, dass das Formular anscheinend schon gefiltert wird. Zumindest lässt sich das Formular mit den Inhalten "arsch" oder "schlampe" nicht abschicken… Ich verstehe gar nicht, an welcher Stelle da der Filter liegt? oder macht das mein Server automatisch?
Ich hoffe ich erschlage euch hiermit nicht, ich weiß ja, dass keine langen Codes erwünscht sind… Aber ich weiß leider nicht weiter! Und ich habe keine Zeit, ein Formular komplett selbst zu machen... Captcha wollte ich eigentlich auch nicht.
Liebe Grüße
Josi
ich verwende gerade das PHP-Formular von 4Webmaster.net.
Ich würde nun gerne das Absenden verhindern, wenn jemand http dort eingibt, um spam zu vermeiden.
Beispiel Formular:
(langer Code ich weiß, aber ich dachte ich poste ihn lieber komplett)
PHP:
<?phperror_reporting(E_ALL);/**************************************************
Formulargenerator v1.0 by 4Webmaster.net
Programmed by Borlabs Website: www.borlabs.de
visit www.4webmaster.net
**************************************************/$error = false;$errors = array();$receiver = '[email protected]';
function check_email ($string) { // RegEx created by Myle Ott, found at regexlib.com return preg_match('/^([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*))$/i', $string);}
function check_onlynumbers ($string) { return preg_match('/^[0-9,.]{1,}$/', $string);}
function check_onlyletters ($string) { return preg_match('/^[a-zA-ZäöüÄÖÜß]{1,}$/', $string);}
function send_email ($subject, $body, $receiver, $html = 1) { if ($html != 1) { $body = str_replace('<br />', "\n", $body); $body = str_replace('<br>', "\n", $body); $body = strip_tags($body); }
$subject = str_replace('\n', '', $subject); $subject = str_replace('\r', '', $subject);
if ($html) { $header = 'MIME-Version: 1.0' . "\n"; $header .= 'Content-type: text/html; charset=iso-8859-15'."\n"; $header .= 'From: '.$receiver.' <'.$receiver.'>'."\n"; } else { $header = 'MIME-Version: 1.0' . "\n"; $header .= 'From: '.$receiver.' <'.$receiver.'>'."\n"; }
if (mail($receiver, $subject, $body, $header)) { return true; } else { return false; }}
function array_stripslashes(&$var) { if(is_string($var)) { $var = stripslashes($var); } else { if(is_array($var)) foreach($var as $key => $value) array_stripslashes($var[$key]); }}
if(get_magic_quotes_gpc()){ array_stripslashes($_GET); array_stripslashes($_POST); array_stripslashes($_REQUEST); array_stripslashes($_COOKIE);}
if (!empty($_POST)) { // Prüfung für das Feld "Name" $errors['Name'] = null; if (empty($_POST['Name'])) { $error = true; $errors['Name'] = ' class="error"'; } if (!check_onlyletters($_POST['Name'])) { $error = true; $errors['Name'] = ' class="error"'; }
// Prüfung für das Feld "text" $errors['text'] = null; if (empty($_POST['text'])) { $error = true; $errors['text'] = ' class="error"'; }
} $_text_Name = (!empty($_POST['Name']) ? htmlspecialchars($_POST['Name'], ENT_QUOTES, 'iso-8859-15') : null);
$_text_text = (!empty($_POST['text']) ? htmlspecialchars($_POST['text'], ENT_QUOTES, 'iso-8859-15') : null);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" /><!-- Formulargenerator v1.0 by 4Webmaster.net
Programmed by Borlabs Website: www.borlabs.de
visit www.4webmaster.net--><title>Test</title><style type="text/css">body { font: 12px Verdana, Tahoma, Arial, Helvetica, sans-serif; color: #444;}
h1, p { margin: 10px; padding: 0px;}
textarea { width: 350px; padding: 2px; font: normal 12px Verdana, sans-serif; border: 1px solid #828790; height: 100px; color: #777;}
input.button { margin: 0; font: bolder 12px Arial, Sans-serif; border: 1px solid #828790; padding: 1px; background: #FFF; color: #CC0000;}
.error_msg { padding: 4px; background-color: #ffeeee; border: 1px dotted #cc0000; margin: 5px 10px 5px 10px; color: #cc0000;}
.error { color: #cc0000; }
fieldset { width: 570px; }
div.formulargenerator-4webmaster label,div.formulargenerator-4webmaster .controlset span { width: 150px; display: block; float: left; text-align: right;}
div.formulargenerator-4webmaster label { margin: 5px; }div.formulargenerator-4webmaster .controlset span { margin: 0px 0px 0px 5px; }div.formulargenerator-4webmaster .controlset label { display: inline; float: none;}
div.formulargenerator-4webmaster .controlset input { margin: 0px 0px 0px 10px; }div.formulargenerator-4webmaster input,div.formulargenerator-4webmaster select,div.formulargenerator-4webmaster textarea { margin: 2px 2px 2px 5px;}
div.formulargenerator-4webmaster div { clear: both; }</style></head><body><?phpif ($error || empty($_POST)) {?><form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'iso-8859-15'); ?>" method="post"><fieldset><legend>Test</legend><div class="formulargenerator-4webmaster"><?php if ($error) { ?><div class="error_msg">Bitte alle mit * markierten Felder ausfüllen.</div><?php } ?><div> <label for="Name"<?php echo !empty($errors['Name']) ? $errors['Name'] : null ; ?>>Name *</label> <input tabindex="1" type="text" id="Name" name="Name" value="<?php echo $_text_Name; ?>" /></div><div> <label for="text"<?php echo !empty($errors['text']) ? $errors['text'] : null ; ?>>text *</label> <input tabindex="2" type="text" id="text" name="text" value="<?php echo $_text_text; ?>" /></div><div style="text-align: center; margin: 5px;"> <input type="submit" value="Absenden" /></div><p style="text-align: center; margin: 0px;"><a style="color: #aaa; font-size: 10px;" href="http://www.4webmaster.net/" title="Webmaster Tools, Scripte, Tutorials, Formulargenerator">Formulargenerator by 4Webmaster.net</a></p></div></fieldset></form><?php} else { $body = ''; $body .= 'Name: '.htmlspecialchars(!empty($_POST['Name']) ? $_POST['Name'] : '', ENT_QUOTES, 'iso-8859-15').'<br>'; $body .= 'text: '.htmlspecialchars(!empty($_POST['text']) ? $_POST['text'] : '', ENT_QUOTES, 'iso-8859-15').'<br>'; if(send_email('Test', $body, $receiver)) { ?> <h1>Test</h1> <p>Vielen Dank für Ihre Nachricht.</p> <? } else { ?> <h1>Test</h1> <p>Das Formular konnte leider nicht abgesendet werden. Bitte versuchen Sie es später noch einmal.</p> <? }}?></body></html>
Ich habe es nun mit dem Script von wir prfen auf: bse, bse Wrter (the Badwords) versucht.
dh. ich habe diese Funktion oben eingefügt:
PHP:
// Funktionfunction check_badwords($fieldname, $formmethod){
$badwordsarray=array('www', 'http');
if($formmethod=="POST"){$feldwert=$_POST[$fieldname];}elseif($formmethod=="GET"){$feldwert=$_GET[$fieldname];}else{return false;}
$wortliste=array();foreach($badwordsarray as $boeseswort){if($boeseswort!=""){$wortliste[]=strtolower($boeseswort);}}
for($st=0, $hochzaehlen=0; count($wortliste)>$st ; $st++){ $pos = strpos(strtolower($feldwert), $wortliste[$st]); if($pos !== false){$hochzaehlen++;}} if($hochzaehlen==0){return $ergebnis=false;} else{return $ergebnis=$hochzaehlen;}}
und dann habe ich versucht, die Funktion für das Feld "Text" anzuwenden:
PHP:
// Prüfung für das Feld "text" $errors['text'] = null; if (empty($_POST['text']) OR check_badwords('text', 'POST') >=1 ) { $error = true; $errors['text'] = ' class="error"'; }
Leider ohne Erfolg, das Formular geht trotzdem raus. Liegt es irgendwie an den Variablen $fieldname, $formmethod, also "check_badwords('text', 'POST')" ?
Oder lassen sich die beiden Scripte gar nicht vereinen?
Was mich irritiert hat, dass das Formular anscheinend schon gefiltert wird. Zumindest lässt sich das Formular mit den Inhalten "arsch" oder "schlampe" nicht abschicken… Ich verstehe gar nicht, an welcher Stelle da der Filter liegt? oder macht das mein Server automatisch?
Ich hoffe ich erschlage euch hiermit nicht, ich weiß ja, dass keine langen Codes erwünscht sind… Aber ich weiß leider nicht weiter! Und ich habe keine Zeit, ein Formular komplett selbst zu machen... Captcha wollte ich eigentlich auch nicht.
Liebe Grüße
Josi