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(); $this->generateEmailMessage();
$oMailer = new PHPMailer(); $oMailer = new PHPMailer();
$oMailer->CharSet = "UTF-8";
$oMailer->AddAddress($this->email['adresses']); $oMailer->AddAddress($this->email['adresses']);
$oMailer->From = $this->email['from']['email']; $oMailer->From = $this->email['from']['email'];
$oMailer->FromName = $this->email['from']['name']; $oMailer->FromName = $this->email['from']['name'];
$oMailer->Subject = $this->email['subject']; $oMailer->Subject = $this->email['subject'];
$oMailer->Body = $this->email['message']; $oMailer->Body = $this->email['message'];
if($oMailer->send()) { if ($oMailer->send()) {
return true; return true;
} }
return false; return false;
} }
@ -271,10 +272,10 @@ class w3form {
} }
private function success() { private function success() {
if($this->sendEmail()) { if ($this->sendEmail()) {
echo $this->form['answer']; echo $this->form['answer'];
} else { } 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]'); $tmp_name = rtrim($field['name'], '[0]');
preg_match('/\[(\d*)\]/', $field['name'], $matches); preg_match('/\[(\d*)\]/', $field['name'], $matches);
$bEmptyPost = false; $bEmptyPost = false;
$bIsPostArray = false;
$sPostFieldValue = $_POST[$tmp_name];
if (is_array($_POST[$tmp_name])) { if (is_array($_POST[$tmp_name])) {
$bIsPostArray == true;
$sPostFieldValue = $_POST[$tmp_name][$matches[1]];
if (empty($_POST[$tmp_name][$matches[1]])) { if (empty($_POST[$tmp_name][$matches[1]])) {
$bEmptyPost = true; $bEmptyPost = true;
} }
@ -295,38 +300,69 @@ class w3form {
return false; 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) { if ($bEmptyPost) {
return true; return true;
} }
// regular expression prüfungen // regular expression prüfungen
if (!empty($feld['valid']) && $feld['valid'] == 'textmitumbruch' && !preg_match("/^[ \n\r.,;!?()öäüéàèâêîça-z0-9-]*$", $_POST["{$field['name']}"])) if (!empty($field['valid'])) {
return false; switch ($field['valid']) {
if (!empty($field['valid']) && $field['valid'] == 'simpletext' && !preg_match("/^[öäüéàèâêîça-z-]*$/i", $_POST["{$field['name']}"])) case 'textmitumbruch':
return false; if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[\n\r,;:\. ÄÖÜäöüß\-\+\$%&\/()=?!\"'\w\d]*$/")))) {
if (!empty($field['valid']) && $field['valid'] == 'text' && !preg_match("/^[ .,;!?()öäüéàèâêîça-z-]*$/i", $_POST["{$field['name']}"])) return false;
return false; }
if (!empty($field['valid']) && $field['valid'] == 'integer' && !preg_match("/^[0-9]*$/", $_POST["{$field['name']}"])) break;
return false; case 'simpletext':
if (!empty($field['valid']) && $field['valid'] == 'float' && !preg_match("/^[0-9]*[.]{0,1}[0-9]*$/", $_POST["{$field['name']}"])) if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[\w]*$/i")))) {
return false; 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; break;
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']}"])) case 'text':
return false; if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[(\d)? ?\w]*$/")))) {
// grössenbereich bei integer und float prüfen return false;
if (!empty($field['minvalue']) && $_POST["{$field['name']}"] < $field['minvalue']) }
return false; break;
if (!empty($field['maxvalue']) && $_POST["{$field['name']}"] > $field['maxvalue']) case 'phone':
return false; if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^(\(?([\d \-\)\\+\/\(]+){6,}\)?([ .\-–\/]?)([\d]+))$/")))) {
return false;
// längenbereich bei allen typen prüfen }
if (!empty($field['minlength']) && strlen($_POST["{$field['name']}"]) < $field['minlength']) break;
return false; case 'integer':
if (!empty($field['maxlength']) && strlen($_POST["{$field['name']}"]) > $field['maxlength']) if (!filter_var($sPostFieldValue, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^\d*$/")))) {
return false; 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; return true;
} }
@ -335,6 +371,7 @@ class w3form {
$this->formOutput(); $this->formOutput();
} elseif ($this->formComplete()) { } elseif ($this->formComplete()) {
$this->success(); $this->success();
//$this->formOutput(true);
} else { } else {
$this->formOutput(true); $this->formOutput(true);
} }