Con lo de javascript, es cierto, no es una buena alternativa en cuanto a seguridad se refiere. Lo que siempre recomiendo es un chequeo en el cliente, y luego desde el servidor (o sea con PHP!).
Con el script js. deberias preguntar en su correspondiente foro, por aquellos lados te ayudarán mejor...
Por lo de PHP, una solucion mas simple seria forzar (o convertir) el string que te llega del formulario a un double y alli lo comparas con cero y uno...
Código PHP:
$valor = "0.25478"; // como string
$valor = floatval($valor); // como float, double, con coma o como lo llamen
if ( $valor>0 && $valor<1 ) {
echo "OK";
} else {
echo "NO";
}
Con respecto al numero de decimales, lo que puedes hacer es contar el numero de caracteres que hay despues del punto (antes de convertir el valor a double).
[PHP]
$num = strlen(strrchr($valor, "."))-1;
[PHP]
y luego compararlo con lo que decees...
Pero lo mejor seria, si es que $valor paso el "if()", redondear el double con 2 decimales usando round($valor, 2) u otras funciones de este tipo como ceil() u floor().
Como vez hay varias formas de hacer lo mismo...
Saludos,