Lo que dijo el compañero es cierto; pero la validaciones puedes ser vulneradas sin son enviadas vía URL
Por ejemplo:
<script>
// OMITIENDO que haya una función que sé
//se valido, que reconozca valores númericos
function importe()
{
n1 = eval(document.frm.txtcantidad.value)
n2 = eval(document.frm.txtprecio.value)
document.frm.txttotal= n1*n2
}
</script>
<form name=frm action= <? = $PHP_SELF?>>
cantidad: <input name=txtcantidad><br>
precio: <input name=txtprecio><br>
<input type=button value=calcular>
total: <input name=txttotal readonly>
enviar producto <input type=submit value=enviar>
</form>
claro muy pocas páginas serán diseñadas de esa forma, pero si uno aplica imaginación uno puede vulnerarlo vía URL
Precio : $ 50
Cantidad : 2
Total: $100
De forma correcta validada por JavaScript, estaría viajando en el URL así,
http://localhost/tupagina.php?txtcantidad=2&txtprecio=50&txttotal=100
... Pero si uno lee el código fuente y reconoce el nombre de cada objeto, bastaría con contatenar vía URL, y modificando a nuestra regalada gana
http://localhost/tupagina.php?txtcantidad=4&txtprecio=50&txttotal=50
Es un caso extremo, sí lo sé... pero no hay que confiarnos solamente vía JavaScript... hay que proteger mediante un filtro en el servidor. Simplemente verificando los caculos y los tipos de datos sean los ídoneos. Si son validos, procede; de lo contario redirecionarlo a la página que fueron remitidas con sus parametros url, y si quieres con respeustas observadas con variables de session y javascript, si deseas.... Bbueno esa es mi observación.