Saturday 5 October 2019

php - redirect() is giving header() error even though nothing is being output to the browser

So basically, I'm getting an error message which reads:



Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\star\application\controllers\process_login.php:1)



I know what is the meaning of that error but I can't figure out where the output was started. I've no whitespaces in the process_login.php file nor anything echo-ed out as well.


I access the login form via the http://localhost/star/index.php/star URL


star Controller


class Star extends CI_Controller {
public function index()
{
$this->load->view('login');
}
}

On form submit, I'm posting to the process_login Controller.


process_login Controller (it doesn't even have a closing tag to avoid whitespace)


class Process_login extends CI_Controller {
public function index()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('userid', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password',
'required|callback_check_valid['.trim($this->input->post('userid')).']');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('login');
}
else
{
redirect('dashboard'); // this is the problem area
}
}
public function check_valid($pw, $un)
{
if($un)
{
$this->load->model('user');
if($this->user->is_authenticated($un, $pw))
{
return true;
}
else
{
$this->form_validation->set_message('check_valid',
'Invalid login. Please try again!');
return false;
}
}
}
}
/* End of file process_login.php */

dashboard Controller


class Dashboard extends CI_Controller {
public function index()
{
$this->load->view('admin_area', array('page_title'=>'Dashboard');
}
}

I'm assuming the process_login.php:1 means the output started from Line 1 of that file? If so, I don't have any output or whitespace in that file. Then why is it that I'm getting the error?


Debugging


After removing everything from the process_login.php file, I'm still getting the same error. This is what the stripped down version of the file looks like:


class Process_login extends CI_Controller {
public function index()
{
redirect('dashboard');
}
}

I'm starting to think the problem might be in some other file which are being loaded before this controller file. Hence, it's saying that the output started from Line 1.

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...