Puedes hacerlos con los dos, o sea con javascript y si por algún motivo no se verificó con javascript entonces con PHP. Solo tienes que volver a enviar los valores que recibiste por medio de url. Es decir puedes hacer algo así
form.php
Código HTML:
Ver original<form action="guardar.php"> <input type="text" name="nombre" value="<?php echo (!empty($_GET['nombre']) ? $_GET['nombre'] : ''); ?>" />
<input type="text" name="email" value="<?php echo (!empty($_GET['email']) ? $_GET['email'] : ''); ?>" />
<input type="text" name="usuario" value="<?php echo (!empty($_GET['usuario']) ? $_GET['usuario'] : ''); ?>" />
<!-- recomiendo no enviar esta por cuestiones de seguridad, que el usuario lo ingrese nuevamente -->
<input type="text" name="contrasena" /> <input type="submit" value="enviar" />
guardar.php