One of the common issues with MVC controller is to use the same controller method to show a form and then process it’s content, once we receive POST.
We detect whether there are any POST variables available with if ($this->input->post()). If available we process the form with POST data otherwise we show the form. You may have the form/file upload validation here.
public function register() { global $data; if ($this->input->post()) { //process form here } else { //display form here } }