The absolute best approach, IMHO, would be to use both types. JS to avoid "luser" mistakes ("that doesn't look like an email address to me", etc.) and PHP for re-validation to make sure you're not being SQL injected, HTML tagged to disrupt output appearance or attempt system calls, etc. That said, I know much less of JS than PHP, so I tend to do it all server-side; however, some folks around here have pointed out that you save the users time and bandwidth by alerting them to the foibles before the form is actually submitted....
I wish I could remember a good thread, but I imagine you can press the "search" button as well as I can ...
HTH, 🙂