fixed validation #6

Dieser Commit ist enthalten in:
o.pinke 2022-05-02 19:11:22 +02:00
Ursprung 19fbca2693
Commit 0061ef3bbb

Datei anzeigen

@ -41,16 +41,17 @@ class w3form {
$this->generateEmailMessage();
$oMailer = new PHPMailer();
$oMailer->CharSet = "UTF-8";
$oMailer->AddAddress($this->email['adresses']);
$oMailer->From = $this->email['from']['email'];
$oMailer->FromName = $this->email['from']['name'];
$oMailer->Subject = $this->email['subject'];
$oMailer->Body = $this->email['message'];
if($oMailer->send()) {
if ($oMailer->send()) {
return true;
}
return false;
}
@ -271,10 +272,10 @@ class w3form {
}
private function success() {
if($this->sendEmail()) {
if ($this->sendEmail()) {
echo $this->form['answer'];
} else {
echo '<span style="color:red;">'.mi18n("Es ist ein Fehler aufgetreten!<br>Bitte versuchen Sie es später noch einmal.").'</span>';
echo '<span style="color:red;">' . mi18n("Es ist ein Fehler aufgetreten!<br>Bitte versuchen Sie es später noch einmal.") . '</span>';
}
}
@ -283,7 +284,11 @@ class w3form {
$tmp_name = rtrim($field['name'], '[0]');
preg_match('/\[(\d*)\]/', $field['name'], $matches);
$bEmptyPost = false;
$bIsPostArray = false;
$sPostFieldValue = $_POST[$tmp_name];
if (is_array($_POST[$tmp_name])) {
$bIsPostArray == true;
$sPostFieldValue = $_POST[$tmp_name][$matches[1]];
if (empty($_POST[$tmp_name][$matches[1]])) {
$bEmptyPost = true;
}
@ -295,38 +300,69 @@ class w3form {
return false;
}
// wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurück geben
// wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurückgeben
if ($bEmptyPost) {
return true;
}
// regular expression prüfungen
if (!empty($feld['valid']) && $feld['valid'] == 'textmitumbruch' && !preg_match("/^[ \n\r.,;!?()öäüéàèâêîça-z0-9-]*$", $_POST["{$field['name']}"]))
return false;
if (!empty($field['valid']) && $field['valid'] == 'simpletext' && !preg_match("/^[öäüéàèâêîça-z-]*$/i", $_POST["{$field['name']}"]))
return false;
if (!empty($field['valid']) && $field['valid'] == 'text' && !preg_match("/^[ .,;!?()öäüéàèâêîça-z-]*$/i", $_POST["{$field['name']}"]))
return false;
if (!empty($field['valid']) && $field['valid'] == 'integer' && !preg_match("/^[0-9]*$/", $_POST["{$field['name']}"]))
return false;
if (!empty($field['valid']) && $field['valid'] == 'float' && !preg_match("/^[0-9]*[.]{0,1}[0-9]*$/", $_POST["{$field['name']}"]))
return false;
if (!empty($field['valid']) && $field['valid'] == 'date' && !preg_match("/^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$/", $_POST["{$field['name']}"]))
return false;
if (!empty($field['valid']) && $field['valid'] == 'email' && !preg_match("/^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$/i", $_POST["{$field['name']}"]))
return false;
// grössenbereich bei integer und float prüfen
if (!empty($field['minvalue']) && $_POST["{$field['name']}"] < $field['minvalue'])
return false;
if (!empty($field['maxvalue']) && $_POST["{$field['name']}"] > $field['maxvalue'])
return false;
// längenbereich bei allen typen prüfen
if (!empty($field['minlength']) && strlen($_POST["{$field['name']}"]) < $field['minlength'])
return false;
if (!empty($field['maxlength']) && strlen($_POST["{$field['name']}"]) > $field['maxlength'])
return false;
if (!empty($field['valid'])) {
switch ($field['valid']) {
case 'textmitumbruch':
if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[\n\r,;:\. ÄÖÜäöüß\-\+\$%&\/()=?!\"'\w\d]*$/")))) {
return false;
}
break;
case 'simpletext':
if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[\w]*$/i")))) {
return false;
}
break;
case 'text':
if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[(\d)? ?\w]*$/")))) {
return false;
}
break;
case 'phone':
if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^(\(?([\d \-\)\\+\/\(]+){6,}\)?([ .\-–\/]?)([\d]+))$/")))) {
return false;
}
break;
case 'integer':
if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^\d*$/")))) {
return false;
}
break;
case 'float':
if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[+-]?([0-9]*[.])?[0-9]+$/")))) {
return false;
}
break;
case 'date':
if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2,4}$/")))) {
return false;
}
break;
case 'email':
if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$/")))) {
return false;
}
break;
}
}
// grössenbereich bei integer und float prüfen
if (!empty($field['minvalue']) && $sPostFieldValue < $field['minvalue'])
return false;
if (!empty($field['maxvalue']) && $sPostFieldValue > $field['maxvalue'])
return false;
// längenbereich bei allen typen prüfen
if (!empty($field['minlength']) && strlen($sPostFieldValue) < $field['minlength'])
return false;
if (!empty($field['maxlength']) && strlen($sPostFieldValue) > $field['maxlength'])
return false;
return true;
}
@ -335,6 +371,7 @@ class w3form {
$this->formOutput();
} elseif ($this->formComplete()) {
$this->success();
//$this->formOutput(true);
} else {
$this->formOutput(true);
}