26 ottobre 2011
<?php /* Author: Zordan Marco <marco[at]customsoft.it> Version: 1.00 The latest version of ContrDati can be obtained from: Metodi: Booleano($sDato,$sDefault=true) : Restituisce valore booleano CodiceFiscale($sDato) : Restituisce array($nErrore,$sDato). Dominio($sDato,$nLun=100) : Restituisce il dominio o "" se non è corretto Email($sDato,$nLun=100) : Restituisce l'email o -1 (non è email) o -2 (non esiste dominio) Ip($sDato) : Restituisce l'ip se è un ip valido Link($sDato,$nLun=100) : Restituisce un link con http:// o mailto:// Numero($sDato,$sDefault=0,$bDb=true) : Restituisce valore numerico PartitaIva($sDato) : Restituisce array($nErrore,$sDato) Stringa($sDato,$nLun,$bDb=true) : Restituisce un valore stringa Url($sDato,$nLun=100) : Restituisce l'Url codificato * *********************************************** */ class ContrDati { /* * ** Public variables *** */ /* user definable vars */ var $sEmailCheckEmail = ""; ################################### # verifica che sia un valore booleano # ed imposta il default se vuoto function Booleano($sDato, $sDefault = true) { if ($sDato === true || $sDato === "true" || $sDato === "True" || $sDato === "on" || $sDato === "checked" || $sDato === "t" || $sDato === "v" || $sDato === "vero") { //echo $sDato; return true; } else { return false; } } ################################### # verifica che sia un codice fiscale # restituisce un array con codice errore ed il dato # Codici errore: # -2: codice di controllo non corretto # -1: formato codice fiscale non corretto # 0 : nessun errore # >0: numero di caratteri che mancano (min 16 - max 15) # >16:numero di caratteri totali se superiore a 16 (max 16) function CodiceFiscale($sDato) { $nLungMax = 16; $nCheck = 0; $sDato = strtoupper(trim('' . $sDato)); $nLungDato = strlen($sDato); if ($nLungDato < $nLungMax) { $nErrore = $nLungMax - $nLungDato; } else { if ($nLungDato > $nLungMax) { $nErrore = $nLungDato; } else { if (preg_match("/\b[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]\b/", $sDato)) { $sSet1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $sSet2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ"; $sSetPari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $sSetDisp = "BAKPLCQDREVOSFTGUHMINJWZYX"; $sCheck = 0; for ($y = 0; $y <= 14; $y += 2) { $nCheck += strpos($sSetDisp, substr($sSet2, strpos($sSet1, substr($sDato, $y, 1)), 1)); } for ($y = 1; $y <= 13; $y += 2) { $nCheck += strpos($sSetPari, substr($sSet2, strpos($sSet1, substr($sDato, $y, 1)), 1)); } if (($nCheck % 26) != (ord(substr($sDato, -1)) - ord("A"))) { $nErrore = -2; } else { $nErrore = 0; } } else { $nErrore = "-1"; } } } return array($nErrore, $sDato); } ################################### # verifica che sia una dominio function Dominio($sDato, $nLun = 100) { $sDato = trim('' . $sDato); if (intval($nLun) < strlen($sDato)) { $sDato = substr($sDato, 0, $nLun); } if (strlen($sDato) > 0) { if (preg_match("`^(([a-z0-9_-]+\.)*)(([a-z0-9-]{2,})\.)([a-z0-9]{2,6})$`iU", $sDato, $aUrl)) { return $sDato; } else { return ""; } } // if (strlen($sDato) > 0) { } ################################### # verifica che sia una mail function Email($sDato, $nLun = 100) { $sDato = trim('' . $sDato); if (intval($nLun) < strlen($sDato)) { $sDato = substr($sDato, 0, $nLun); } if (strlen($sDato) > 0) { $this->sEmailCheckEmail = $sDato; if ((preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $sDato)) || (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/', $sDato))) { $aHost = explode('@', $sDato); if ($aHost != '') { if (checkdnsrr($aHost[1] . '.', 'MX')) { return $sDato; } if (checkdnsrr($aHost[1] . '.', 'A')) { return $sDato; } if (checkdnsrr($aHost[1] . '.', 'CNAME')) { return $sDato; } } return "-2"; } else { return "-1"; } } // if (strlen($sDato) > 0) { } ################################### # verifica che sia una IP function Ip($sDato) { $sDato = trim('' . $sDato); if (strlen($sDato) > 6) { if (preg_match("/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/", $sDato)) { return $sDato; } else { return ""; } } } ################################### # verifica che sia un link http o mailto function Link($sDato, $nLun = 100) { $sDato = urlencode(trim('' . $sDato)); if (intval($nLun) < strlen($sDato)) { $sDato = substr($sDato, 0, $nLun); } echo $sDato; echo "da sistemare"; exit; if (strlen($sDato) > 0) { if (!(substr($sDato, 0, 7) == "http://" || substr($sDato, 0, 8) == "https://")) { if (!substr($sDato, 0, 7) == "mailto:") { if (preg_match("\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b", $sDato)) { return "mailto:" . $sDato; } else { return "http://" . $sDato; } } // if (!substrr($sStringa, 7)="mailto:") { } // if (!(substrr($sStringa, 7)="http://" || substr($sStringa, 0, 8)=="https://")) { } // if (strlen($sStringa) > 0) { } ################################### # verifica che sia un numero # mette . se da savare nel db al posto della virgola # e se non è numero mette il default function Numero($sDato, $sDefault = 0, $bDb = true) { $sDato = trim('' . $sDato); if ($bDb) { $sDato = str_replace(',', '.', $sDato); } else { $sDato = str_replace('.', ',', $sDato); } if (!is_numeric($sDato)) { $sDato = $sDefault; } return $sDato; } ################################### # verifica che sia una partita iva valida # restituisce un array con codice errore ed il dato # Codici errore: # -1: formato partita iva non corretto # 0 : nessun errore # >0: numero di cifre che mancano (min 11) # >11:numero di cifre totali se superiore a 11 (max 11) function PartitaIva($sDato) { $nLungMax = 11; $sDato = trim('' . $sDato); $nLungDato = strlen($sDato); if ($nLungDato < $nLungMax) { $nErrore = $nLungMax - $nLungDato; } else { if ($nLungDato > $nLungMax) { $nErrore = $nLungDato; } else { if (!is_numeric($sDato)) { $nErrore = "-1"; } else { $nErrore = "0"; } } } return array($nErrore, $sDato); } ################################### # verifica che sia una stringa della lunghezza massima data # ed aggiunge eventuali \ prima di salvarla nel db function Stringa($sDato, $nLun, $bDb = true) { $sDato = trim('' . $sDato); #if (get_magic_quotes_gpc()) { # $sDato = stripslashes($sDato); #} if ((int) $nLun < strlen($sDato)) { $sDato = substr($sDato, 0, $nLun); } if (strlen($sDato) > 0) { if (!is_numeric($sDato) && $bDb) { return (string) addslashes($sDato); } else { return (string) $sDato; } } } ################################### # verifica che sia una url function Url($sDato, $nLun = 100) { $sDato = trim('' . $sDato); if (intval($nLun) < strlen($sDato)) { $sDato = substr($sDato, 0, $nLun); } if (strlen($sDato) > 0) { #print_r(parse_url($sDato)); if (preg_match("`^((http|https|ftp):\/\/)?" . "(" . "([A-Z0-9][A-Z0-9_-]*)?" . "(\.[A-Z0-9][A-Z0-9_-]*)+" . ")" . "(\.[A-Z0-9]{2,6})" . "(\/)?" . "([A-Z0-9])?$`iU", $sDato, $aUrl)) { // print_r($aUrl); return $sDato; } else { return ""; } } // if (strlen($sStringa) > 0) { } function Telefono($sDato) { // RESTITUISCE: // -1 Dato accettabile; // 0 Dato non accettabile: non formato correto, numero italiano; // 1 Dato non accettabile: non formato correto, numero straniero; // 2 Dato non accettabile: non formato correto, numero non riconosciuto; // //"\d\d (0[1-9]{1,3}|333|334|335|336|337|338|339|330". // "|360|368|340|347|348|349|320|328|329|380|388|389|392) [0-9]{5,7}" $sCaratNonTel = array('-', '/', '(', ')', ' '); $sDato = trim(str_replace($sCaratNonTel, ' ', $sDato)); $sCaratteriValidi = "0123456789 +"; if (strlen($sDato) === strspn($sDato, $sCaratteriValidi)) { //echo $sValore; if ((strpos($sDato, '+') == 0 || strpos($sDato, '00') == 0) && strpos($sDato, ' ', 0) != -1) { if ((strpos($sDato, '39') == 1) || (strpos($sDato, '39') == 2)) { // Num italiano $sRegola = "/^"; $sRegola .= "(\+|00)39\s?"; $sRegola .= "(0[1-9]{1,3}|330|333|334|335|336|337|338|339|" . "360|363|366|368|340|343|346|347|348|349|" . "320|323|328|329|380|383|388|389|390|391|392|393)"; $sRegola .= "\s?[\s0-9]{5,10}"; $sRegola .= "/"; //echo $sRegola; if (preg_match($sRegola, $sDato)) { return -1; } else { // Non correttamente formattato manca + e gli spazi return 0; } } else { // Num straniero return -1; } } else { // Num italiano senza prefisso internazionale $sRegola = "/^"; $sRegola .= "(0[1-9]{1,3}|330|333|334|335|336|337|338|339|" . "360|363|366|368|340|343|346|347|348|349|" . "320|323|328|329|380|383|388|389|390|391|392|393)"; $sRegola .= "\s?[\s0-9]{5,10}"; $sRegola .= "/"; //echo $sRegola; if (preg_match($sRegola, $sDato)) { return -1; } else { // Non correttamente formattato manca + e gli spazi return 2; } } } else { return 1; // Caratteri non validi } } }
Commenti Facebook