From 0061ef3bbbdd28779261b9894d8e0ca53a5e87ca Mon Sep 17 00:00:00 2001 From: "o.pinke" Date: Mon, 2 May 2022 19:11:22 +0200 Subject: [PATCH] fixed validation #6 --- php/cl_contactform_output.php | 99 ++++++++++++++++++++++++----------- 1 file changed, 68 insertions(+), 31 deletions(-) diff --git a/php/cl_contactform_output.php b/php/cl_contactform_output.php index 6d32e5e..8f8c7b0 100644 --- a/php/cl_contactform_output.php +++ b/php/cl_contactform_output.php @@ -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 ''.mi18n("Es ist ein Fehler aufgetreten!
Bitte versuchen Sie es später noch einmal.").'
'; + echo '' . mi18n("Es ist ein Fehler aufgetreten!
Bitte versuchen Sie es später noch einmal.") . '
'; } } @@ -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); }