Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/12/2008, 09:43
mira360
 
Fecha de Ingreso: diciembre-2008
Mensajes: 6
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Verificacion de nº de la Seguridad Social en España

Si no forzara el tipo para hacer la verificacion el codigo seria:

Código PHP:
//$numero = 280421646361;//Si empieza por 0 y SI FUNCIONA O VERIFICA COMO CORRECTO
$numero=461050199640;// no empieza por 0, NO ME LO DA COMO CORRECTO
echo $numero." de tipo ".gettype($d);
$asubstr($numero,0,2); //a los dos primeros numeros
echo "<br>A los dos primeros numeros= ".$a." de tipo ".gettype($a);;
$csubstr($numero,-2);//a los dos ultimos
echo "<br>C los dos ultimos= "$c." de tipo ".gettype($c);;
$bsubstr($numero,2,-2);// al resto
echo "<br>B al resto= ".$b." de tipo ".gettype($b);"<br>";

if (
$b<10000000)
    {
        
$d=$b+$a*10000000;
        echo 
"<br>D b<10.000.000 ahora vale = ".$d." de tipo ".gettype($d);
    } else {
        
//$bb=int($b);
        
$d=$a.$b;
        echo 
"<br>D b NO <10.000.000 ahora vale = ".$d." de tipo ".gettype($d); // ESTA LA HACE MAL
    
}
echo 
"<br> valor de d (a+b)= ".$d." de tipo ".gettype($d);
$resto=$d%97;// Mod resto de la división entera 
echo "<br> el resto es ==== ".$resto." de tipo ".gettype($resto);

// Ahora COMPARAMOS
echo "<br>A COMPARA CON VAlor de C (DC de los dos ultimos numeros) = ".$c." de tipo ".gettype($cc);
if (
$c==$resto)
    {
    echo 
"<br>CORRECTO";
    } else {
    echo 
"<br>NO CORRECTO deberia de ser ".$resto;
    }
?> 
Los dos numeros de seguridad social son de verdad, por lo que el resultado deberia de ser correcto.

En le caso de el numero: 280421646361 que es ($b<10000000) me da como correcto. Por lo tanto la verificacion es correcta.

Pero en el caso de del nº: 461050199640 que no es menor de 10000000 no me da como correcto, nos se si porque.