%PDF- %PDF-
Direktori : /home/nailstv/public_html/include/ |
Current File : /home/nailstv/public_html/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."; } function defineFilters() { $this->filter = array( "email" => "validateEmail", "int" => "validateInteger", "float" => "validateFloat", "stripHtml" => "stripHtml", "login" => "validateLoginName", "required" => "validateIsSet", "date" => "validateDate" ); } 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; } $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(!eregi($re, $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 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; } } } ?>