Si rdogg mira, te voy a decir la razón de porque se debe hacer la validación doble.
La validación del lado de cliente, se realiza únicamente para informarle al mismo de cualquier problema en los datos antes de enviarlos.
Por ejemplo, si metes caracteres inválidos en un username, es desperdicio de "tiempo", esperar a que el servidor responda con una notificación diciendote que la entrada esta mala.
Ahora, una vez enviados los datos se deben comprobar nuevamente en el servidor, pero en este caso es mas por seguridad, es decir, aquí te quitas de encima a cualquiera que se la quiera llevar de vivo modificando un script, y enviando cualquier dato.
Tenes que notar que a nivel de interfaz, resulta mas adecuado que los datos no se tengan que estar enviando siempre al servidor, sino solo cuando necesites hacerlo.
Es el mismo principio de AJAX, el cliente realiza las operaciones básicas, y te conectas al servidor solo para recibir o enviar parámetros.
Es obvio que necesitas una segunda comprobación del lado del servidor, pero como dije antes es simplemente por seguridad. Si los datos que envia el cliente son correctos, entonces no debería de darte ningun problema.
La idea es esta Rdogg, la validación en la página cliente tiene por objetivo crear una interfaz mas dinamica y fluida, y la validación del llado del servidor tiene por objetivo proveer de seguridad a la aplicación.
Ahora, kerberoz, mira esta función que valida archivos gif, jpg, y png:
<SCRIPT language="JavaScript">
<!--hide
function check()
{
if (formulario.test.value.match(/^.*(\.[gG][iI][fF]|\.[jJ][pP][gG]|\.[Pp][nN][gG])$/)) {
// Si el tipo de archivo termina en .gif
// Se cambia el valor del formulario
formulario.output.value = formulario.test.value;
} else {
// Si no, entonces tira una alerta
window.alert('Tipo de archivo no valido');
}
}
//-->
</SCRIPT>