Pregunta sobre cómo deberían funcionar las redirecciones

Así que tengo una aplicación web en la que estoy trabajando con un formulario que requiere que se completen todos los campos antes de enviarlos. Si intenta enviar la aplicación sin que se complete un campo, vuelve a cargar la página con los errores. Una vez que complete todos los campos y haga clic en enviar, se redirige a la misma página y muestra un mensaje que se genera a partir de flashdata. Vea el ejemplo simplificado a continuación.

Controlador de bienvenida:

function show_view() 
{
  $this->load->view('form');
}

function process_form()
{
  // make the 'quality' field required
  $this->form_validation->set_rules('quality', 'Quality', 'required');

  if($this->form_validation->run() == FALSE) //if the fields are NOT filled in...
  {
    echo form_error('quality');
    $this->load->view('form'); //reload the page  
  }
  else  // if the fields are filled in...
  {
    // set success message in flashdata so it can be called when page is refreshed. 
    $this->session->set_flashdata('message', 'Your rating has been saved');
    redirect(welcome/show_view);
  }
}

Ahora para ilustrar mi problema, digamos que estoy en la vista de 'inicio' y navego a la vista de 'formulario'. Si relleno el campo 'calidad' y hago clic en enviar, se me redirige a la vista 'formulario', con un mensaje de éxito. Si hago clic en el botón Atrás en el navegador, me lleva de vuelta a la vista 'Inicio'. TODO FUNCIONA COMO ESPERADO

Ahora digamos que estoy en la vista 'inicio' y navego a la vista 'formulario'. Si hago clic en el botón Enviar sin completar el campo 'calidad', la vista 'formulario' se vuelve a cargar y muestra el mensaje de error. Si luego relleno el campo 'calidad' y hago clic en enviar, me redirigen a la vista 'formulario' con un mensaje de éxito. El problema es que si hago clic en el botón Atrás en el navegador, ahora me lleva de vuelta a la página del formulario con el error, y tengo que hacer clic en el botón Atrás nuevamente para volver a la vista 'Inicio'.

¿Cuál es la mejor práctica de codificación para que si un usuario envía el formulario con errores, mostrará los errores, y si corrige los errores y vuelve a enviar el formulario, mostrará el mensaje de éxito y si vuelve a hacer clic en el navegador, los llevará de vuelta a la vista de 'inicio'?

Respuestas a la pregunta(7)

Su respuesta a la pregunta