Commit ccada8aa by meier

mcValidator klasse hinzugefügt

1 parent bc356bfb
......@@ -59,6 +59,8 @@ require_once $__PATH_to_mcClasses . 'class_mcFPDF.inc.php';
require_once $__PATH_to_mcClasses . 'class_mcLanguage.inc.php';
require_once $__PATH_to_mcClasses . 'finance/class_mcZinsmethoden.inc.php';
require_once $__PATH_to_mcClasses . 'validation/class_mcValidator.inc.php';
/**
* mcPUIX - database - userinterface
*/
......@@ -68,5 +70,4 @@ require_once $__PATH_to_mcClasses . 'mcPUIX/class_mcPUIX_CONFIG.inc.php';
require_once $__PATH_to_mcClasses . 'mcPUIX/class_mcPUIX_DOM.inc.php';
require_once $__PATH_to_mcClasses . 'mcPUIX/class_Converter.inc.php';
?>
\ No newline at end of file
<?php
/**
* @filesource class_mcValidator.inc.php
*
* @category losp
* @copyright Copyright by mensch.coop e.G. 2011
* @mailto dev [at] mensch.coop
* @link http://mensch.coop
*/
class mcValidator {
const VALIDATOR_TYPE_EMAIL = 'email';
const VALIDATOR_TYPE_URL = 'url';
const VALIDATOR_TYPE_SINGELTONNAME = 'singeltonName';
const VALIDATOR_TYPE_PHONE = 'singeltonName';
const VALIDATOR_TYPE_GERPLZ = 'gerPlz';
const VALIDATOR_TYPE_YOUTUBEID = 'youtubeID';
const VALIDATOR_TYPE_VIMEOID = 'vimeoID';
private static $regExpArray = array(
self::VALIDATOR_TYPE_URL => array(
'regExp' => '/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/',
'match' => true
),
self::VALIDATOR_TYPE_SINGELTONNAME => array(
'regExp' => '/[^A-Za-z0-9\-]/',
'match' => false
),
self::VALIDATOR_TYPE_PHONE => array(
'regExp' => '/[^-\s\d.\(\)\/+]/',
'match' => false
),
self::VALIDATOR_TYPE_GERPLZ => array(
'regExp' => '/\d{5}$/',
'match' => true
),
self::VALIDATOR_TYPE_YOUTUBEID => array(
'regExp' => '/[^A-Za-z0-9\-\_]/',
'match' => false
),
self::VALIDATOR_TYPE_VIMEOID => array(
'regExp' => '/[\D]/',
'match' => false
)
);
/**
* Attention: function returns true if $param_type is not const of VALIDATOR_TYPE_*
*
* @param String $param_value
* @param String $param_type - the regexpression-type which should be used
* @param boolean $param_allowNoValue - default false, allow blank value
* @param boolean $param_utf8 - default true, $param_value format is utf8
*
* @return boolean
*/
public static function checkValue($param_value, $param_type, $param_allowNoValue = false, $param_utf8 = true){
if($param_type == self::VALIDATOR_TYPE_EMAIL){
return self::checkEmail($param_value, $param_allowNoValue);
}
$var_value = trim($param_value);
if(!isset($var_value) || is_null($var_value) || empty($var_value) || $var_value === '') {
return $param_allowNoValue;
}
else{
$var_regExp = '';
$var_match = true;
if($param_type){
switch($param_type){
case self::VALIDATOR_TYPE_EMAIL : return self::checkEmail($param_value, $param_allowNoValue);
default :
if(array_key_exists($param_type,self::$regExpArray)){
$var_regExp = self::$regExpArray[$param_type]['regExp'];
$var_match = self::$regExpArray[$param_type]['match'];
}
else{
return true;
}
break;
}
}
if($param_utf8){
$var_regExp +='u';
}
$tmp_return = preg_match($param_value,$var_regExp);
if(!$var_match){
return !$tmp_return;
}else{
return $tmp_return;
}
}
return true;
}
/**
* checks if a String is a valid email address
*
* @param $param_email
* @param boolean $param_allowNoValue - default false, allow blank value
* @return boolean
*/
public static function checkEmail($param_email,$param_allowNoValue = false) {
function valid_dot_pos($email) {
$str_len = strlen($email);
for($i=0; $i<$str_len; $i++) {
$current_element = $email[$i];
if($current_element == "." && ($email[$i+1] == ".")) {
return false;
break;
}
else {
}
}
return true;
}
function valid_local_part($local_part) {
if(preg_match("/[^a-zA-Z0-9-_ß@.!#$%&'*\/+=?^`{\|}~]/",$local_part)) {
return false;
}
else {
return true;
}
}
function valid_domain_part($domain_part) {
if(preg_match("/[^a-zA-Z0-9-_ß@#\[\].]/", $domain_part)) {
return false;
}
elseif(preg_match("/[@]/", $domain_part) && preg_match("/[#]/", $domain_part)) {
return false;
}
elseif(preg_match("/[\[]/", $domain_part) || preg_match("/[\]]/", $domain_part)) {
$dot_pos = strrpos($domain_part, ".");
if(($dot_pos < strrpos($domain_part, "]")) || (strrpos($domain_part, "]") < strrpos($domain_part, "["))) {
return true;
}
elseif(preg_match("/[^0-9.]/", $domain_part)) {
return false;
}
else {
return false;
}
}
else {
return true;
}
}
// trim() the entered E-Mail
$str_trimmed = trim($param_email);
// find the @ position
$at_pos = strrpos($str_trimmed, "@");
// find the . position
$dot_pos = strrpos($str_trimmed, ".");
// this will cut the local part and return it in $local_part
$local_part = substr($str_trimmed, 0, $at_pos);
// this will cut the domain part and return it in $domain_part
$domain_part = substr($str_trimmed, $at_pos);
if(!isset($str_trimmed) || is_null($str_trimmed) || empty($str_trimmed) || $str_trimmed == "") {
return $param_allowNoValue;
}
elseif(!valid_local_part($local_part)) {
return false;
}
elseif(!valid_domain_part($domain_part)) {
return false;
}
elseif($at_pos > $dot_pos) {
return false;
}
elseif(!valid_local_part($local_part)) {
return false;
}
elseif(($str_trimmed[$at_pos + 1]) == ".") {
return false;
}
elseif(!preg_match("/[(@)]/", $str_trimmed) || !preg_match("/[(.)]/", $str_trimmed)) {
return false;
}
else {
return true;
}
}
}
?>
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!