%PDF- %PDF-
Direktori : /home/nailstv/public_html/de.nails.tv/include/ |
Current File : /home/nailstv/public_html/de.nails.tv/include/Inputvalidator.class.php |
<?php class Inputvalidator { var $isError; var $error; var $message; var $filter; function Inputvalidator() { $this->init(); } function init() { $this->isError = false; $this->error = array(); $this->message = array(); $this->defineMessages(); $this->defineFilters(); } function defineMessages() { $this->message['notValidLoginName'] = "A login név minimum 4, maximum 20 karakter lehet, csak számot és ékezet nélküli kisbetüt tartalmazhat."; $this->message['requiredFieldHasNoValue'] = "Egy szüksédes adat nincs megadva."; $this->message['notUniqueField'] = "A két mező közül csak egy tölthető ki"; } function defineFilters() { $this->filter = array( "email" => "validateEmail", "int" => "validateInteger", "float" => "validateFloat", "stripHtml" => "stripHtml", "login" => "validateLoginName", "required" => "validateIsSet", "date" => "validateDate", "unique" => "validateUnique" ); } function v( $data, $filter, $msg = '' ) { $filter = explode( ',', $filter ); if ( trim( $filter[0] ) == 'required' || !empty($data) ) { $i = 0; foreach ( $filter AS $val ) { $val = trim( $val ); if ( is_array( $msg ) ) { $m = !empty($msg[ $i ]) ? $msg[ $i ] : ''; } else { $m = ''; } switch ( $val ) { case 'email' : $this->validateEmail( $data, $m ); break; case 'stripHtml' : $this->stripHtml( $data ); break; case 'int' : $this->validateInteger( $data, $m ); break; case 'float' : $data = str_replace( ",", ".", $data ); $this->validateFloat( $data, $m ); break; case 'login' : $this->validateLoginName( $data, $m ); break; case 'required' : $this->validateIsSet( $data, $m ); break; case 'date' : $this->validateDate( $data ); break; case 'unique' : $this->validateUnique( $data, $m ); break; } $i ++; } } return $data; } function validateLoginName( $name, $msg = '' ) { if ( empty($name) ) { return $name; } if ( !ereg( "^[a-z0-9]{4,20}$", $name ) ) { if ( empty($msg) ) { $msg = $this->message['notValidLoginName']; } $this->error[] = $msg; $this->isError = true; } return $name; } function stripHtml( $data ) { return htmlspecialchars( strip_tags( $data ) ); } function validateIsSet( $data, $msg = '' ) { $data = trim( $data ); if ( empty($data) ) { if ( empty($msg) ) { $msg = $this->message['requiredFieldHasNoValue']; } $this->error[] = $msg; $this->isError = true; } return; } function validateInteger( $data, $msg, $max = 4294967296 ) { if ( empty($data) ) { return; } if ( !is_numeric( $data ) || intval( $data ) != $data || $data > $max ) { if ( empty($msg) ) { $msg = "'" . $data . "' nem egy egész szám, vagy nagyobb mint " . number_format( $max ); } $this->error[] = $msg; $this->isError = true; return false; } return $data; } function validateFloat( $data, $msg ) { if ( empty($data) ) { return; } if ( !is_numeric( $data ) ) { $this->error[] = $msg; $this->isError = true; return false; } return $data; } function validateEmail( $email, $msg = '', $tryConnect = false ) { if ( empty($email) ) { return $email; } $re = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"; if ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) { if ( empty($msg) ) { $msg = 'Az e-mail cím formátuma nem megfelelő!'; } $this->error[] = $msg; $this->isError = true; } if ( $tryConnect ) { list($username, $domain) = split( "@", $email ); if ( getmxrr( $domain, $MXHost ) ) { $ConnectAddress = $MXHost[0]; } else { $ConnectAddress = $domain; } $connect = fsockopen( $ConnectAddress, 25 ); if ( $connect ) { if ( ereg( "^220", $Out = fgets( $connect, 1024 ) ) ) { fputs( $connect, "HELO $HTTP_HOST\r\n" ); $Out = fgets( $connect, 1024 ); fputs( $connect, "MAIL FROM: <{$email}>\r\n" ); $From = fgets( $connect, 1024 ); fputs( $connect, "RCPT TO: <{$email}>\r\n" ); $To = fgets( $connect, 1024 ); fputs( $connect, "QUIT\r\n" ); fclose( $connect ); if ( !ereg( "^250", $From ) || !ereg( "^250", $To ) ) { $this->error[] = "A(z) '" . $ConnectAddress . "' szerver elutasította a(z) '" . $email . "' címet."; $this->isError = true; } } else { $this->error[] = "A(z) '" . $ConnectAddress . "' szerver nem válaszol."; $this->isError = true; } } else { $this->error[] = "Nem sikerült csatlakozni a(z) '" . $ConnectAddress . "' mail szerverhez."; $this->isError = true; } } return $email; } function validateDate( $date, $required = false, $msg = '' ) // $date: YYYY-MM-DD { $d = explode( '-', $date ); if ( empty($d[0]) || empty($d[1]) || empty($d[2]) ) { if ( $required ) { $this->error[] = $msg; } return; } $date2 = date( "Y-m-d", mktime( 0, 0, 0, $d[1], $d[2], $d[0] ) ); if ( $date != $date2 ) { $this->error[] = "'" . $date . "' nem megfelelő dátum."; return false; } return $date; } function validateUnique( $data, $msg = '' ) { // list($field_1,$field_2) = $data['fields']; $unique_number = 0; foreach($data['fields'] as $fk => $field) { if($data['rec'][$field] != 0) { $unique_number++; } if($unique_number > 1) { if ( empty($msg) ) { $msg = $this->message['notUniqueField']; } $this->error[] = $msg; $this->isError = true; return; } } /* if( (isset($data['rec'][$field_1]) && isset($data['rec'][$field_2])) && ($data['rec'][$field_1] != 0 && $data['rec'][$field_2] != 0) ) { if ( empty($msg) ) { $msg = $this->message['notUniqueField']; } $this->error[] = $msg; $this->isError = true; } */ return; } function addError( $e ) { $this->isError = true; $this->error[] = $e; } function printError( $mode = 'get', $sep = '<br />' ) { if ( !$this->isError ) { return; } $msg = ''; $i = 1; foreach ( $this->error AS $val ) { $msg .= $i . '. ' . $val . $sep; $i ++; } if ( $mode == 'show' ) { print $msg; } else { return $msg; } } } ?>