abimaelrc funciona casi del todo bien del modo que tu dices, mira si pongo una letra en cualquier lao que no sea el principio da como cif no valido y si la pongo delante y detras los 8 dijitos tambien lo da como valido, pero el problema es que si pongo los 9 digitos numericos tambien los da como valido, en que falla?
lo llevo asi:
Código PHP:
<?php
// Preguntaremos si se han enviado ya las variables necesarias
if (isset($_POST["razonsocial"])) {
$razonsocial = $_POST["razonsocial"];
$cif = $_POST["cif"];
$descripcion = $_POST["descripcion"];
$paginaweb = $_POST["paginaweb"];
$pais = $_POST["pais"];
$ciudad = $_POST["ciudad"];
$direccion = $_POST["direccion"];
$telefono = $_POST["telefono"];
$fax = $_POST["fax"];
$nombre = $_POST["nombre"];
$apellido1 = $_POST["apellido1"];
$apellido2 = $_POST["apellido2"];
$cargo = $_POST["cargo"];
// Hay campos en blanco
if($razonsocial==NULL|$cif==NULL|$descripcion==NULL|$pais==NULL|$ciudad==NULL|$direccion==NULL|$telefono==NULL|$nombre==NULL|$apellido1==NULL|$apellido2==NULL|$cargo==NULL){
echo "Hay campos en blanco";
}else{
echo "<br>No Hay campos en blanco";
if (strlen($cif)<9)
{
echo "<br>Mínimo 9 carácteres";
}else{
echo "<br>Minimo esta bien";
if (strlen($cif)>9)
{
echo "<br>Máximo 9 carácteres";
}else{
echo "<br>Máximo esta bien";
if(preg_match("|^\w\d{8}$|",$cif)){
//Se valido, aqui va entonces el codigo
echo "<br>Cif valido";
}else{
//No se valido escribe otro codigo
echo "<br>Cif No valido";
}
}
}
}
}
?>