<?php class godni { protected $dni; public $error=0; public $msg; function __construct($dni) { $this->dni = $dni; $this->valid_dni(); } function valid_dni() { if(isset($this->dni) && !empty($this->dni) && strlen($this->dni)==9) { $i=$suma=0; $multiplos = array(3,2,7,6,5,4,3,2); $array_number = array(6, 7, 8, 9, 0, 1, 1, 2, 3, 4, 5); $array_letters = array('K', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'); $numdni = str_split(substr($this->dni,0,-1)); // 8 digits $dcontrol = substr($this->dni,-1); //1 digito foreach($numdni as $digito) { $suma+=$digito*$multiplos[$i]; $i++; } $key = 11 - ($suma%11); $key = $key==11?0:$key; if(is_numeric($dcontrol)) { if($array_number[$key] != $dcontrol) { $this->error++; $this->msg='Su DNI no es válido. Por favor, ingrese uno correcto'; } } else { $dcontrol = strtoupper($dcontrol); if($array_letters[$key] != $dcontrol) { $this->error++; $this->msg='Su DNI no es válido. Por favor, ingrese uno correcto'; } } } else { $this->error++; $this->msg='DNI no válido. Recuerde que sólo números y de 9 dígitos'; } if($this->error==0) $this->msg = 'DNI válido'; return true; } } ?>