<?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;
}
}
?>