Wie macht ihr das immer mit euren Formularen?
Habt ihr dafür eine Klasse und wie sieht sie denn aus und wie funktioniert sie?
Also es muß ja jedesmal geprüft werden,
wenn das Formular ankommt und denn muß ja auch immer das jeweilige Feld gekennzeichnet werden, welches Feld falsch war.
Ich habe mir erstmal eine kleine Klasse geschrieben und. Erstmal nur mit einem input Feld und einem submit Feld zum testen.
Die 2 Dateien....
class:
Testseite
Habt ihr dafür eine Klasse und wie sieht sie denn aus und wie funktioniert sie?
Also es muß ja jedesmal geprüft werden,
wenn das Formular ankommt und denn muß ja auch immer das jeweilige Feld gekennzeichnet werden, welches Feld falsch war.
Ich habe mir erstmal eine kleine Klasse geschrieben und. Erstmal nur mit einem input Feld und einem submit Feld zum testen.
Die 2 Dateien....
class:
PHP-Code:
<?php
/**
*
* @version 1.0
* @package form
*/
class form
{
/**
* @access privat
* @var int (Fehler die auftreten werden hier intern gezählt)
*/
var $_fehler = 0;
/**
* @access privat
* @var array (Fehler die auftreten werden hier intern gezählt)
*/
var $_elemente = array(); // Gesendete Elemente werden gezählt und der Name der einzelnen Elemente würd gespeichert
/**
* @access privat
* @var array (Bei mehreren Submit Knöpfen muß mindestens einer übertragen werden, ansonsten Fehlermeldung)
*/
var $_submit = array();
/**
* @access privat
* @var string
*/
var $_method = "";
/**
* @access public
* @param string (post, data, get)
* @return string
*/
function formstart($p)
{
switch($p) {
case'post' : $this->_method = $_POST;
return "<form name=\"form\" style=\"margin:0px; \" action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">";
break;
case'data' : $this->_method = $_POST;
return "<form style=\"margin:0px;\" action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\" enctype=\"multipart/form-data\">";
break;
case'get' : $this->_method = $_GET;
return "<form name=\"form\" style=\"margin:0px;\" action=\"".$_SERVER['PHP_SELF']."\" method=\"GET\">";
break;
}
}
/**
* @access public
* @param array
* @return string
*/
function input(&$d) {
$d['name'] = isset($d['name']) ? $d['name'] : "input";
$d['true'] = isset($d['true']) ? $d['true'] : "style=\"font-size: 11px; width:120;\"";
$d['false'] = isset($d['false']) ? $d['false'] : "style=\"font-size: 11px; width:120; border:2px solid red; background-color:#FFE8E8;\"";
$d['maxlength'] = isset($d['maxlength']) ? $d['maxlength'] : 30; // Mehr Zeichen können nicht in das Feld eingetragen werden
$d['php_min'] = isset($d['php_min']) ? $d['php_min'] : 1; // Weniger Zeichen gelten als Fehler
$d['php_max'] = isset($d['php_max']) ? $d['php_max'] : 30; // Mehr Zeichn gelten als Fehler
$d['preg_match'] = isset($d['preg_match']) ? $d['preg_match'] : "/´|\?|\+|&|%|\^|\||!|:|\\$|;|<|>|\\\\|{|}|[|]|°|#|~|§/"; // Wenn es zutrifft, dann erfolgt Fehlermeldung
$this->_elemente[] = $d['name'];
$v = isset($this->_method[$d['name']]) ? $this->_method[$d['name']] : "";
$p = count($this->_method) != 0 ? true : false;
if ($p)
$c = preg_match($d['preg_match'], $v) || strlen($v) < $d['php_min'] || strlen($v) > $d['php_max'] ? false : true;
else
$c = (strlen($v) < $d['php_min'] || strlen($v) > $d['php_max']) && $p ? false : true;
if (!$c) $this->_fehler++;
return "<input type=text name=".$d['name'].($c ? " ".$d['true'] : " ".$d['false']).(isset($this->_method[$d['name']]) ? " value=\"".$this->_method[$d['name']]."\"" : "")." maxlength=".$d['maxlength'].">";
}
/**
* @access public
* @param string
* @param string
* @return string
*/
function submit($nameundvalue) {
$this->_submit[] = $nameundvalue;
return "<input type=\"submit\" style=\"font-size: 11px;\" name=\"".$nameundvalue."\" value=\"".$nameundvalue."\">";
}
/**
* @access public
* @return string
*/
function formende() {
return "</form>";
}
/**
* @access public
* @return bool
*/
function check() {
$key_method = array_keys($this->_elemente);
$anzahl_elemente = count($this->_elemente);
for ($i = 0; $i < $anzahl_elemente; $i++)
if (isset($this->_elemente[$i]) && !isset($this->_method[$this->_elemente[$i]])) return false;
if (count($this->_submit) == 0) return false;
if ($this->_fehler != 0) return false; # Fehler aufgetreten
if (count($_POST) - count($this->_elemente) != 1) return false;
$key_submit = array_keys($this->_submit);
$anzahl_submit = count($this->_submit);
$submit = 0;
for ($i = 0; $i < $anzahl_submit; $i++)
if (isset($this->_submit[$i]) && isset($this->_method[$this->_submit[$i]])) $submit = 1;
if ($submit != 1) return false;
return true;
}
/**
* @access public
* @return string
*/
function fehler()
{
if ($this->_fehler == 0) return "";
if ($this->_fehler == 1) return "Es trat 1 Fehler auf.";
if ($this->_fehler > 1) return sprintf('Es traten %s Fehler auf.', $this->_fehler);
}
}
?>
PHP-Code:
<?php
include('form.inc.php');
$oform = new form;
$formstart = $oform->formstart('post');
$daten['name'] = "user";
$input = $oform->input($daten);
$submit = $oform->submit('login', 'login');
$formende = $oform->formende();
$fehler = "";
if ($oform->check()) {
echo "Es wurde alles geprüft. Speichern und wegschicken.";
} else {
$fehler = $oform->fehler();
}
?>
<html>
<head>
</head>
<body>
<?php
echo "<p>".$fehler."</p>";
echo $formstart;
echo $input."<br>";
echo $submit;
echo $formende;
?>
</body>
</html>
Kommentar