<?php
/**
* Funktion um
* a) ggf. Slashes zu entfernen
* b) htmlentities() auf POST-Parameter anzuwenden
*/
function tidy_post_values()
{
$stack = array();
$args = func_get_args();
while ($idx = array_shift($args)){
if (!isset($_POST[$idx])){
$stack[$idx] = '';
continue;
}
$tmp = trim($_POST[$idx]);
$tmp = get_magic_quotes_gpc()
? stripslashes($tmp)
: $tmp;
$stack[$idx] = htmlentities($tmp);
}
return $stack;
}
/**
* Funktion zur Eingabevalidierung
*
*/
function apply_rules($values, $rules, $msg_tpl = '<p style="color:#cc0000;">%s</p>')
{
$stack = array();
foreach ($rules as $k => $v){
foreach ($v as $rule => $msg){
$success = preg_match($rule, $values[$k]);
if(!$success){
$stack[$k] = sprintf($msg_tpl, $msg);
break;
}
}
}
return $stack;
}
function get_comment_form(&$ok)
#' => 'Mehr hast Du nicht zu sagen?',
'#^.{0,2000}$#s' => 'Der Kommentar sollte nicht länger als 2000 Zeichen sein.',
),
'sender' => array(
'#^.{0,30}$#' => 'Der Name darf maximal 30 Zeichen lang sein.',
'#^$|^.{3,}$#' => 'Der Name sollte länger als 2 Zeichen lang sein.',
),
'email' => array(
'#^([^@]+@[^@]+\.[^@]{2,}|)$#' => 'Bitte überprüfe Deine Email-Adresse.',
),
);
$errors = array();
$submit = '';
if (isset($_POST['GO'])) {
$errors = apply_rules($values, $rules);
$submit = count($errors)
? ''
: '<input type="submit" name="GO" value="Eintragen"/>';
if (count($errors)==0){
$ok = true;
}else{
$ok = false;
}
}
// Fehlermeldungen initialisieren um Notices zu vermeiden
if (!isset($errors['email'])){
$errors['email'] = '';
}
if (!isset($errors['comment'])){
$errors['comment'] = '';
}
if (!isset($errors['sender'])){
$errors['sender'] = '';
}
$form = <<< EOT
<h3>Kommentar eintragen</h3>
<form action="{$_SERVER['REQUEST_URI']}#comments" method="post">
<input type="hidden" name="COMMENTACTION" value="ISSEND"/>
{$errors['comment']}
<textarea name="comment" rows="10" cols="60">{$values['comment']}</textarea>
<fieldset><legend>Name</legend>
{$errors['sender']}
<input type="text" name="sender" value="{$values['sender']}"/>
</fieldset>
<fieldset><legend>Email</legend>
{$errors['email']}
<input type="text" name="email" value="{$values['email']}"/>
</fieldset>
<input type="submit" name="GO" value="Vorschau"/>
$submit
</form>
EOT;
return $form;
}
// MAIN
echo get_comment_form($ok);
?>
Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.