What is the difference between server-side and client-side validation? When should I use each approach?